📄 profile.c
字号:
/* * linux/arch/i386/kernel/profile.c * * (C) 2002 John Levon <levon@movementarian.org> * */#include <linux/config.h>#include <linux/sched.h>#include <linux/profile.h>#include <linux/spinlock.h>#include <linux/notifier.h>#include <asm/smp.h>#include <linux/irq.h> static struct notifier_block * profile_listeners;static rwlock_t profile_lock = RW_LOCK_UNLOCKED; int register_profile_notifier(struct notifier_block * nb){ int err; write_lock_irq(&profile_lock); err = notifier_chain_register(&profile_listeners, nb); write_unlock_irq(&profile_lock); return err;}int unregister_profile_notifier(struct notifier_block * nb){ int err; write_lock_irq(&profile_lock); err = notifier_chain_unregister(&profile_listeners, nb); write_unlock_irq(&profile_lock); return err;}void x86_profile_hook(struct pt_regs * regs){ /* we would not even need this lock if * we had a global cli() on register/unregister */ read_lock(&profile_lock); notifier_call_chain(&profile_listeners, 0, regs); read_unlock(&profile_lock);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -