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

Linux É豸Çý¶¯ Edition 3) workqueue


7.5. Tasklets »úÖÆ
ÉÏÒ»Ò³
 
µÚ 7 Õ ʱ¼ä, ÑÓʱ, ºÍÑÓºó¹¤×÷
 ÏÂÒ»Ò³
http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html
Linux É豸Çý¶¯ Edition 3
7.5. Tasklets »úÖÆ
ÁíÒ»¸öÓйØÓÚ¶¨Ê±ÎÊÌâµÄÄÚºËÉèÊ©ÊÇ tasklet »úÖÆ. Ëü´ó²¿·ÖÓÃÔÚÖжϹÜÀí(ÎÒÃǽ«ÔÚµÚ 10 ÕÂÔٴμûµ½).
tasklet ÀàËÆÄں˶¨Ê±Æ÷ÔÚijЩ·½Ãæ. ËüÃÇÒ»Ö±ÔÚÖжÏʱ¼äÔËÐÐ, ËüÃÇÒ»Ö±ÔËÐÐÔÚµ÷¶ÈËüÃǵÄͬһ¸ö CPU ÉÏ, ²¢ÇÒËüÃǽÓÊÕÒ»¸ö
unsigned long ²ÎÊý. ²»ÏóÄں˶¨Ê±Æ÷, µ«ÊÇ, ÄãÎÞ·¨ÇëÇóÔÚÒ»¸öÖ¸¶¨µÄʱ¼äÖ´Ðк¯Êý. ͨ¹ýµ÷¶ÈÒ»¸ö tasklet,
Äã¼òµ¥µØÇëÇóËüÔÚÒÔºóµÄÒ»¸öÓÉÄÚºËÑ¡ÔñµÄʱ¼äÖ´ÐÐ. Õâ¸öÐÐΪ¶ÔÓÚÖжϴ¦ÀíÌØ±ðÓÐÓÃ, ÄÇÀïÓ²¼þÖжϱØÐë±»¾¡¿ì´¦Àí,
µ«ÊǴ󲿷ֵÄʱ¼ä¹ÜÀí¿ÉÒÔ°²È«µØÑÓºóµ½ÒÔºóµÄʱ¼ä. ʵ¼ÊÉÏ, Ò»¸ö tasket, ¾ÍÏóÒ»¸öÄں˶¨Ê±Æ÷,
ÔÚÒ»¸ö"ÈíÖжÏ"µÄÉÏÏÂÎÄÖÐÖ´ÐÐ(ÒÔÔ­×Óģʽ), ÔÚʹÄÜÓ²¼þÖжÏʱִÐÐÒì²½ÈÎÎñµÄÒ»¸öÄں˻úÖÆ.
Ò»¸ö tasklet ´æÔÚΪһ¸öʱ¼ä½á¹¹, Ëü±ØÐëÔÚʹÓÃǰ±»³õʼ»¯. ³õʼ»¯Äܹ»Í¨¹ýµ÷ÓÃÒ»¸öÌØ¶¨º¯Êý»òÕßͨ¹ýʹÓÃijЩºê¶¨ÒåÉùÃ÷½á¹¹:
#include <linux/interrupt.h>
struct tasklet_struct {
/* ... */
void (*func)(unsigned long);
unsigned long data;
};
void tasklet_init(struct tasklet_struct *t,
void (*func)(unsigned long), unsigned long data);
DECLARE_TASKLET(name, func, data);
DECLARE_TASKLET_DISABLED(name, func, data);
tasklet ÌṩÁËÐí¶àÓÐȤµÄÌØÉ«:
Ò»¸ö tasklet Äܹ»±»½ûÖ¹²¢ÇÒÖ®ºó±»ÖØÐÂʹÄÜ; Ëü²»»áÖ´ÐÐÖ±µ½Ëü±»Ê¹ÄÜÓë±»½ûÖ¹ÏàͬµÄµÄ´ÎÊý.
Èçͬ¶¨Ê±Æ÷, Ò»¸ö tasklet ¿ÉÒÔ×¢²áËü×Ô¼º.
Ò»¸ö tasklet Äܱ»µ÷¶ÈÀ´Ö´ÐÐÒÔÕý³£µÄÓÅÏȼ¶»òÕ߸ßÓÅÏȼ¶. ºóÒ»×éÒ»Ö±ÊÇÊ×ÏÈÖ´ÐÐ.
taslet ¿ÉÄÜÁ¢¿ÌÔËÐÐ, Èç¹ûϵͳ²»ÔÚÖØÔØÏÂ, µ«ÊÇ´Ó²»»áÍíÓÚÏÂÒ»¸öʱÖÓàÖßÕ.
Ò»¸ö tasklet ¿ÉÄÜºÍÆäËû tasklet ²¢·¢, µ«ÊǶÔËü×Ô¼ºÊÇÑϸñµØ´®ÐÐµÄ -- ͬÑùµÄ tasklet ´Ó²»Í¬Ê±ÔËÐÐÔÚ³¬¹ýÒ»¸ö´¦ÀíÆ÷ÉÏ. ͬÑù, ÈçÒѾ­Ìáµ½µÄ, Ò»¸ö tasklet ³£³£ÔÚµ÷¶ÈËüµÄͬһ¸ö CPU ÉÏÔËÐÐ.
jit Ä£¿é°üÀ¨ 2 ¸öÎļþ, /proc/jitasklet ºÍ /proc/jitasklethi,
Ëü·µ»ØºÍÔÚ"Äں˶¨Ê±Æ÷"Ò»½ÚÖнéÉܹýµÄ /proc/jitimer ͬÑùµÄÊý¾Ý. µ±Äã¶ÁÆäÖÐÒ»¸öÎļþʱ, ÄãÈ¡»ØÒ»¸ö header ºÍ
sixdata ÐÐ. µÚÒ»¸öÊý¾ÝÐÐÃèÊöÁ˵÷Óýø³ÌµÄÉÏÏÂÎÄ, ²¢ÇÒÆäËûµÄÐÐÃèÊöÁËÒ»¸ö tasklet ¹ý³ÌÁ¬ÐøÔ


Ïà¹ØÎĵµ£º

LinuxÖÐÕýÈ·´¦Àíerrno

errno±äÁ¿(Ðèinclude errno.h)»á±»¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,
¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔ­Òò¡£µ«ÊÇerrnoÊÇÒ»¸öÊý×Ö£¬´ú±íµÄ¾ßÌ庬Òå
»¹Òªµ½errno.hÖÐÈ¥ÔĶÁºê¶¨Òå¡£ÓÐÏÂÃæ¼¸ÖÖ·½·¨¿ÉÒÔ·½±ãµÄµÃµ½´íÎóÐÅÏ¢
(Ò»)
#include <stdio.h>
void perror(const char *s)
perror()ÓÃÀ´½«ÉÏÒ»¸öº¯Êý·¢Éú´íÎóµÄ ......

linux tasklet 2

http://hi.baidu.com/j_fo/blog/item/7412bb018deab109728da572.html
LinuxÄÚºË irq/soft irq/tasklet/ͬ²½
2009-10-08 21:22
1.Öжϴ¦Àí³ÌÐò½áÊøÖ®Ç°£¬²»ÔÊÐí²úÉúÏàͬµÄÖжÏʼþ£»£¨½ûÓÃPICÉϸÃÖжϣ¬µ«¿ÉÒÔ²úÉúÆäËûÖжϣ©
2.Öжϴ¦Àí³ÌÐò¡¢ÈíÖжϡ¢tasklet¼È²»¿É±»ÇÀÕ¼Ò²²»Äܱ»×èÈû£¬×î¶à·¢ÉúÖжÏǶÌ×£»
3.Ö´ÐÐÖÐ¶Ï ......

[¸ßÐÔÄܼ¼Êõ] Linux2.6ÄÚºËepoll½éÉÜ(0.1°æ±¾)

[¸ßÐÔÄܼ¼Êõ] Linux2.6ÄÚºËepoll½éÉÜ(0.1°æ±¾)
ת×Ô£º http://mechgouki.blogdriver.com/mechgouki/601157.html
[×÷Õß]£ºëøêÅ,2005/3/30,0.1°æ±¾
[°æÈ¨ÉùÃ÷]£º´ËÎĵµ×ñÑ­GNU×ÔÓÉÎĵµÐí¿ÉÖ¤(GNU Free Documentation License).ÈκÎÈË¿ÉÒÔ×ÔÓɸ´ÖÆ,·Ö·¢,ÐÞ¸Ä,²»¹ýÈç¹û·½±ã,Çë×¢Ã÷³ö´¦ºÍ×÷Õß:)
(1)µ¼ÑÔ£º
Ê×ÏÈ£¬ÎÒÇ¿ÁÒ½¨Òé ......

תÌù£ºLinux I/OÖØ¶¨ÏòµÄһЩС¼¼ÇÉ

¼¶±ð£º ³õ¼¶
·®Ææ (fanqi@cn.ibm.com), Xseries eServer ¹¤³Ìʦ, IBM TSS China Beijing
2004 Äê 11 ÔÂ 01 ÈÕ
Linux I/O ÖØ¶¨ÏòËäÈ»ºÜ¼òµ¥£¬µ«Ôڽű¾±àд¡¢ÏµÍ³¹ÜÀíʱȴҪ³£³£´ò½»µÀ£¬¸ãÇåÆäÖÐʹÓü¼Çɷdz£ÓÐÓá£
Ê×ÏÈ˵һÏÂʲôÊÇI/OÖØ¶¨Ïò£¬ËùνI/OÖØ¶¨Ïò¼òµ¥À´Ëµ¾ÍÊÇÒ»¸ö¹ý³Ì£¬Õâ¸ö¹ý³Ì²¶×½Ò»¸öÎļþ£¬»òÕßÃüÁ³ÌÐò ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ