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.Ö´ÐÐÖжϴ¦ÀíµÄÄں˷¾¶²»Äܱ»Ö´ÐÐÑÓ³Ùº¯Êý»òϵͳµ÷Ó÷þÎñÀý³ÌµÄÄں˿ØÖÆ·¾¶Öжϡ£
ÓÚÊÇÓÐÈçϽáÂÛ£º
a.Öжϴ¦Àí³ÌÐòºÍtasklet²»±ØÊÇ¿ÉÖØÈëµÄ£»
b.½ö±»ÈíÖжϺÍtasklet·ÃÎʵÄÿCPU±äÁ¿²»ÐèҪͬ²½£»
c.½ö±»Ò»ÖÖtasklet·ÃÎʵÄÊý¾Ý²»ÐèҪͬ²½¡£
ÈíÖжϣ¨¼´±ãÊÇͬһÖÖÀàÐ͵ÄÈíÖжϣ©¿ÉÒÔ²¢·¢µØÔËÐÐÔÚ¶à¸öCPUÉÏ¡£
ͬÀàÐ͵Ätasklet×ÜÊDZ»´®Ðл¯Ö´ÐУ¬²»»áÔÚÁ½¸öCPUÉÏͬʱÔËÐÐÏàͬÀàÐ͵Ätasklet¡£
Ò»¸ötasklet¿ÉÒÔ±»µ÷¶È¶à´Î£¬µ«Êµ¼ÊÖ»»áÔËÐÐÒ»´Î¡£
static inline void tasklet_schedule(struct tasklet_struct *t)
{
if (!test_and_set_bit
(TASKLET_STATE_SCHED, &t->state))
__tasklet_schedule(t);
}
ÁíÍâ²Î¼ûdo_softirq > _do_softirq > tasklet_action
Ò»¸öÖжϴ¦Àí³ÌÐò¼È¿ÉÒÔÇÀÕ¼ÆäËûµÄÖжϴ¦Àí³ÌÐò£¬Ò²¿ÉÒÔÇÀÕ¼Òì³£´¦Àí³ÌÐò£»
Òì³£´¦Àí³ÌÐò´Ó²»ÇÀÕ¼Öжϴ¦Àí³ÌÐò£»
Öжϴ¦Àí³ÌÐò´Ó²»Ö´Ðпɵ¼ÖÂȱҳµÄ²Ù×÷£¨Òâζ׎ø³ÌÇл»£©£»
Öжϴ¦Àí³ÌÐò±ØÐëÓÀ²»×èÈû£¬¼´²»·¢Éú½ø³ÌÇл»£¡
Èç¹ûÒ»¸öÊý¾Ý½á¹¹½ö±»ÖжϳÌÐò“Éϰ벿·Ö”·ÃÎÊ£¬·ÃÎÊÊý¾Ý½á¹¹¾ÍÎÞÐèÈκÎͬ²½£¬ÒòΪÿ¸öÖжϴ¦Àí³ÌÐò¶¼Ïà¶ÔÓÚ×Ô¼º´®ÐеÄÖ´ÐС£
Èç¹û¶à¸öÖжϴ¦Àí³ÌÐò·ÃÎÊÒ»¸öÊý¾Ý½á¹¹£¬ÔÚµ¥´¦ÀíÆ÷ÉÏ£¬±ØÐëÔÚÖжϴ¦Àí³ÌÐòµÄËùÓÐÁÙ½çÇøÉϽûÖ¹ÖжÏÀ´±ÜÃ⾺Õù£»ÔڶദÀíÆ÷ÉÏ£¬±ØÐë½ûÖ¹±¾µØÖжϣ¬²¢»ñÈ¡±£»¤Êý¾Ý½á¹¹µÄ×ÔÐýËø»ò¶ÁдËø¡£
ÈíÖжÏÊÇ¿ÉÖØÈ뺯Êý£¬±ØÐëÃ÷ȷʹÓÃ×ÔÐýËø±£»¤½á¹¹Êý¾Ý£¨ÒòΪ¿ÉÄÜÔÚ¶à¸öCPUÉÏͬʱִÐУ©£»
Èç¹ûij¸öÖжϳÌÐò“Éϰ벿·Ö”Ò²»á·ÃÎʸÃÊý¾Ý½á¹¹£¬Ôò±ØÐëÔÚÓµÓÐ×ÔÐýËøµÄʱºò½ûÖ¹Öжϣ¬ÒÔÃâËÀËø£¡
½öÓÉÒ»ÖÖtasklet·ÃÎʵÄÊý¾Ý½á¹¹²»ÐèÒª±£»¤£¬ÒòΪͬÖÖtasklet²»Äܲ¢·¢ÔËÐС£
¹ØÓÚtaskletµÄÒ»µã˵Ã÷£º
1.Ç°ÊöµÄÒ»ÖÖ»òÒ»¸ötasklet£¬¶¼ÊÇÖ¸Ò»¸ö£¬ÒÔtasklet½á¹¹ÌåµÄÄÚ´æµØÖ·Çø·Ö£¬²»Í¬µØÖ·µÄtasklet¼´Îª²»Í¬µÄtasklet£¬¼´Ê¹Á½¸ö
tasklet½á¹¹ÌåµÄfuncÖ¸ÕëÖ¸Ïòͬһ¸öÖжÏÉ豸µÄͬһ¸öÑÓ³Ù´¦Àíº¯Êý£¬ÉõÖÁÄÚÈÝÍêÈ«ÏàµÈ£¬¶¼Ëã×÷²»Í¬£¨ÖÖÀࣩµÄtasklet£¬¾ÍÐèÒª´¦Àíͬʱִ
ÐÐʱµÄͬ²½²Ù×÷ÎÊÌ⣻£¨°üÀ¨¡¶
Ïà¹ØÎĵµ£º
ѧ¹ý²Ù×÷ϵͳµÄÈËÖªµÀÓÐÒ»¸ö·Ç³£ÖøÃûµÄÎÊÌ⣺¶ÁÕߣдÕßÎÊÌâ¡£¶ÁÕߣдÕßÎÊÌâÊÇָϵͳµ±ÖеĵÄ×ÊÔ´ÔÚijһʱ¼äÀï¿ÉÒÔͬʱÔÊÐí¶à¸ö½ø³Ì¶Á£¬µ«Ö»ÔÊÐíÒ»¸ö½ø³Ìд¡£Õâ¸ö½ø³Ìͬ²½ÎÊÌâµÄ½â·¨ÓÐÐí¶àÖÖ£¬ÔÚwindowϵͳÀïÓû¥³â±äÁ¿À´½øÐнø³ÌµÄͬ²½¡£ÔÚLinuxÀïÓÐÁíÒ»ÖÖ·½·¨£¬ÄǾÍÊÇÎļþËø£¬ÎļþËøÀïµÄÎļþ²»µ¥µ¥Ö»Ö¸Æ½Ê±Ëù˵µÄÎļþËüÓ ......
ÎÒÕýÔÚѧϰдlinux device driver for embedded system.
ÎÒÓÐÒ»¸ölinuxǶÈëʽÉ豸£¬Ò²ÓÐÕâ¸öÉ豸µÄlinuxÔ´´úÂë¡£Ò²ÓÐcross compiler tool chain.
µÚÒ»²½£¬¾ÍÊÇдһ¸ö¼òµ¥µÄhelloÄ£¿é£¬È»ºó×°µ½É豸ÖС£ÒÔÑéÖ¤ÎÒÕâ¸ö¿ª·¢»·¾³¡£
ÔÚÍøÉÏËÑË÷ÁËһϣ¬ how to cross compile linux device driver
·¢ÏÖÔÚlinux´úÂë¸ùĿ¼µÄMak ......
´ò¿ª /etc/sysconfig/i18n
ÊäÈë
LANG="zh_CN.GB2312"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
ºÃÁË ......
1. gccµÄ__attribute__±àÒïÊôÐÔ
ÒªÁ˽âLinux Kernel´úÂëµÄ·Ö¶ÎÐÅÏ¢£¬ÐèÒªÁ˽âÒ»ÏÂgccµÄ__attribute__µÄ±àÒïÊôÐÔ£¬__attribute__Ö÷ÒªÓÃÓڸıäËùÉùÃ÷»ò¶¨ÒåµÄº¯Êý»òÊý¾ÝµÄÌØÐÔ£¬ËüÓкܶà×ÓÏÓÃÓڸıä×÷ÓöÔÏóµÄÌØÐÔ¡£±ÈÈç¶Ôº¯Êý£¬noline½«½ûÖ¹½øÐÐÄÚÁªÀ©Õ¹¡¢noreturn±íʾûÓзµ»ØÖµ¡¢pure±íÃ÷º¯Êý³ý·µ»ØÖµÍ⣬²»»áͨ¹ýÆäËü ......
¡¡¼¸¸ö¼òµ¥µÄÓ¦Óá£
¡¡¡¡1¡¢ÅúÁ¿Í¼Ïñ¸ñʽת»»
¡¡¡¡Èç¹ûÏ뽫ijĿ¼ÏµÄËùÓÐjpgÎļþת»»ÎªpngÎļþ£¬Ö»ÒªÔÚÃüÁîÐÐģʽÏÂÊäÈë:
¡¡¡¡for %f in (*.jpg) do convert “%f” “%~nf.png”
¡¡¡¡2¡¢¶ÔËùÓÐͼÏñ½øÐÐͬһ²Ù×÷
¡¡¡¡Æ©È磬ÅúÁ¿Éú³ÉijĿ¼ÏÂËùÓÐPNGͼÏñÎļþµÄËõÂÔͼ(´óСΪ80×40):
¡¡¡¡fo ......