LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç4 LinuxÄÚºËÄ£¿é
modprobeÃüÁî±ÈinsmodÃüÁîÇ¿´ó£¬ËüÔÚ¼ÓÔØÄ³Ä£¿éʱ»áͬʱ¼ÓÔØ¸ÃÄ£¿éËùÒÀÀµµÄÆäËûÄ£¿é¡£Ê¹ÓÃ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
Ïà¹ØÎĵµ£º
×ÜÀÀ
ÓÃiptables -ADC À´Ö¸¶¨Á´µÄ¹æ
Ôò
£¬-AÌí¼Ó -Dɾ³ý -C ÐÞ¸Ä
iptables - [RI] chain rule num rule-specification[option]
ÓÃiptables - RI ͨ¹ý¹æÔòµÄ˳ÐòÖ¸¶¨
iptables -D chain rule num[option]
ɾ³ýÖ¸¶¨¹æÔò
iptables -[LFZ] [chain][option]
ÓÃiptables -LFZ Á´Ãû [Ñ¡Ïî]
iptables -[NX] chain
ÓÃ -NX ......
Tab Tab Tab
±ÈÈ磺ÓÐÒ»¸öÎļþµÄÃû×Ö½Ð×÷alsa-divers-0.39.tar.gz£¬Õ⻹²»ËãºÜ³¤°É¡£ µ±ÄãÐèҪƵ·±µÄÊäÈëÕâ¸öÎļþµÄÃû×ÖµÄʱºò£¬ÄѵÀÄã²»¾õµÃÕâÊÇÒ»ÖÖÎÞÒÔÃû×´µÄÍ´¿àÂð£¿ÄÇôÎÒÏë¶ÔÄã˵һ¾ä£º²»ÒªÐÄ·³£¬Äã¿ÉÒÔÊÔÒ»ÊÔÔÚÊäÈëalsaºó°´Ò»Ï£ÃapsLock¼üÉÏ·½µÄ£Ôab¼ü¡£ÔõôÑùʹÄãÑÛǰһÁÁ°É£¬linuxÒÑ¾Ææ¼£°ãµÄ×Ô¶¯²¹È«ÁËÎļþÃû¡ ......
Author-------Dansen-----xzd2734@163.com
wait_queue_head_t wait_q;
Ê×ÏÈ¿´¿´
wait_queue_head_tÕâ¸öµÈ´ý¶ÓÁеĽṹ
ÔÚwait.hÖж¨ÒåÁËÕâ¸ö½á¹¹
typedef struct
__wait_queue_head wait_queue_head_t;
struct __wait_queue_head {
wq_lock_t
lock;
struct list_head task_list;
};
# define wq_ ......
ÕâÁ½Ìì´î½¨ÁËÒ»×éApache·þÎñÆ÷£¬Ã¿Ì¨·þÎñÆ÷4GÄڴ棬²ÉÓõÄÊÇpreforkģʽ£¬Ò»¿ªÊ¼ÉèÖõÄÁ¬½ÓÊýÌ«ÉÙÁË£¬ÐèÒª½Ï³¤µÄʱ¼äÈ¥ÏìÓ¦Óû§µÄÇëÇ󣬺óÀ´ÐÞ¸ÄÁËÒ»ÏÂApache 2.0.59µÄÅäÖÃÎļþhttpd.conf£º
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes ......
¶ÔLinuxÄÚºËÖнø³ÌÉÏÏÂÎĺÍÖжÏÉÏÏÂÎĵÄÀí½â
2010Äê3ÔÂ3ÈÕ 10:51 ά¿â¿ª·¢Íø ×÷ ÕߣºÑî˶,»ªÇåÔ¶¼ûǶÈëʽѧԺ½²Ê¦
Äں˿ռäºÍÓû§¿Õ¼äÊDzÙ×÷ϵͳÀíÂ۵Ļù´¡Ö®Ò»£¬¼´Äں˹¦ÄÜÄ£¿éÔËÐÐÔÚÄں˿ռ䣬¶øÓ¦ÓóÌÐòÔËÐÐÔÚÓû§¿Õ¼ä¡£ÏÖ´úµÄCPU¶¼¾ßÓв»Í¬ ......