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.
*
*
Ïà¹ØÎĵµ£º
´´½¨×ÀÃæÍ¼±ê
Ŀǰ½«ÍøÂçÓ¦ÓÃÀ©Õ¹µ½×ÀÃæÊÇÒ»¸öÇ÷ÊÆ£¬´æÔÚןܶà½â¾ö·½°¸£¬±¾ÎÄÒÔ Mozilla Prism ΪÀý£¬ÀàËÆµÄ·½·¨Í¬ÑùÊÊÓÃÓÚ Google Chrome ¡£
1. µ½ Mozilla Prism µÄÍøÕ¾ÉÏÏÂÔØ Prism£¬µã»÷ Download Now Ö®ºó»áÌáʾÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÒÔ Mozilla Firefox À©Õ¹µÄ·½Ê½£¬ÊʺÏÒѾ°²×°ÓÐ Firefox µÄÅóÓÑ£»Ò»Ö ......
ÏßÐÔ—ÎïÀíµØÖ·µÄת»»£¬¿É½«ÆäÒâÒåÀ©Õ¹ÎªÔÊÐí½«Ò»¸öÏßÐÔµØÖ·±ê¼ÇΪÎÞЧ£¬¶ø²»ÊÇʵ¼ÊµØ²úÉúÒ»¸öÎïÀíµØÖ·¡£ÓÐÁ½ÖÖÇé¿ö¿ÉÄÜʹҳ±»±ê¼ÇΪÎÞЧ£ºÆäÒ»ÊÇÏßÐÔµØÖ·ÊDzÙ×÷ϵͳ²»Ö§³ÖµÄµØÖ·£»Æä¶þÊÇÔÚÐéÄâ´æ´¢Æ÷ϵͳÖУ¬ÏßÐÔµØÖ·¶ÔÓ¦µÄÒ³´æ´¢ÔÚ´ÅÅÌÉÏ£¬¶ø²»ÊÇ´æ´¢ÔÚÎïÀí´æ´¢Æ÷ÖС£ÔÚǰһÖÖÇé¿öÏ£¬³ÌÐòÒò²úÉúÁËÎÞЧµØÖ·¶ø±ØÐë±»Ö ......
linux ÉϵÄoracle sqlplus ²»ÄÜÀûÓà ÉÏ, Ï ¼üÀ´²é¿´ÃüÁËÑË÷µ½½â¾öÎÊÌâµÄ°ì·¨£¬ÕûÀíÈçÏÂ
°²×°Èí¼þrlwrap¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣬¸ÃÈí¼þÊÇÓÃcдµÄ³ÌÐò
¹Ù·½ÏÂÔØµØÖ·£ºhttp://utopia.knoware.nl/~hlub/uck/rlwrap/
°²×°¹ý³Ì£º
ÎÒÃÇÒ²¿ÉÒԲ鿴½âѹºóµÄtar°ü£¬²é¿´README°ïÖúÎļþ
shell>tar -zxvf rlwrap-0.36.tar.gz
sh ......
ʹÓùý³ÌÖеÄÐĵãº
Ò»¡¢½â³ýĿ¼ӳÉä¹ØÏµ
umount Ŀ¼¿ÉÒÔ½â³ý¹ØÁª¹ØÏµ
±ØÐëÏÈÔÚ¿Í»§¶Ëumount£¬È»ºóÔÚ·þÎñÆ÷¶ËÍ£Ö¹nfs·þÎñ£¬ÒÔ¼°ÐÞ¸Ä/etc/exports£¬·ñÔòµÄ»°»áµ¼ÖÂdf -hÎÞ·¨¹Ø±Õ
¶þ¡¢mount.nfs: Input/output error
½â¾ö:ÔÚ¿Í»§¶ËÒ²ÐèÆô¶¯portmap
Èý¡¢ÐÞ¸ÄÍê±Ï/etc/exportsÎļþÖ®ºó£¬¿ÉÒÔÖØÆônfs·þÎñ£¬Ò²¿ÉÒÔʹÓÃexp ......
µÝ¹é²éÕÒÎļþÄÚÈÝ£º
grep -n -ri "slewing" ./
ÔÚµ±Ç°Ä¿Ïµݹé²éÕÒËùÓеÄÎļþ
-i, --ignore-case
Ignore case distinctions  ......