...
fn = next _ timer-& gt;fn;
next _ timer-& gt;fn = NULL
next _ timer = next _ timer-& gt;接下來;
(fn)();
...
}
該函數中的函數指針添加在函數void add _ timer (long jiffies,void (* fn) (void))中。這個函數是內核使用的,用戶空間的函數不能調用add_timer,也就是說do_timer (long cpl)函數中的函數指針只會指向內核中的函數。
(我去看了linux0.11的源代碼,真的只用。
floppy . c(kernel \ blk _ drv):add _ timer(2,& amp轉讓);
floppy . c(kernel \ blk _ drv):add _ timer(ticks _ to _ floppy _ on(current _ drive),& amp軟盤_開_中斷);
Sched.c(內核):void add_timer(long jiffies,void (*fn)(void))
sched . h(include \ Linux):extern void add _ timer(long jiffies,void(* fn)(void));
)
所以妳的“內核不能直接訪問用戶空間函數”是不存在的。
我是看了帖子/線程-3727536-1-1.html才產生這個想法的。
我剛開始學這個。我可能錯了。請原諒我。