我在linux內核的sched_setschedule()函數中做了一些修改。我成功地重新編譯並構建它。現在,當我嘗試在我的C程序中使用sched_setschedule()(使用gcc)時,我注意到gcc頭文件的挑選與我修改以編譯內核的頭文件完全不同。內核級函數原型和用戶級函數原型的區別
在這種情況下GCC從/usr/include/sched.h
其中FUNC原型定義如下
的extern INT sched_setparam拾取sched.h中文件( __pid_t __pid,__const struct sched_param * __ param) __THROW;
而內核版本有 我使用2.6.35.23內核
/usr/src/linux-headers-2.6.35-23
的extern INT sched_setscheduler(結構的task_struct *,INT, struct sched_param *);
這兩個標題如何相互關聯或映射到對方?換句話說,內核函數原型中的更改如何級聯回gcc庫(頭文件)
嗨Dan,謝謝你的回覆。請你詳細說明一下:「你可以編寫自己的sched_setparam系統調用版本,而不需要依賴於sched.h,參見man 2 syscall」我檢查了系統調用手冊。沒有找到一種方法,我怎麼能不使用修改glibc – David
而使用sched_setparam()我的意思是在系統調用的手冊頁上sched_setscheduler()的列表顯示類似於包裝函數「http:// linux」的原型。 die.net/man/2/sched_setscheduler「int sched_setscheduler(pid_t pid,int policy, const struct sched_param * param); – David
請參閱'使用系統調用'[here](http://www.ibm.com/developerworks/linux/library/l-system-calls/) –