Linux ÄÚºËWorkQueueÔĶÁ±Ê¼Ç
1. Workqueue
WorkqueueµÄÃû×־ͺÍËûµÄ¹¦ÄÜÒ»Ñù£ºÐèÒª´¦ÀíµÄ¹¤×÷ÁбíºÍ¹¤×÷µÄÌí¼Óɾ³ý£¨Ã²ËÆÃ»Óп´µ½ÈçºÎɾ³ýµÄ£©¡¢ÒÔ¼°¹¤×÷µÄµ÷¶ÈÖ´ÐС£
ÐèÒª´¦ÀíµÄ¹¤×÷Áбíͨ³£¶¼Î¬»¤ÔÚÄں˶ÔÏóworkqueue_structÀïÃæ¡£ÏµÍ³ÀïÃæ¿ÉÒÔÓжà¸öworkqueue_struct¡£Äں˲¿·ÖµÄ¹¤×÷Ìí¼Óµ½Á˹¤×÷¶ÓÁÐkeventd_wq¡£¶øfs/aio.cÀïÃæÊµÏÖÁË×Ô¼ºµÄ¹¤×÷¶ÓÁÐaio_wq¡£
workqueue_structÊÇË«ÏòÑ»·Á´±í¡£ÀïÃæµÄµ¥ÔªÊÇwork_struct¡£
Çý¶¯½Ó¿Ú£º
create_workqueue£º´´½¨¹¤×÷¶ÓÁнṹºÍÄں˴¦ÀíÏ̡߳£
schedule_work/schedule_delayed_work£ºµ÷¶ÈÖ´ÐÐÒ»¸ö¾ßÌåµÄÈÎÎñ£¬Ö´ÐеÄÈÎÎñ½«»á±»¹ÒÈëLinuxϵͳÌṩµÄworkqueue keventd_wq¡£Çë×¢Ò⣬µ÷¶ÈÖ´Ðв¢²»µÈÓÚÁ¢¿ÌÖ´ÐС£¶øÊÇָʾworker_threadÔÚÏ´δ¦Àí¹¤×÷¶ÓÁеÄʱºòÖ´Ðиù¤×÷£»
queue_work/queue_delayed_work£ºµ÷¶ÈÖ´ÐÐÒ»¸öÖ¸¶¨workqueueÖеÄÈÎÎñ¡£Äں˱¾ÉíÌṩÁËÒ»¸ö¹¤×÷¶ÓÁÐkeventd_wq¡£µ«ÊÇ£¬ÏµÍ³ÀïÃæÒ²¿ÉÒÔÓÐÆäËûµÄ¹¤×÷¶ÓÁС£ËùÒÔ¾ÍÓÐÁËschedule_workºÍqueue_workµÄÇø·Ö¡£
1.1 schedule_work
´Óschedule_workµÄʵÏÖ¿´£¬ÆäºÍqueue_workµÄʵÏÖÇø±ð²¢²»´ó£º
int schedule_work(struct work_struct *work)
{
return queue_work(keventd_wq, work);
}
int queue_work(struct workqueue_struct *wq, struct work_struct *work)
{
int ret;
ret = queue_work_on(get_cpu(), wq, work);
put_cpu();
return ret;
}
int
queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work)
{
int ret = 0;
Ïà¹ØÎĵµ£º
ÎÒΪʲô·¢±í²»ÁËÎÄÕÂÄØ£¿
1. ÔÚLinuxϵͳÖУ¬ÒÔ Îļþ ·½Ê½·ÃÎÊÉ豸 ¡£
2. LinuxÄÚºËÒýµ¼Ê±£¬´ÓÎļþ /etc/fstab ÖжÁȡҪ¼ÓÔØµÄÎļþϵͳ¡£
3. LinuxÎļþϵͳÖÐÿ¸öÎļþÓà i½Úµã À´±êʶ¡£
4. È«²¿´ÅÅÌ¿éÓÉËĸö²¿·Ö×é³É£¬·Ö±ðΪÒýµ¼¿é ¡¢×¨ÓÃ¿é ¡¢ i½Úµã±í¿é ºÍÊý¾Ý´æ´¢¿é¡£
5. Á´½Ó·ÖΪ£º Ó²Á´½Ó ºÍ ·ûºÅÁ´½Ó ¡£
6. ³¬ ......
Ò».²é¿´ËùÓÐÓ²Å̵Äuuid
ls -all /dev/disk/by-uuid
longseakerµÄʵÀý
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 05434a61-8a78-4ee5- a5db-6a49079b9e3d -> ../../sda5
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 07D8-0104 -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 18201249-998a-4bb1 ......
¸÷sectionµÄλÖ÷ֲ¼¿´Äں˵ÄÁ´½Ó½Å±¾
D:\KIDE\target\kernel-version\cgel3.0\linux\include\asm-generic\vmlinux.lds.h
D:\KIDE\target\kernel-version\cgel3.0\linux\arch\powerpc\kernel\vmlinux.lds.S
Kernel¾µÏñÆðʼµØÖ·KERNELBASE = 0xc000 0000£¬ÕâÒâζ×ÅÄں˴úÂëºÍÄÚºËÈ«¾Ö±äÁ¿µÈµÄµØÖ·¿Õ¼äÔÚ3g-4gµÄµØ·½£¬
¶ø ......
Ê×ÏÈ,·þÎñÆ÷GCCÒªÓÐ,²»È»Ê²Ã´¶¼²»ÄÜ×ö.Äܹ»ÓÃgcc -vÀ´²é¿´ÊÇ·ñ°²×°ÁËGCC,
#gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
--enable-shared --enable-threads=posix --disable-checki ......
°²×°£¬Éý¼¶ºÍÐ¶ÔØÓ¦ÓÃÈí¼þÊÇÓ°ÏìÓû§¶Ô²Ù×÷ϵͳÆÀ¼ÛµÄ¾ö¶¨ÐÔÒòËØÖ®Ò»¡£¶ÔÓÚÈÕ½¥Á÷ÐÐµÄ GNU/Linux ²Ù×÷ϵͳ£¬ÓµÓмò½àÇ¿´óµÄÈí¼þ°ü¹ÜÀí»úÖÆ¹¦²»¿Éû¡£±¾ÎÄ´Ó»ù±¾µÄ rpm/dpkg ÃüÁîÐгö·¢£¬ÒÔ RHEL ºÍ Ubuntu
ΪÀý£¬½éÉܵäÐÍ Linux ϵͳÖÐÓ¦ÓÃÈí¼þµÄ¹ÜÀíºÍʹÓá£
RPM/DPKG Á½´óÕóÓª¼ò½é
ÔÚ GNU/Linux( ÒÔϼò³Æ Linux) ²Ù× ......