Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Linux Kernel Threads in Device Drivers

 Purpose
This examples shows how to create and stop a kernel thread.
The driver is implemented as a loadable module. In the init_module() routine five kernel threads are created. This kernel threads sleep one second, wake up, print a message and fall asleep again. On unload of the module (cleanup_module), the kernel threads are killed.
The example has been tested with Linux kernel 2.4.2 on Intel (uni processor only) and Alpha platform (COMPAQ Personal Workstation 500au (uni processor), DS20 and ES40 (SMP).
A version for the 2.2 kernel can be found here. Note: depending on the context of the creator of the threads the new threads may inherit properties from the parent you do not want to have. The new version avoids this by having keventd create the threads. The 2.2. kernel do not have a keventd, so this approach is not implementable there.
Functions in example
    * start_kthread: creates a new kernel thread. Can be called from any process context but not from interrupt. The functions blocks until the thread started.
    * stop_kthread: stop the thread. Can be called from any process context but the thread to be terminated. Cannot be called from interrupt context. The function blocks until the thread terminated.
    * init_kthread: sets the environment of the new threads. Is to be called out of the created thread.
    * exit_kthread: needs to be called by the thread to be terminated on exit
Creation of new Thread
A new thread is created with kernel_thread(). The thread inherits properties from its parents. To make sure that we do not get any weired properties, we let keventd create the new thread.
The new thread is created with start_kthread(). It uses a semaphore to block until the new thread is running. A down() blocks the start_kthread() routine until the corresponding up() call in init_kthread() is executed.
The new thread must call init_kthread() in order to let the creator continue.


Ïà¹ØÎĵµ£º

[תÌû]LinuxÇý¶¯¿ª·¢Ñ§Ï°µÄһЩ±ØÒª²½Öè

 1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......

LinuxÖÐ/usrÓë/varĿ¼Ïê½â

 LinuxÖÐ/usrÓë/varĿ¼Ïê½â
/usrÎļþϵͳ
¡¡¡¡/usr Îļþϵͳ¾­³£ºÜ´ó£¬ÒòΪËùÓгÌÐò°²×°ÔÚÕâÀï. /usr ÀïµÄËùÓÐÎļþÒ»°ãÀ´×ÔLinux distribution£»±¾µØ°²×°µÄ³ÌÐòºÍÆäËû¶«Î÷ÔÚ/usr/local ÏÂ.ÕâÑù¿ÉÄÜÔÚÉý¼¶Ð°æϵͳ»òÐÂdistributionʱÎÞÐëÖØа²×°È«²¿³ÌÐò.
/usr/X11R6  
¡¡¡¡X WindowϵͳµÄËùÓÐÎļþ. ......

linuxÖÐapacheÅäÖÃ

Ò»¡¢       ±³¾°
1£®Ê²Ã´ÊÇApache £¿
Apache£¬ÊÇÒ»ÖÖ¿ª·ÅÔ´ÂëµÄHTTP·þÎñÆ÷£¬¿ÉÒÔÔÚ´ó¶àÊý²Ù×÷ϵͳÖÐÔËÐУ¬ÓÉÓÚÆä¶àƽ̨ºÍ°²È«ÐÔËùÒÔ±»¹ã·ºÊ¹Óã¬ÊÇÄ¿Ç°×îÁ÷ÐеÄWeb·þÎñÆ÷Èí¼þÖ®Ò»¡£Apache Æð³õÓÉ Illinois ´óѧ Urbana-Champaign µÄ¹ú¼Ò¸ß¼¶¼ÆËã³ÌÐòÖÐÐÄ¿ª·¢£¬¿ªÊ¼ApacheÖ»ÊÇ×÷ΪNetscapeÍ ......

LinuxÏÂÐÂÔöMakefileÖеÄÈ«¾Ö±äÁ¿µÄ»úÖÆ

1. ²½ÖèÒ»
·¨Ò»£ºÐÞ¸Äϵͳ±àÒëʱҪÓõ½µÄConfig.in£¬Ôö¼ÓÄãÒªÓõÄÈ«¾Ö±äÁ¿
·¨¶þ£ºÐ´Ò»¸ö×Ô¼ºµÄConfig.in,È»ºóÔÚÆäËû»á±àÒëµ½µÄConfig.inÖаüº¬
2.²½Öè¶þ
make menuconfig
Ö®ºóÔÚÉú³ÉµÄ.configÖУ¬¾Í¿ÉÒÔgrepµ½ÐÂÌí¼ÓµÄ±äÁ¿ÁË
3.²½ÖèÈý
ÔÚMakefileÖоͿÉÒÔÓÃÕâ¸ö±äÁ¿ÁË¡£ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ