LinuxÖеŤ×÷¶ÓÁÐ (2.6.0~2.6.19 and 2.6.20 ~ now)
http://blog.chinaunix.net/u2/69889/showart_971040.html
LinuxÖеŤ×÷¶ÓÁÐ
£Ûǰ¼Ç£ÝLinux×Ô´Ó2.6.20Ö®ºó£¬¹¤×÷¶ÓÁз¢ÉúÁËһЩ±ä»¯£¬Ä¿Ç°´ÓÍøÂçÉÏËÑË÷µÄ×ÊÁÏÒ»°ã¶¼ÊǽéÉÜÀϰ汾µÄ¹¤×÷¶ÓÁУ¬ºÜÉÙ¼ûµ½¶Ôа汾µÄ½éÉÜ¡£±¾ÎĶÔÐÂÀϰ汾¶¼×öÁ˼òÒª¸ÅÊö£¬²¢·Ö±ðÌṩÁ˼òµ¥µÄʵ×÷°¸Àý¡£
*******************************************************************************************************************
¹¤×÷¶ÓÁÐ
(work
queue)
ÊÇ
Linux
kernel
Öн«¹¤×÷ÍÆºóÖ´ÐеÄÒ»ÖÖ»úÖÆ¡£ÕâÖÖ»úÖÆºÍ
BH
»ò
Tasklets
²»Í¬Ö®´¦ÔÚÓÚ¹¤×÷¶ÓÁÐÊǰÑÍÆºóµÄ¹¤×÷½»ÓÉÒ»¸öÄÚºËÏß³ÌÈ¥Ö´ÐУ¬Òò´Ë¹¤×÷¶ÓÁеÄÓÅÊÆ¾ÍÔÚÓÚËüÔÊÐíÖØÐµ÷¶ÈÉõÖÁ˯Ãß¡£
¹¤×÷¶ÓÁÐÊÇ
2.6
Äں˿ªÊ¼ÒýÈëµÄ»úÖÆ£¬ÔÚ
2.6.20
Ö®ºó£¬¹¤×÷¶ÓÁеÄÊý¾Ý½á¹¹·¢ÉúÁËһЩ±ä»¯£¬Òò´Ë±¾ÎÄ·Ö³ÉÁ½¸ö²¿·Ö¶Ô
2.6.20
֮ǰºÍÖ®ºóµÄ°æ±¾·Ö±ð×ö½éÉÜ¡£
1
¡¢
2.6.0~2.6.19
Êý¾Ý½á¹¹£º
struct
work_struct {
unsigned
long pending;
struct
list_head entry;
void
(*func)(void *);
void
*data;
void
*wq_data;
struct
timer_list timer;
};
pending
ÊÇÓÃÀ´¼Ç¼¹¤×÷ÊÇ·ñÒѾ¹ÒÔÚ¶ÓÁÐÉÏ£»
entry
ÊÇÑ»·Á´±í½á¹¹£»
func
×÷Ϊº¯ÊýÖ¸Õ룬ÓÉÓû§ÊµÏÖ£»
data
ÓÃÀ´´æ´¢Óû§µÄ˽ÈËÊý¾Ý£¬´ËÊý¾Ý¼´ÊÇ
func
µÄ²ÎÊý£»
wq_data
Ò»°ãÓÃÀ´Ö¸Ïò¹¤×÷ÕßỊ̈߳¨¹¤×÷ÕßÏ̲߳ο¼ÏÂÎÄ£©£»
timer
ÊÇÍÆºóÖ´ÐеĶ¨Ê±Æ÷¡£
work_struct
µÄÕâЩ±äÁ¿À
func
ºÍ
data
ÊÇÓû§Ê¹Óõ쬯äËûÊÇÄÚ²¿±äÁ¿£¬ÎÒÃÇ¿ÉÒÔ²»ÓÃÌ«¹ý¹ØÐÄ¡£
API
£º
1)
INIT_WORK(_work, _func, _data)
³õʼ»¯Ö¸¶¨¹¤×÷£¬Ä¿µÄÊǰÑÓû§Ö¸¶¨µÄº¯Êý
_func
¼°
_func
ÐèÒªµÄ²ÎÊý
_data
¸³¸ø
work_struct
µÄ
func
¼°
data
±äÁ¿¡£
2)
int schedule_work(struct work_struct *work)
¶Ô¹¤×÷½øÐе÷¶È£¬¼´°Ñ¸ø¶¨¹¤×÷µÄ´¦Àíº¯ÊýÌá½»¸øÈ±Ê¡µÄ¹¤×÷¶ÓÁк͹¤×÷ÕßÏ̡߳£¹¤×÷ÕßÏ̱߳¾ÖÊÉÏÊÇÒ»¸öÆÕͨµÄÄÚºËỊ̈߳¬ÔÚĬÈÏÇé¿öÏ£¬Ã¿¸ö
CPU
¾ùÓÐÒ»¸öÀàÐÍΪ“
events”
µÄ¹¤×÷ÕßỊ̈߳¬µ±µ÷ÓÃ
schedule_work
ʱ£¬Õâ¸ö¹¤×÷ÕßÏ̻߳ᱻ»½ÐÑÈ¥Ö´Ðй¤×÷Á´±íÉϵÄËùÓй¤×÷¡£
3)
int schedule_delayed_work(struct work_struct *work, unsigned long
delay)
ÑÓ³ÙÖ´Ðй¤×÷£¬Óë
schedu
Ïà¹ØÎĵµ£º
½üÀ´ÐèҪдһ¸öÔÚLINUXϵÄͼÐÎÎļþ´¦Àí³ÌÐò£¬×ʼֻ֧³ÖBMP¸ñʽ£¬ºóÀ´ÒªÇóÒ²´¦ÀíJPG¡£¼±µÃץͷ°¡£¬ÒÔǰ¿ÉûÈÏÕæÑо¿¹ýJPG…………
ÔÚÍøÉÏÕÒµ½ÁËlibjpeg£¬¿ÉÒÔÓÃÕâ¸ö¿âʵÏÖJPGͼƬµÄ¸÷ÖÖ²Ù×÷£º
ÏÂÔØ£ºhttp://freeware.sgi.com/sou ......
http://blog.chinaunix.net/u/24474/showart_227121.html
Çý¶¯³ÌÐòʹÓÃtasklet»úÖÆ
ת×Ô£ºhttp://blog.chinaunix.net/u/15169/showart.php?id=82989
Çý
¶¯³ÌÐòÔÚ³õʼ»¯Ê±£¬Í¨¹ýº¯Êýtask_init½¨Á¢Ò»¸ötasklet£¬È»ºóµ÷Óú¯Êýtasklet_schedule½«Õâ¸ötasklet·ÅÔÚ
tasklet_vecÁ´±íµÄÍ·²¿£¬²¢»½ÐѺǫ́Ïß³Ìksoftirqd¡£µ±ºóÌ¨Ï ......
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.Ö´ÐÐÖÐ¶Ï ......
http://dbus.freedesktop.org/doc/dbus-tutorial.html
D-Bus Tutorial
Havoc
Pennington
Red Hat, Inc.
<hp@pobox.com
>
David
Wheeler
John
Palmieri
Red Hat, Inc.
<johnp@redhat.com
>
Colin
Walters
Red Hat, Inc.
<walters@redhat.com
>
Version 0.5.0
Table of Contents
......
http://hi.baidu.com/styl_007/blog/item/82b833f475036ce67609d7b6.html
Öжϴ¦ÀíµÄtasklet£¨Ð¡ÈÎÎñ£©»úÖÆ£²»¹ýÈç´Ë
2009-08-10 18:30
ÖжϷþÎñ³ÌÐòÒ»°ã¶¼ÊÇÔÚÖжÏÇëÇ󹨱յÄÌõ¼þÏÂÖ´ÐеÄ
,
ÒÔ±ÜÃâǶÌ×¶øÊ¹ÖжϿØÖƸ´ÔÓ»¯¡£µ«ÊÇ£¬ÖжÏÊÇÒ»¸öËæ»úʼþ£¬ËüËæÊ±»áµ½À´£¬Èç¹û¹ØÖжϵÄʱ¼äÌ«³¤£¬
CPU
¾Í²»Äܼ°Ê±ÏìÓ¦Æä ......