linux tasklet
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¡£µ±ºǫ́Ïß³ÌksoftirqdÔËÐе÷ÓÃ__do_softirqʱ£¬»áÖ´ÐÐÔÚÖжÏ
ÏòÁ¿±ísoftirq_vecÀïÖжϺÅTASKLET_SOFTIRQ¶ÔÓ¦µÄtasklet_actionº¯Êý£¬È»ºótasklet_action±éÀú
tasklet_vecÁ´±í£¬µ÷ÓÃÿ¸ötaskletµÄº¯ÊýÍê³ÉÈíÖжϲÙ×÷¡£
ÏÂÃæ¶Ôº¯Êýtasklet_initºÍtasklet_schedule·ÖÎö£º
º¯Êýtasklet_init³õʼ»¯Ò»¸ötasklet,Æä²ÎÊýtÊÇtasklet_struct½á¹¹ÃèÊöµÄtasklet,²ÎÊý(*func)ÊÇÈíÖжÏÏìÓ¦º¯Êý¡£
void tasklet_init(struct tasklet_struct *t,
void (*func)(unsigned long), unsigned long data)
{
t->next = NULL;
t->state = 0;
atomic_set(&t->count, 0);
t->func = func;
t->data = data;
}
Çý¶¯³ÌÐòµ÷Óú¯Êýtasklet_scheduleÀ´ÔËÐÐtasklet¡£
static inline void tasklet_schedule(struct tasklet_struct *t)
{
if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
__tasklet_schedule(t);
}
º¯Êý__tasklet_scheduleµÃµ½µ±Ç°CPUµÄtasklet_vecÁ´±í£¬²¢Ö´ÐÐTASKLET_SOFTIRQÈíÖжϡ£
void fastcall __tasklet_schedule(struct tasklet_struct *t)
{
unsigned long flags;
local_irq_save(flags);
t->next = __get_cpu_var(tasklet_vec).list;
__get_cpu_var(tasklet_vec).list = t;
raise_softirq_irqoff(TASKLET_SOFTIRQ);
local_irq_restore(flags);
}
º¯Êýraise_softirq_irqoffÉèÖÃÈíÖжÏnrΪ¹ÒÆð״̬£¬²¢ÔÚûÓÐÖжÏʱ»½ÐÑÏß³Ìksoftirqd¡£º¯Êýraise_softirq_irqoff±ØÐëÔÚ¹ØÖжÏÇé¿öÏÂÔËÐС£
inline fastcall void raise_softirq_irqoff(unsigned int nr)
{
__raise_softirq_irqoff(nr);
/*
* If we're in an interrupt or softirq, we're done
* (this also catches softirq-disabled code). We will
* actually run the softirq once we return from
* the irq or softirq.
*
*
Ïà¹ØÎĵµ£º
Ò»ÄêÒ»¶ÈµÄLinux¿ª·¢Õß´ó»áÉÏÖÜÔھɽðɽ¾ÙÐУ¬»áÉÏLinux»ù½ð»áÖ´ÐÐÀíÊÂJim Zemlin±íʾ£¬µÃÒæÓÚÔÆ¼ÆËãÒÔ¼°ÆäËü¿Æ¼¼³±Á÷µÄ³öÏÖ£¬LinuxµÄÊг¡µØÎ»Ê®·ÖÎȹ̣¬È»¶øÒ»Ð©Ö÷ÒªµÄά»¤ÈËÔ±ÒѾÈÕ½¥²ÔÀÏ£¬ºó¼ÌÕßÈ´»¹Ã»ÓгÉÊì¡£
sysfsÄÚºË×Óϵͳά»¤ÕßGrey Kroah-HartmanÖ¸³ö£º“ÉϲãµÄÈËÔ±ÈÔȻà ......
ip ÊǸöÃüÁ ip ÃüÁîµÄ¹¦Äܺܶ࣡»ù±¾ÉÏËüÕûºÏÁË ifconfig Óë route ÕâÁ½¸öÃüÁ²»¹ýip µÄ¹¦ÄܸüÇ¿´ó£¡ Èç¹ûÄúÓÐÐËȤµÄ»°£¬Çë×ÔÐÐ vi /sbin/ifup ¾ÍÖªµÀÕû¸ö ifup ¾ÍÊÇÀûÓà ip Õâ¸öÃüÁîÀ´ÊµÏֵġ£ÏÂÃæ½éÉÜÒ»ÏÂʹÓ÷½·¨
[root@linux ~]# ip [option] [¶¯×÷] [ÃüÁî]
²ÎÊý£º
option £ºÉ趨µÄ²ÎÊý£¬Ö÷ÒªÓУº
  ......
Linux»·¾³ÏµÄÈí¼þ°²×°£¬²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇ飻Èç¹ûͨ¹ýÔ´´úÂë±àÒëºóÔÚ°²×°£¬µ±È»ÊÂÇé¾Í¸üΪ¸´ÔÓһЩ£»ÏÖÔÚ°²×°¸÷ÖÖÈí¼þµÄ½Ì³Ì¶¼·Ç³£ÆÕ±é£»µ«Íò±ä²»ÀëÆäÖУ¬¶Ô»ù´¡ÖªÊ¶µÄÔúÊµÕÆÎÕ£¬°²×°¸÷ÖÖÈí¼þµÄÎÊÌâ¾ÍÓÈжø½âÁË¡£Configure½Å±¾ÅäÖù¤¾ß¾ÍÊÇ»ù´¡Ö®Ò»£¬ËüÊÇautoconfµÄ¹¤¾ßµÄ»ù±¾Ó¦Óá£
ÓëһЩ¼¼ÇÉÏà±È£¬ConfigureÏԵûù´ ......
µÝ¹é²éÕÒÎļþÄÚÈÝ£º
grep -n -ri "slewing" ./
ÔÚµ±Ç°Ä¿Ïµݹé²éÕÒËùÓеÄÎļþ
-i, --ignore-case
Ignore case distinctions  ......