LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç4 LinuxÄÚºËÄ£¿é
modprobeÃüÁî±ÈinsmodÃüÁîÇ¿´ó£¬ËüÔÚ¼ÓÔØijģ¿éʱ»áͬʱ¼ÓÔظÃÄ£¿éËùÒÀÀµµÄÆäËûÄ£¿é¡£Ê¹ÓÃmodprobeÃüÁî¼ÓÔصÄÄ£¿éÈôÒÔ“modprobe –r filename”µÄ·½Ê½Ð¶Ôؽ«Í¬Ê±Ð¶ÔØÆäÒÀÀµµÄÄ£¿é¡£
printk´òÓ¡µ½var/log/messages
2.6ÄÚºËÖÐÒѼÓÔصÄÐÅÏ¢Ò²´æÔÚÓÚ/sys/moduleĿ¼Ï£¬¼ÓÔØhello.koºó£¬ÄÚºËÖн«°üº¬/sys/module/helloĿ¼£¬¸ÃĿ¼ÓÖ°üº¬Ò»¸örefcntÎļþºÍÒ»¸ösectionsĿ¼
/proc/kallsymsÎļþ¶ÔÓ¦×ÅÄں˷ûºÅ±í£¬Ëü¼Ç¼ÁË·ûºÅÒÔ¼°·ûºÅËùÔÚµÄÄÚ´æµØÖ·
#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);
±àÒëºó½«Ä£¿é²åÈ룬¿ÉÒÔ´Ó/pro/kallsymsÎļþÖÐÕÒ³öadd_integar¡¢sub_integarÏà¹ØÐÅÏ¢
cat /pro/kallsyms |grep integar
try_module_get()Óëmodule_put()µÄÒýÈëÓëʹÓÃÓëLinux2.6ÄÚºËϵÄÉ豸ģÐÍÃÜÇÐÏà¹Ø¡£2.6ÄÚºËΪ²»Í¬ÀàÐ͵ÄÉ豸¶¨ÒåÁËstruct module *ownerÓò£¬ÓÃÀ´Ö¸Ïò¹ÜÀí´ËÉ豸µÄÄ£¿é¡£µ±¿ªÊ¼Ê¹ÓÃij¸öÉ豸ʱ£¬ÄÚºËʹÓÃtry_module_get(dev->owner)È¥Ôö¼Ó¹ÜÀí´ËÉ豸µÄownerÄ£¿éµÄʹÓüÆÊý£»µ±²»ÔÙʹÓôËÉ豸ʱ£¬ÄÚºËʹÓÃmodule_put(dev->owner)¼õÉÙ¶Ô¹ÜÀí´ËÉ豸µÄownerÄ£¿éʹÓüÆÊý¡£ÕâÑù£¬µ±É豸ÔÚʹÓÃʱ£¬¹ÜÀí´ËÉ豸µÄÄ£¿é½«²»Äܱ»Ð¶ÔØ¡£Ö»ÓÐÉ豸²»ÔÙ±»Ê¹ÓÃʱ£¬Ä£¿é²ÅÔÊÐí±»Ð¶ÔØ
¿ª·¢ÈËÔ±ËùдµÄÇý¶¯Í¨³£ÊÇÖ§³ÖijÖÖ¾ßÌåÉ豸µÄownerÄ£¿é£¬¶Ô´ËÉ豸ownerÄ£¿éµÄ¼ÆÊý¹ÜÀíÓÐÄں˸üµ×²ãµÄ´úÂ루Èç×ÜÏßÇý¶¯»òÊÇ´ËÀàÉ豸¹«ÓõĺËÐÄÄ£¿é£©À´ÊµÏÖ£¬´Ó¶ø¼ò»¯ÁËÉ豸Çý¶¯µÄ¿ª·¢
±àÒë²½Ö裺ÏȽøÈëLinuxÄÚºËËùÔÚµÄĿ¼£¬²¢±àÒë³ö.oÎļþ£¬ÔËÐÐMODPOST»ØÉú³ÉÁÙʱµÄ.mod.cÎļþ£¬¶øºó¸ù¾Ý´ËÎļþ±àÒë³ö.mod.o£¬Ö®ºóÁ¬½Ó.oºÍ.mod.oµÃµ½Ä£¿éÄ¿±êÎļþ.ko£¬×îºóÀ뿪LinuxÄÚºËËùÔÚĿ¼
Èç¹ûÄ£¿é°üº¬¶à¸ö.cÎļþ£¨Èçfile1.c¡¢file2.c£©£¬MakefileÈçÏ£º
obj-m := modulename.o
module-objs := file1.o file2.o
Ïà¹ØÎĵµ£º
ZDNetÈí¼þƵµÀ
2008-05-13
×÷Õß
£º | ÖйúITʵÑéÊÒ
±¾ÎĹؼü´Ê£º
²Ù×÷ϵͳ
¼¼
ÇÉ
°²×°
Linux
1¡¢Èí¼þ°²×°
жÔØ£¬·Ö¼¸ÖÖÇé¿ö£º
A£º
RPM°ü£¬ÕâÖÖÈí¼þ°ü¾ÍÏñwindowsµÄ
EXE°²×°
ÎļþÒ»Ñù£¬¸÷ÖÖÎļþÒѾ±àÒëºÃ£¬²¢´òÁË°ü£¬ÄĸöÎļþ¸Ã·Åµ½ÄĸöÎļþ¼Ð£¬¶¼Ö¸¶¨ºÃÁË£¬°²
×°
·Ç³£·½±ã£¬ÔÚͼР......
ÕªÒª:±¾Õ½«Ïò¶ÁÕßÒÀ´Î½âÊÍÖжϸÅÄ½âÎöLinuxÖеÄÖжÏʵÏÖ»úÀíÒÔ¼°LinuxÏÂÖжÏÈçºÎ±»Ê¹Óá£×÷ΪʵÀýÎÒÃǵÚÒ»½«Ïò¡¶i386Ìåϵ½á¹¹¡·Ò»ÕÂÖдòÔìµÄϵͳ¼ÓÈëÒ»¸öʱÖÓÖжϣ»µÚ¶þ½«Îª´ó¼Ò×¢½âRTCÖжϣ¬Ï£Íûͨ¹ýÕâÁ½¸öʵÀý¿ÉÒÔ°ïÖú¶ÁÕßÕÆÎÕÖжÏÏà¹ØµÄ¸ÅÄʵÏֺͱà³Ì·½·¨¡£
ÖжÏÊÇʲô
ÖжϵĺºÓï½âÊÍÊÇ°ëÖм䷢Éú×è¸ô¡¢Í£¶Ù»ò ......
Ò»¡¢ÏÂÔØVMwareÈí¼þ²¢°²×°
¶þ¡¢¹âÅÌ.iso·½Ê½°²×°linux
Èý¡¢¹²ÏílinuxºÍwindowsĿ¼
ËÄ¡¢½«"±¾µØÁ¬½Ó"ÉèΪ¹²Ïí·½Ê½£¬½ûÖ¹ÆäËûÐéÄâ»úÁ¬½Ó
´ò¿ªÐéÄâ»úÔÚÐéÄâ»ú±à¼ÖÐÉèÖÃΪ'ÇŽÓ"·½Ê½;
²¢Ñ¡ÖÐDevice statusϵÄÁ½ÏֻËùÒÔÓÃÇŽӷ½Ê½²»ÓÃhost-only·½Ê½ÉÏÍøÊÇÒòΪ
ÔÚÓ÷ÓÉÆ÷ʱhost-onl ......
ʱ¼ä¼ä¸ô¶¨Ê±Æ÷
interval timer(ʱ¼ä¼ä¸ô¶¨Ê±Æ÷)ϵͳµ÷ÓÃ×Ô´Ó±»POSIX±ê×¼»¯ºó£¬Ê״γöÏÖÓÚ4.2BSD£¬Äܹ»Ìṩ±Èalarm()»¹¶àµÄ¿ØÖÆ£º
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
interval ti ......
´ÓÕâ¸ö×ܽáÕýʽ¿ªÊ¼ÁËÎÒµÄÇý¶¯Ö®Âã¬ÐÄÇé²»ÃâÓе㼤¶¯£¬¾¡¹ÜÏÖÔÚ¶ÔÇý¶¯µÄ±àд»¹ºÜÄ£ºý£¬µ«»¹ÊÇÓмÍÄîÒâÒåµÄ……
¿ª·¢Æ½Ì¨£º
ÐéÄâ»úÏÂRedHat9£¬ÄÚºË2.4.20.8
½»²æ±àÒë±àÒëÆ÷£ºÌìǶ¹«Ë¾ÌṩµÄarm-linux-gcc 4.3.3
ÄÚºËÊ÷£º/h ......