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

LinuxϵͳÄں˶¨Ê±Æ÷»úÖÆÏê½â

 LinuxÄÚºË2.4°æÖÐÈ¥µôÁËÀϰ汾ÄÚºËÖеľ²Ì¬¶¨Ê±Æ÷»úÖÆ£¬¶øÖ»Áô϶¯Ì¬¶¨Ê±Æ÷¡£ÏàÓ¦µØÔÚtimer_bh()º¯ÊýÖÐÒ²²»ÔÙͨ¹ýrun_old_timers()º¯ÊýÀ´ÔËÐÐÀÏʽµÄ¾²Ì¬¶¨Ê±Æ÷¡£¶¯Ì¬¶¨Ê±Æ÷Ó뾲̬¶¨Ê±Æ÷Õâ¶þ¸ö¸ÅÄîÊÇÏà¶ÔÓÚLinuxÄں˶¨Ê±Æ÷»úÖÆµÄ¿ÉÀ©Õ¹¹¦ÄܶøÑԵ쬶¯Ì¬¶¨Ê±Æ÷ÊÇÖ¸Äں˵Ķ¨Ê±Æ÷¶ÓÁÐÊÇ¿ÉÒÔ¶¯Ì¬±ä»¯µÄ£¬È»¶ø¾Í¶¨Ê±Æ÷±¾Éí¶øÑÔ£¬¶þÕß²¢ÎÞ±¾ÖʵÄÇø±ð¡£¿¼Âǵ½¾²Ì¬¶¨Ê±Æ÷»úÖÆµÄÄÜÁ¦ÓÐÏÞ£¬Òò´ËLinuxÄÚºË2.4°æÖÐÍêȫȥµôÁËÒÔǰµÄ¾²Ì¬¶¨Ê±Æ÷»úÖÆ¡£
¡¡¡¡7£®6£®1 LinuxÄں˶Զ¨Ê±Æ÷µÄÃèÊö
¡¡¡¡LinuxÔÚinclude/linux/timer.hÍ·ÎļþÖж¨ÒåÁËÊý¾Ý½á¹¹timer_listÀ´ÃèÊöÒ»¸öÄں˶¨Ê±Æ÷£º
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
};
¡¡¡¡¸÷Êý¾Ý³ÉÔ±µÄº¬ÒåÈçÏ£º
¡¡¡¡£¨1£©Ë«ÏòÁ´±íÔªËØlist£ºÓÃÀ´½«¶à¸ö¶¨Ê±Æ÷Á¬½Ó³ÉÒ»ÌõË«ÏòÑ­»·¶ÓÁС£
¡¡¡¡£¨2£©expires£ºÖ¸¶¨¶¨Ê±Æ÷µ½ÆÚµÄʱ¼ä£¬Õâ¸öʱ¼ä±»±íʾ³É×ÔϵͳÆô¶¯ÒÔÀ´µÄʱÖӵδð¼ÆÊý£¨Ò²¼´Ê±ÖÓ½ÚÅÄÊý£©¡£µ±Ò»¸ö¶¨Ê±Æ÷µÄexpiresֵСÓÚ»òµÈÓÚjiffies±äÁ¿Ê±£¬ÎÒÃǾÍ˵Õâ¸ö¶¨Ê±Æ÷ÒѾ­³¬Ê±»òµ½ÆÚÁË¡£ÔÚ³õʼ»¯Ò»¸ö¶¨Ê±Æ÷ºó£¬Í¨³£°ÑËüµÄexpiresÓòÉèÖóɵ±Ç°expires±äÁ¿µÄµ±Ç°Öµ¼ÓÉÏij¸öʱ¼ä¼ä¸ôÖµ£¨ÒÔʱÖӵδð´ÎÊý¼Æ£©¡£
¡¡¡¡£¨3£©º¯ÊýÖ¸Õëfunction£ºÖ¸ÏòÒ»¸ö¿ÉÖ´Ðк¯Êý¡£µ±¶¨Ê±Æ÷µ½ÆÚʱ£¬Äں˾ÍÖ´ÐÐfunctionËùÖ¸¶¨µÄº¯Êý¡£¶ødataÓòÔò±»ÄÚºËÓÃ×÷functionº¯ÊýµÄµ÷ÓòÎÊý¡£
¡¡¡¡Äں˺¯Êýinit_timer()ÓÃÀ´³õʼ»¯Ò»¸ö¶¨Ê±Æ÷¡£Êµ¼ÊÉÏ£¬Õâ¸ö³õʼ»¯º¯Êý½ö½ö½«½á¹¹ÖеÄlist³ÉÔ±³õʼ»¯Îª¿Õ¡£ÈçÏÂËùʾ£¨include/linux/timer.h£©£º
static inline void init_timer(struct timer_list * timer)
{
timer->list.next = timer->list.prev = NULL;
}
¡¡¡¡ÓÉÓÚ¶¨Ê±Æ÷ͨ³£±»Á¬½ÓÔÚÒ»¸öË«ÏòÑ­»·¶ÓÁÐÖеȴýÖ´ÐУ¨´ËʱÎÒÃÇ˵¶¨Ê±Æ÷´¦ÓÚpending״̬£©¡£Òò´Ëº¯Êýtime_pending()¾Í¿ÉÒÔÓÃlist³ÉÔ±ÊÇ·ñΪ¿ÕÀ´ÅжÏÒ»¸ö¶¨Ê±Æ÷ÊÇ·ñ´¦ÓÚpending״̬¡£ÈçÏÂËùʾ
 
£¨include/linux/timer.h£©£º
static inline int timer_pending (const struct timer_list * timer)
{
return timer->list.next != NULL;
}
¡¡¡¡Ê±¼ä±È½Ï²Ù×÷
¡¡¡¡ÔÚ¶¨Ê±Æ÷Ó¦ÓÃÖо­³£ÐèÒª±È½ÏÁ½¸öʱ¼äÖµ£¬ÒÔÈ·¶¨timerÊÇ·ñ³¬Ê±£¬ËùÒÔLinuxÄÚºËÔÚtimer.hÍ·ÎļþÖж¨ÒåÁË4¸öʱ¼ä¹ØÏµ±È½Ï²Ù×÷ºê¡£ÕâÀïÎÒÃÇ˵ʱ¿ÌaÔÚʱ¿ÌbÖ®ºó£¬¾ÍÒâζ×Åʱ¼äÖµa¡Ýb¡£


Ïà¹ØÎĵµ£º

linuxÏÂdnw(6410)

ÍøÉÏÓÐÆªÌû×Ó°üº¬ÀïlinuxϵÄdnw£¬ÎÒÔÚÓÃidea6410£¬±àÒëdnwºÍsecbulkºó²¢²»ÄÜÕý³£Ê¹ÓÃ
LINUXϵÄDNW³ÌÐòÏÂÔØ
http://linux.chinaunix.net/bbs/viewthread.php?tid=1055992
secbulkÉ豸佨Á¢£¬ÊÖ¶¯½¨Á¢/dev/secbulk0²¢²»Æð×÷Óã¬Ô­ÒòÊÇsecbulk probe»áÆ¥Åäid_table£¬Õâ¸öÊÇΪQQ2440×¼±¸µÄ£¬ËùÒÔÐèÒª¸Äid_table
static s ......

LinuxÖÐtty pty pts ¸ÅÄîÇø±ð

±¾ÎÄÕª×Ô http://hi.baidu.com/yuhongchun027/blog/item/2ac559517ec1f5898c543002.html
LinuxÖÐtty pty pts ¸ÅÄîÇø±ð
»ù±¾¸ÅÄ
1> tty(ÖÕ¶ËÉ豸µÄͳ³Æ):
ttyÒ»´ÊÔ´ÓÚTeletypes£¬»òÕßteletypewriters£¬Ô­À´Ö¸µÄÊǵ紫´ò×Ö»ú£¬ÊÇͨ¹ý´®ÐÐÏßÓôòÓ¡»ú¼üÅÌͨ¹ýÔĶÁºÍ·¢ËÍÐÅÏ¢µÄ¶«Î÷£¬ºóÀ´Õâ¶«Î÷±»¼üÅÌÓëÏÔʾÆ÷È¡´ú£¬Ëù ......

LinuxϰÑkernel¿Õ¼äÓ³Éäµ½Óû§½ø³Ì¿Õ¼ä(mmapʵÏÖ)

 ÔÚmmapº¯ÊýÀʹÓÃremap_pfn_range
º¯Êý¡£´úÂëÈçÏ¡£×¢ÒâÒªÉèÖÃÒ»ÏÂvma->vm_pgoffΪÄãÒªmapµÄio¿Õ¼äµÄÎïÀíµØÖ·¶ÔÓ¦µÄÒ³¡£
arm  IO/ ÄÚ´æÍ³Ò»±àÖ·  ËùÒÔ
#define io_remap_pfn_range(vma,from,pfn,size,prot) \
             &nb ......

LinuxµÄoopsÄں˵÷ÊÔÐÅÏ¢

      Oops¿ÉÒÔ¿´³ÉÊÇÄں˼¶µÄSegmentation Fault¡£Ó¦ÓóÌÐòÈç¹û½øÐÐÁË·Ç·¨ÄÚ´æ·ÃÎÊ»òÖ´ÐÐÁË·Ç·¨Ö¸Á»áµÃµ½SegfaultÐźţ¬Ò»°ãµÄÐÐΪÊÇcoredump£¬Ó¦ÓóÌÐòÒ²¿ÉÒÔ×Ô¼º½Ø»ñSegfaultÐźţ¬×ÔÐд¦Àí¡£Èç¹ûÄÚºË×Ô¼º·¸ÁËÕâÑùµÄ´íÎó£¬Ôò»á´ò³öOopsÐÅÏ¢¡£´¦ÀíÆ÷ʹÓõÄËùÓеØÖ·¼¸ºõ¶¼ÊÇͨ¹ýÒ»¸ö¸´ÔÓµÄÒ³± ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ