生活随笔
收集整理的這篇文章主要介紹了
关于EXPORT_SYMBOL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux2.6的“/prob/kallsyms”文件對應著內核符號表,記錄了符號以及符號所在的內存地址。
模塊可以使用如下宏導出符號到內核符號表:
[c-sharp]?view plaincopy
EXPORT_SYMBOL(符號名);?? EXPORT_SYMBOL_GPL(符號名)??
導出的符號可以被其他模塊使用,不過使用之前一定要聲明一下。EXPORT_SYMBOL_GPL()只適用于包含GPL許可權的模塊。
?
代碼演示:
[c-sharp]?view plaincopy
?? #include?<linux/init.h>?? #include?<linux/module.h>?? MODULE_LICENSE("Dual?BSD/GPL");?? int?add_integar(int?a,int?b)?? {?? ????return?a?+?b;?? }?? int?sub_integar(int?a,int?b)?? {?? ????return?a?-?b;?? }?? EXPORT_SYMBOL(add_integar);?? EXPORT_SYMBOL(sub_integar);?? ?? #include?<linux/init.h>?? #include?<linux/module.h>?? MODULE_LICENSE("Dual?BSD/GPL");?? extern?int?add_integar(int?,int);??? extern?int?sub_integar(int?,int);??? int?result(void)?? {?? ????int?a,b;?? ????a?=?add_integar(1,1);?? ????b?=?sub_integar(1,1);?? ?????? ????printk("%d/n",a);?? ????printk("%d/n",b);?? ?????? ????return?0;?? }??
?
make后,先加在hello模塊,再加載test模塊。
然后cat /proc/kallsyms | grep integer
顯示:
[c-sharp]?view plaincopy
[root@localhost?test]#?cat?/proc/kallsyms?|grep?integar?? e053d000?u?add_integar??[test]?? e053d004?u?sub_integar??[test]?? e053d02c?r?__ksymtab_sub_integar????????[hello]?? e053d03c?r?__kstrtab_sub_integar????????[hello]?? e053d034?r?__ksymtab_add_integar????????[hello]?? e053d048?r?__kstrtab_add_integar????????[hello]?? e053d000?T?add_integar??[hello]?? e053d004?T?sub_integar??[hello]??
總結
以上是生活随笔為你收集整理的关于EXPORT_SYMBOL的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。