Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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Îļþϵͳ¼ò½é

  LinuxÖ§³Ö¶àÖÖÎļþϵͳ£¬°üÀ¨ext2¡¢ext3¡¢vfat¡¢ntfs¡¢iso9660¡¢jffs¡¢romfsºÍnfsµÈ£¬ÎªÁ˶Ը÷ÀàÎļþϵͳ½øÐÐͳһ¹ÜÀí£¬LinuxÒýÈëÁËÐéÄâÎļþϵͳVFS(Virtual File System)£¬Îª¸÷ÀàÎļþϵͳÌṩһ¸öͳһµÄ²Ù×÷½çÃæºÍÓ¦Óñà³Ì½Ó¿Ú¡£
    LinuxϵÄÎļþϵͳ½á¹¹ÈçÏ£º
    LinuxÆô¶¯Ê ......

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 Shell ¡¶abs_guide¡· ѧϰ±Ê¼Ç(2)

 3. ÌØÊâ·ûºÅ
#    ×¢ÊÍ£¬ÐÐÊ×ÒÔ'#'¿ªÍ·Îª×¢ÊÍ(#!ÀýÍâ)
      ×¢Ò⣺ÔÚechoÃüÁîÖб»×ªÒåµÄ#ÊDz»ÄÜ×÷ΪעÊ͵ģ»Í¬ÑùµÄ£¬#Ò²¿ÉÒÔ³öÏÖÔÚÌØ¶¨µÄ²ÎÊýÌæ»»½á¹¹ÖлòÕßÊÇÊý×Ö³£Á¿±í´ïʽÖС£
      Àý:
      1. echo "Th ......

Linuxϵͳ¹ÜÀíʵ¼ù(6)£ºÏµÍ³µÇ¼ÅäÖÃ

     1¡¢/etc/modules.confÎļþ£º
ÔÚDebian/UbuntuÅÉϵÖÐÃûΪ/etc/modules£¬ÔÚÓÐЩLinuxϵͳÖÐÒ²ÓÃÃû/etc/conf.modules¡£¸ÃÅäÖÃÎļþ¶¨ÒåÁ˸÷ÖÖÐèÒªÔÚÆô¶¯Ê±¼ÓÔØµÄÄ£¿éµÄ²ÎÊýÐÅÏ¢¡£ÕâÀïÖ÷Òª×ÅÖØÌÖÂÛ¹ØÓÚÍø¿¨µÄÅäÖá£ÔÚʹÓÃLinux×öÍø¹ØµÄÇé¿öÏ£¬Linux·þÎñÆ÷ÖÁÉÙÐèÒªÅäÖÃÁ½¿éÍø¿¨¡£ÎªÁ˼õÉÙÆô¶¯Ê±¿ÉÄܳö ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ