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

¿ªÆôlinux ÄÚºËÏß³Ì

º¯Êý˵Ã÷£º
kthread_create£º´´½¨Ï̡߳£
struct task_struct *kthread_create(int (*threadfn)(void *data),void *data,const char *namefmt, ...);
Ï̴߳´½¨ºó£¬²»»áÂíÉÏÔËÐУ¬¶øÊÇÐèÒª½«kthread_create() ·µ»ØµÄtask_structÖ¸Õë´«¸øwake_up_process()£¬È»ºóͨ¹ý´Ëº¯ÊýÔËÐÐÏ̡߳£
kthread_run £º´´½¨²¢Æô¶¯Ï̵߳ĺ¯Êý£º
struct task_struct *kthread_run(int (*threadfn)(void *data),void *data,const char *namefmt, ...);
kthread_stop£ºÍ¨¹ý·¢ËÍÐźŸøỊ̈߳¬Ê¹Ö®Í˳ö¡£
int kthread_stop(struct task_struct *thread);
Ïß³ÌÒ»µ©Æô¶¯ÆðÀ´ºó£¬»áÒ»Ö±ÔËÐУ¬³ý·Ç¸ÃÏß³ÌÖ÷¶¯µ÷ÓÃdo_exitº¯Êý£¬»òÕ߯äËûµÄ½ø³Ìµ÷ÓÃkthread_stopº¯Êý£¬½áÊøÏ̵߳ÄÔËÐС£
µ«Èç¹ûÏ̺߳¯ÊýÕýÔÚ´¦ÀíÒ»¸ö·Ç³£ÖØÒªµÄÈÎÎñ£¬Ëü²»»á±»Öжϵġ£µ±È»Èç¹ûÏ̺߳¯ÊýÓÀÔ¶²»·µ»Ø²¢ÇÒ²»¼ì²éÐźţ¬Ëü½«ÓÀÔ¶¶¼²»»áÍ£Ö¹¡£
 
´úÂ룺
 #include <linux/kthread.h>
#include <linux/module.h>
#ifndef SLEEP_MILLI_SEC
#define SLEEP_MILLI_SEC(nMilliSec)\
do { \
long timeout = (nMilliSec) * HZ / 1000; \
while(timeout > 0) \
{ \
timeout = schedule_timeout(timeout); \
} \
}while(0);
#endif
static struct task_struct * MyThread = NULL;
static int MyPrintk(void *data)
{
char *mydata = kmalloc(strlen(data)+1,GFP_KERNEL);
memset(mydata,'\0',strlen(data)+1);
strncpy(mydata,data,strlen(data));
while(!kthread_should_stop())
{
SLEEP_MILLI_SEC(1000);
printk("%s\n",mydata);
}
kfree(mydata);
return 0;
}
static int __init init_kthread(void)
{
MyThread = kthread_run(MyPrintk,"hello world","mythread");
return 0;
}
static void __exit exit_kthread(void)
{
if(MyThread)
{
printk("stop MyThread\n");
kthread_stop(MyThread);
}
}
module_init(init_kthread);
module_exit(exit_kthread);
MODULE_AUTHOR("YaoGang");
Õâ¸öÄÚºËÏ̵߳Ä×÷ÓþÍÊÇÿ¸ôÒ»Ãë´òÓ¡Ò»¸ö“hello world”¡£
ÖµµÃÒ»ÌáµÄÊÇkthread_should_stopº¯Êý£¬ÎÒÃÇÐèÒªÔÚ¿ªÆôµÄÏß³ÌÖÐǶÈë¸Ãº¯Êý£¬·ñÔòkthread_stopÊDz»Æð×÷Óõġ£


Ïà¹ØÎĵµ£º

linuxÄں˳õʼ»¯¼°Æô¶¯Ö®Óû§Ä£Ê½¿ªÊ¼

 
PCI: bus0: Fast back to back transfers disabled
PCI: Configured XX as a PCI slave with 128MB PCI memory
PCI: Each Region size is 16384KB
PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and mapped to 0x12000000
¡¡¡¡É豸µÄ³õʼ»¯ init()--->do_basic_init()--->pci_init()£¬³õÊ ......

LinuxÄÚºËÔ´Âë·ÖÎö

 LinuxÄÚºËÔ´Âë·ÖÎö-Á´±í´úÂë·ÖÎö
·ÖÎöÈË£ºÓàÐñ
·ÖÎöʱ¼ä£º2005Äê11ÔÂ17ÈÕÐÇÆÚËÄ 11:40:10 AM
Óê ζȣº10-11¶È
±àºÅ£º1-4 Àà±ð£º×¼±¸¹¤×÷
Email£ºyuxu9710108@163.com
ʱ´ú±³¾°£º¿ªÊ¼ÔÚwww.linuxforum.net LinuxÄں˼¼ÊõÂÛ̳ÉÏÃæ·¢Ìù£¬ÔÚÍøÓѵİïæÏ£¬
½â¾öÁËһЩÎÊÌâ¡£
°æÈ¨ÉùÃ÷£º°æÈ¨±£Áô¡£±¾ÎÄÓÃ×÷ÆäËûÓà ......

Linux shell I/OÖØ¶¨ÏòÏê½â

 I/OÖØ¶¨ÏòÏê½â¼°Ó¦ÓÃʵÀý
1¡¢ »ù±¾¸ÅÄÕâÊÇÀí½âºóÃæµÄ֪ʶµÄǰÌᣬÇëÎñ±ØÀí½â£©
a¡¢ I/OÖØ¶¨Ïòͨ³£Óë FDÓйأ¬shellµÄFDͨ³£Îª10¸ö£¬¼´ 0¡«9£»
b¡¢ ³£ÓÃFDÓÐ3¸ö£¬Îª0£¨stdin£¬±ê×¼ÊäÈ룩¡¢1£¨stdout£¬±ê×¼Êä³ö£©¡¢2£¨stderr£¬±ê×¼´íÎóÊä³ö£©£¬Ä¬ÈÏÓëkeyboard¡¢monitor¡¢monitorÓйأ»
c¡¢ Óà < À´¸Ä±ä¶Á½øµÄ ......

Linux Äں˱àÒëÅäÖÃÑ¡Ïî¼ò½é£¨×ª£©

 
Linux Äں˱àÒëÅäÖÃÑ¡Ïî¼ò½é
×÷Õߣº½ð²½¹ú
°æÈ¨ÉùÃ÷
±¾ÎÄ×÷ÕßÊÇһλ×ÔÓÉÈí¼þ°®ºÃÕߣ¬ËùÒÔ±¾ÎÄËäÈ»²»ÊÇÈí¼þ£¬µ«ÊDZ¾×Å GPL
µÄ¾«Éñ·¢²¼¡£ÈκÎÈ˶¼¿ÉÒÔ×ÔÓÉʹÓá¢×ªÔØ¡¢¸´ÖƺÍÔÙ·Ö·¢£¬µ«±ØÐë±£Áô×÷ÕßÊðÃû£¬Ò಻µÃ¶ÔÉùÃ÷ÖеÄÈκÎÌõ¿î×÷ÈκÎÐÎʽµÄÐ޸ģ¬Ò²²»µÃ¸½¼ÓÈÎºÎÆäËüÌõ¼þ¡£Äú¿É
ÒÔ×ÔÓÉÁ´½Ó¡¢ÏÂÔØ¡¢´«²¥´ËÎĵµ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ