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. ³¬ ......
°üº¬3¸öÎļþ¼Ð
Ŀ¼×éÖ¯½á¹¹ÈçÏ£º
inc/hello.h
main/main.c, Makefile
src/hello.c
ÎļþÄÚÈÝÈçÏ£º
hello.h:
void hello(char name[]);
main.c:
#include <stdio.h>
#include "../inc/hello.h"
// The second hello.h should in ""
int main()
{
hello("GCC");
printf("Haha Linux Ub ......
Linux
/ LinuxÎļþϵͳµÄÈë¿Ú£¬Ò²ÊÇ´¦ÓÚ×î¸ßÒ»¼¶µÄĿ¼£»
/bin »ù´¡ÏµÍ³ËùÐèÒªµÄÄÇЩÃüÁîλÓÚ´ËĿ¼£¬Ò²ÊÇ×îСϵͳËùÐèÒªµÄÃüÁ±ÈÈç ls¡¢cp¡¢mkdirµÈÃüÁ¹¦ÄܺÍ/usr/binÀàËÆ£¬Õâ¸öĿ¼ÖеÄÎļþ¶¼ÊÇ¿ÉÖ´Ðе쬯ÕͨÓû§¶¼¿ÉÒÔʹÓõÄÃüÁî¡£×öΪ»ù´¡ÏµÍ³ËùÐèÒªµÄ×î»ù´¡µÄÃüÁî¾ÍÊÇ·ÅÔÚÕâÀï¡£
/boot LinuxµÄÄں˼°Òýµ¼Ïµ ......
£¨Ò»£©Îļþ¡¢Ä¿Â¼²Ù×÷ÃüÁî
1¡¢lsÃüÁî
¹¦ÄÜ£ºÏÔʾÎļþºÍĿ¼µÄÐÅÏ¢
ls¡¡ÒÔĬÈÏ·½Ê½ÏÔʾµ±Ç°Ä¿Â¼ÎļþÁбí
ls -a ÏÔʾËùÓÐÎļþ°üÀ¨Òþ²ØÎļþ
ls -l ÏÔʾÎļþÊôÐÔ£¬°üÀ¨´óС£¬ÈÕÆÚ£¬·ûºÅÁ¬½Ó£¬ÊÇ·ñ¿É¶Áд¼°ÊÇ·ñ¿ÉÖ´ÐÐ
ls -lh ÏÔʾÎļþµÄ´óС£¬ÒÔÈÝÒ×Àí½âµÄ¸ñʽӡ³öÎļþ´óС (ÀýÈç 1K 234M 2G)
ls -lt ÏÔʾÎļþ£¬°´ÕÕÐÞ¸ÄÊ ......