Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

The Linux Kernel Module Programming Guide

 http://www.faqs.org/docs/kernel/
µÄ11ºÍ12ÔÙÊÔÊÔ¡£
Linux Äں˵ÄWorkQueues API×öÁËÐÞ¸Ä
 
 
WorkQueue»úÖÆÔÊÐíÄں˴úÂëÔÚÍíÒ»µãµÄʱ¼äÖ´ÐС£Workqueueͨ¹ý´æÔÚµÄÒ»¸ö»òÕß¶à¸öרÃŵĽø³ÌʵÏÖ£¬È¥Ö´ÐжÓÁй¤×÷¡£ÒòΪÔÚ½ø³ÌµÄÉÏÏÂÎÄ»ã×ÜÖ´ÐУ¬Òò´ËÈç¹ûÐèÒª£¬Æä¿ÉÒÔsleep¡£WorkQueueÒ²¿ÉÒÔÑÓ³ÙÌØ¶¨Ê±¼äÖ´Ðй¤×÷¡£ËùÒÔËüÃÇÔÚÄÚºËÖÐÐí¶àµØ·½Ê¹Óá£
David Howells×î½ü¼ì²éworkqueueʱ·¢ÏÖwork_struct£¨ÓÃÀ´ÃèÊöÒ»¸ö³ÌÐòÖ´ÐУ©ÊÇÏ൱´óµÄ£¬ÔÚ64-bit»úÆ÷ÉÏÓÐ96bytes£¬ÕâÊÇÏ൱´óµÄÊý¾Ý½á¹¹£¬ÒòΪºÜ¶àµØ·½¶¼Ê¹ÓÃÕâ¸ö½á¹¹¡£Òò´ËËûÏë³ö°ì·¨°ÑËüÃDZäС£¬Ëû³É¹¦Á˵«ÊÇÐèÒª¸Ä¶¯workqueueµÄAPI.
µ¼ÖÂstruct work_structÓ·Ö×µÄÔ­ÒòÊÇ£º
1.ÆäÖÐËù°üº¬timer structure¡£Ðí¶àworkqueueµÄÓû§´ÓÀ´²»Ê¹ÓÃÕâ¸ödelayÌØÐÔ£¬µ«ÊÇÔڽṹÌåÄÚ¶¼°üº¬timer_list½á¹¹¡£
2.˽ÓÐÊý¾ÝÖ¸Õ룬ÕâÊÇ´«µÝ¸øworkº¯ÊýµÄ²ÎÊý¡£Ðí¶àº¯ÊýʹÓÃÕâ¸öÖ¸Õ룬µ«ÊÇËüͨ³£¿ÉÒÔ´Ówork_structÖ¸ÕëÖÐÓÃcontain_of()¼ÆËã³öÀ´¡£
3.Ò»¸öwordÖ»ÓÃÒ»¸öbitÀ´±íʾpending£¬ÓÃÀ´ËµÃ÷Õâ¸öwork_structĿǰÔÚ¶ÓÁÐÉϵȴýÖ´ÐС£
David´¦ÀíÁËÒÔÉϵÄÇé¿ö£¬Ê¹ÓÃÁËÒ»ÖÖеĽṹÌåstruct delayed_work£¬×¨ÃÅÓÃÓÚÑÓʱµ÷ÓÃʹÓ᣶ø°Ñstruct work_structureÖеÄtimer½á¹¹Ìåɾ³ýÁË¡£Ë½ÓÐÊý¾ÝÖ¸ÕëÏûʧÁË£¬workº¯ÊýʹÓÃÒ»¸öÖ¸Ïòwork_structureµÄÖ¸Õ룬typedef void (*work_func_t)(struct work_struct *work)¡£Ê¹ÓÃһЩ¼¼ÇÉɾ³ýÁËpending word¡£ÕâЩ±ä¶¯µÄ½á¹ûʹµÃworkqueueµÄAPI·¢ÉúÁ˱仯¡£ÓÐÁ½ÖÖ·½·¨ÉùÃ÷Ò»¸öworkqueueµÄentry¡£
    DECLARE_WORK(name, func);
    DECLARE_DELAYED_WORK(name, func);
  ¶ÔÓÚÔÚÔËÐÐʱÉú³ÉµÄwork structure£¬³õʼ»¯ºêÏÖÔÚÈçÏ£º
  INIT_WORK(struct work_struct work, work_func_t func);
  PREPARE_WORK(struct work_struct work, work_func_t func);
  INIT_DELAYED_WORK(struct delayed_work work, work_func_t func);
  PREPARE_DELAYED_WORK(struct delayed_work work, work_func_t func);
  INIT_*°æ±¾µÄºê³õʼ»¯Õû¸ö½á¹¹£¬ËüÃDZØÐëÔÚÕâ¸ö½á¹¹µÚÒ»´Î³õʼ»¯µÄʱºòʹÓã¬PREPARE_*°æ±¾µÄºêÔËÐÐËÙ¶ÈÉÔ΢¿ìЩ¡£
The functions for adding entries to workqueues (and canceling them) now look like this:
    int queue_work(struct workqueue_struct *queue,
  


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì (Æß) SDPЭÒé

Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖЭÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀЭÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......

linux»ñÈ¡ÎļþµÄ·¾¶Ãû¼°ÆäÎļþÃûµÄ·½·¨

1¡¢¼òµ¥²âÊÔʵÀý
 for i in `find . -type f -name "*.c"`
do
  echo $i
  basename $i    »ñÈ¡*.cÎļþÃû
  dirname $i        »ñÈ¡*.c¶ÔÓ¦µÄĿ¼Ãû
done
2¡¢Êµ¼ÊÓ¦ÓÃ
diff LinuxÔ´Â룬²¢½«Óв»Ò»ÑùµÄÔ´ÂëÕûÀíÔÚÒ»Æð£¬ÒªÇó£ºÎļþ ......

½¨Á¢»ùÓÚlinuxµÄMIPS½»²æ±àÒë»·¾³

 ×÷Õߣº·ëÀÚ (flw10000) MAIL£ºflw10000 AT 163.com
¾­¹ý½üÒ»ÖܵÄæºõ£¬°Ñ»ùÓÚlinuxµÄMIPS½»²æ±àÒë»·¾³»ù±¾´î½¨³É¹¦£¬ÕâÀï˵"»ù±¾"´î½¨³É¹¦ÊÇÒòΪ»·¾³ËäÈ»´î½¨ºÃÁË£¬¿ÉÒÔ±àÒë»ùÓڣͣɣУӵĿÉÖ´ÐÐÎļþÁË£¬µ«»¹Ã»ÓÐÔÚÕæÕýµÄ£Í£É£Ð£Ó»·¾³Ï²âÊÔ¹ý£¬»¹ÓÐÔÚ±àÒëµÄ¹ý³ÌÖгöÏÖÁËЩÎÊÌ⣬ËäÈ»½â¾öÁË£¬Ò²ÒòûÓÐÔÚÕæÕýµÄ£Í£É£ ......

LinuxÄÚ´æ¹ÜÀíÖ®slab·ÖÅäÆ÷·ÖÎö(ÐøÈý)

Áù£ºkmem_cache_allocµÄʵÏÖ·ÖÎö:
ÎÒÃÇÔÚÉÏÃæ¿ÉÒÔ¿´µ½£¬´´½¨Ò»¸öcacheÃèÊö·ûµÄʱºò£¬²¢Ã»ÓÐÕâÖ®·ÖÅäslabÊý¾Ý¡£ÏÖÔÚÎÒÃÇÀ´¿´Ò»ÏÂÔõô´ÓcacheÖÐÉêÇë¶ÔÏó
void * kmem_cache_alloc (kmem_cache_t *cachep, int flags)
{
     return __cache_alloc(cachep, flags);
}
ʵ¼ÊÉÏ»áµ÷ÓÃ__cache_allo ......

ÁгöLinuxÔ´ÂëÏÂËùÓÐMakefileµÄ·½·¨

 Ò»¡¢ÒªÇó£º
1¡¢Äܹ»ÏÔʾ³öMakefileµÄ×ÜÊý
2¡¢ÄÜÏÔʾһ¼¶Ä¿Â¼ÏµÄMakefile×ÜÊý¡¢MakefileÁÐ±í¼°ÆäMakefileµÄÄÚÈÝ
3¡¢Äܽ«ÉÏÊöÄÚÈÝдÈëÏàÓ¦µÄÎļþ
¶þ¡¢ÊµÀý
rm -rf ~/Desktop/linux_Makefile/*
for i in `find . -maxdepth 1 -type d`
#½ö½öÊǵ±Ç°Ä¿Â¼£¬ËùÒÔÇ뽫±¾½Å±¾·ÅÔÚlinuxÔ´ÂëĿ¼ÏÂÖ´ÐС£
do
 e ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ