14 + struct ftrace_ops *ops, struct ftrace_regs *fregs) 15 15 { 16 16 int bit; 17 17 bool lr_saver = false; 18 18 struct kprobe *p; 19 19 struct kprobe_ctlblk *kcb; 20 + struct pt_regs *regs; 20 21 21 22 bit = ftrace_test_recursion_trylock(ip, parent_ip);...
现有方案主要分为几类: per-CPU 缓冲区(如 perf、ftrace 等),无法满足排序和内存消耗的需求; 基于链表的实现,尽管有些是多生产者设计,但从用户空间消费时可能非常复杂且性能较差; io_uring 是 SPSC,但也要求固定大小的元素。简单地将 SPSC 队列转换为 MPSC 会导致性能不足; 专用实现(例如新的 printk Ring ...
* APIs (schedule(), wakeup variants, etc.)*/#include#include<asm/current.h>#include<linux/pid.h>#include<linux/sem.h>#include<linux/shm.h>#include<linux/kcov.h>#include<linux/mutex.h>#include<linux/plist.h>#include<linux/hrtimer.h>#include<linux/seccomp.h>#include<linux/nodemask.h>#...
+ return (addr == (unsigned long)ftrace_caller ? mod->arch.tramp : mod->arch.tramp_regs); +} +#else +static unsigned long ftrace_lookup_module_stub(unsigned long ip, unsigned long addr) +{ + return 0; +} +#endif + static int ftrace_get_call_inst(struct dyn_ftrace *rec, unsigne...
ftrace.h ftrace_irq.h futex.h fwnode.h gameport.h gcd.h genalloc.h generic-radix-tree.h genetlink.h genhd.h genl_magic_func.h genl_magic_struct.h getcpu.h gfp.h glob.h gnss.h goldfish.h gpio-pxa.h gpio.h gpio_keys.h greybus.h hardirq.h hash.h hashtabl...
per-CPU 缓冲区(如 perf、ftrace 等),无法满足排序和内存消耗的需求; 基于链表的实现,尽管有些是多生产者设计,但从用户空间消费时可能非常复杂且性能较差; io_uring 是 SPSC,但也要求固定大小的元素。简单地将 SPSC 队列转换为 MPSC 会导致性能不足; ...
ftrace_irq.h futex.h fw_table.h fwnode.h fwnode_mdio.h gameport.h gcd.h genalloc.h generic-radix-tree.h genl_magic_func.h genl_magic_struct.h getcpu.h gfp.h gfp_api.h gfp_types.h glob.h gnss.h goldfish.h gpio-pxa.h gpio.h gpio_keys.h greybus.h group...