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;
Ïà¹ØÎĵµ£º
·¢ÏÖ·þÎñÆ÷ϵͳʱ¼äºÍ±ê׼ʱ¼ä²îÁË10¶à·ÖÖÓ,È»ºóÁãµãµÄʱ¼äµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁ˲¶àÒ»¸öÀñ°Ý·¢Õ¹Êý¾Ý¿âÖмǼµÄʱ¼ä»¹ÊDz»¶Ô£¬ÈçÊÇÓüӰàµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁË2ÌìÒ»¿´»¹ÊÇʱ¼ä²»¶Ô£¬Ò»²é²Å·¢ÏÖ£º
»úÆ÷ÀïÓÐÁ½¸öʱÖÓ¡£Ó²¼þʱÖÓ´Ó¸ù±¾ÉϽ²ÊÇCMOSʱÖÓ£»¶øÏµÍ³Ê±ÖÓÊÇÓÉÄÚºËά»¤µÄ£¬ËüÊÇ´Ó1969ÄêÄ©£¨¼ ......
°üº¬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 ......
µÚÒ»ÖÖ·½·¨£º
rootÓû§µÇ¼ϵͳ
usr/local/mysql/bin/mysqladmin -u root -p password ÐÂÃÜÂë
enter password ¾ÉÃÜÂë
µÚ¶þÖÖ·½·¨£º
rootÓû§µÇ¼mysqlÊý¾Ý¿â
mysql> update mysql.user set password=password("ÐÂÃÜÂë")where User="root";
mysql> flush privileges;
mysql> quit ;
mysqlÍü¼ÇrootÃÜÂëÈçºÎ ......
Ò».²é¿´ËùÓÐÓ²Å̵Ä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 ......
Ê×ÏÈ,·þÎñÆ÷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 ......