LinuxÒ³¿ò¼¶ÄÚ´æ¹ÜÀí´¦Àíϸ½Ú
ŪÇå³þ»ï°éϵͳËã·¨µÄÔÀíÒÔºó£¬ÎÒÃǾͿÉÒÔ¿ª¿ªÐÄÐĵش¦ÀíÒ³¿òÁË¡£
ÎÒÃÇ¿ÉÒÔͨ¹ý6¸öÉÔÓвî±ðµÄº¯ÊýºÍºêÇëÇóÒ³¿ò¡£Ò»°ãÇé¿öÏ£¬ËûÃǶ¼·µ»ØµÚÒ»¸öËù·ÖÅäÒ³µÄÏßÐÔµØÖ·£¬»òÕß·ÖÅäʧ°ÜÔò·µ»ØNULL¡£
alloc_pages(gfp_mask, order)£ºÓÃÕâ¸öº¯ÊýÇëÇó2order ¸öÁ¬ÐøµÄÒ³¿ò¡£Ëû·µ»ØµÚÒ»¸öËù·ÖÅäÒ³¿òÃèÊö·ûµÄµØÖ·£¬»òÕßÈç¹ûʧ°Ü£¬Ôò·µ»ØNULL¡£
alloc_page(gfp_mask)£ºÓÃÓÚ»ñµÃÒ»¸öµ¥¶ÀÒ³¿òµÄºê£¬ËüÆäʵֻÊÇalloc_pages(gfp_mask, 0)¡£Ëü·µ»ØËù·ÖÅäÒ³¿òÃèÊö·ûµÄµØÖ·£¬»òÕßÈç¹û·ÖÅäʧ°Ü£¬Ôò·µ»ØNULL¡£
_ _get_free_pages(gfp_mask, order)£º¸Ãº¯ÊýÀàËÆÓÚalloc_pages( )£¬Ö»²»¹ýËü·µ»ØµÚÒ»¸öËù·ÖÅäÒ³¶ÔÓ¦µÄÄÚ´æÏßÐÔµØÖ·¡£
_ _get_free_page(gfp_mask)£ºÓÃÓÚ»ñµÃÒ»¸öµ¥¶ÀÒ³¿òµÄºê£¬ËüÒ²Ö»ÊÇ__get_free_pages(gfp_mask, 0)
get_zeroed_page(gfp_mask)£ºº¯ÊýÓÃÀ´»ñÈ¡ÂúÊÇ0µÄÒ³Ãæ£¬Ëüµ÷ÓÃalloc_pages(gfp_mask | __GFP_ZERO, 0)£¬È»ºó·µ»ØËù»ñȡҳ¿òµÄÏßÐÔµØÖ·¡£
_ _get_dma_pages(gfp_mask, order)£º¸Ãºê»ñÈ¡ÓÃÓÚDMAµÄÒ³¿ò£¬ËüÀ©Õ¹µ÷ÓÃ__get_free_pages(gfp_mask | _ _GFP_DMA, order)¡£
²ÎÊýgfp_maskÊÇÒ»×é±êÖ¾£¬ËüÖ¸Ã÷ÁËÈçºÎѰÕÒ¿ÕÏеÄÒ³¿ò£º
±êÖ¾
˵Ã÷
_ _GFP_DMA
ËùÇëÇóµÄÒ³¿ò±ØÐë´¦ÓÚZONE_DMA ¹ÜÀíÇø¡£
_ _GFP_HIGHMEM
ËùÇëÇóµÄÒ³¿ò´¦ÓÚZONE_HIGHMEM ¹ÜÀíÇø
_ _GFP_WAIT
ÔÊÐíÄں˶Եȴý¿ÕÏÐÒ³¿òµÄµ±Ç°½ø³Ì½øÐÐ×èÈû
_ _GFP_HIGH
ÔÊÐíÄں˷ÃÎʱ£ÁôµÄÒ³¿ò³Ø
_ _GFP_IO
ÔÊÐíÄÚºËÔڵͶËÄÚ´æÒ³ÉÏÖ´ÐÐI/O ´«ÊäÒÔÊÍ·ÅÒ³¿ò
_ _GFP_FS
Èç¹ûÇå0£¬Ôò²»ÔÊÐíÄÚºËÖ´ÐÐÒÀÀµÓÚÎļþϵͳµÄ²Ù×÷
_ _GFP_COLD
ËùÇëÇóµÄÒ³¿ò¿ÉÄÜΪ“ÀäµÄ”
_ _GFP_NOWARN
Ò»´ÎÄÚ´æ·ÖÅäʧ°Ü½«²»»á²úÉú¾¯¸æÐÅÏ¢
_ _GFP_REPEAT
ÄÚºËÖØÊÔÄÚ´æ·ÖÅäÖ±µ½³É¹¦
_ _GFP_NOFAIL
Óë__GFP_REPEAT Ïàͬ
_ _GFP_NORETRY
Ò»´ÎÄÚ´æ·ÖÅäʧ°Üºó²»ÔÙÖØÊÔ
_ _GFP_NO_GROW
slab ·ÖÅäÆ÷²»ÔÊÐíÔö´óslab ¸ßËÙ»º´æ
_ _GFP_COMP
ÊôÓÚÀ©Õ¹Ò³µÄÒ³¿ò
_ _GFP_ZERO
Èκηµ»ØµÄÒ³¿ò±ØÐë±»ÌîÂú0
ÏÂÃæ4¸öº¯ÊýºÍºêÖеÄÈÎÒâÒ»¸ö¶¼¿ÉÒÔÊÍ·ÅÒ³¿ò£º
_ _free_pages(page, order)£º¸Ãº¯ÊýÊ×ÏȲéÕÒpageÖ¸ÏòµÄÒ³ÃèÊö·û£»Èç¹û¸ÃÒ³¿òδ±»±£Áô£¨PG_reserved±ê־Ϊ0£©£¬¾Í°ÑÃèÊö·ûcount×ֶμõ1¡£Èç¹ûcount×ֶαäΪ0£¬¾Í¼Ù¶¨´Ópage¶ÔÓ¦Ò³¿ò¿ªÊ¼µÄ2order¸öÁ¬ÐøÒ³¿ò²»ÔÙ±»Ê¹Óã¬ÔÚÕâÖÖÇé¿öÏ£¬¸Ãº¯ÊýÊÍ·ÅÒ³¿ò¡£
free_pages(addr, order)£ºÕâ¸öº¯ÊýÀàËÆÓÚ _ _free_pages( )£¬Ö»²»¹ýËü½ÓÊյIJÎÊýΪҪ
Ïà¹ØÎĵµ£º
1. ÏÂÔØLinuxÏÂDNWµÄPC¶ËUSBÇý¶¯ºÍдÈ빤¾ß
ÏÂÔØµØÖ·£ºÒÑÉÏ´«ÖÁCSDN
2. ±àÒëPC¶ËUSBÇý¶¯ºÍдÈ빤¾ß
2.1 ½âѹËõ
$ tar xzvf /path/to/dnw_linux.tgz
dnw_linux/
dnw_linux/secbulk/
dnw_linux/secbulk/Makefile
dnw_linux/secbulk/secbulk.c
dnw_linux/dnw/
dnw_linux/dnw/dnw.c
......
µ±ÎÒÃǵijÌÐò±ÀÀ£Ê±£¬ÄÚºËÓпÉÄܰѸóÌÐòµ±Ç°ÄÚ´æÓ³Éäµ½coreÎļþÀ·½±ã³ÌÐòÔ±ÕÒµ½³ÌÐò³öÏÖÎÊÌâµÄµØ·½¡£×î³£³öÏֵ쬼¸ºõËùÓÐC³ÌÐòÔ±¶¼³öÏÖ¹ýµÄ´íÎó¾ÍÊÇ“¶Î´íÎó”ÁË¡£Ò²ÊÇ×îÄѲé³öÎÊÌâÔÒòµÄÒ»¸ö´íÎó¡£ÏÂÃæÎÒÃǾÍÕë¶Ô“¶Î´íÎó”À´·ÖÎöcoreÎļþµÄ²úÉú¡¢ÒÔ¼°ÎÒÃÇÈçºÎÀûÓÃcoreÎļþÕÒµ½³öÏÖ±ÀÀ£µÄµØ·½¡ ......
ǰһƪ²©¿Í»¹Ð´ÁË×Ô¼ºÐ´µÄ¶Ë¿Úת·¢¹¤¾ß£¬½ñÌìżȻÔÚÍøÉÏ¿´µ½½²ÃüÃû¹ÜµÀºÍnetcatÅäºÏµÄÓ÷¨£¬±»³¹µ×À×µ¹ÁË¡£
ÔÀ´ÒÔΪnetcat×ö²»µ½£¬ÔÀ´ÊÇ×Ô¼ºÏë²»µ½£¬¶ø²»ÊÇnetcat×ö²»µ½……
·½·¨ÈçÏ£º
$ mknod backpipe p
&n ......
дµÃÂùºÃµÄlinuxѧϰ±Ê¼Ç
linuxĿ¼¼Ü¹¹
/ ¸ùĿ¼
/bin ³£ÓõÄÃüÁî binary file µÄÄ¿錄
/boot ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ÔÚÄÚ
/boot/grub/menu.lst GRUBÉèÖÃ
/boot/vmlinuz& ......
²»³£Óõ«·Ç³£ÊµÓõÄÃüÁî
UNIXÃüÁîÊDzâÊԱر¸µÄ֪ʶ£¬³ýÁËһЩ³£ÓõÄÃüÁîÐèÒªÊìϤÒÔÍ⣬Óкܶà·Ç³£ÓÐÓõ«ÊDz»³£ÓõÄÃüÁîÒ²ÐèÒªÁ˽⣬ÕâÑù¶Ô¹¤×÷ÓкܴóµÄ°ïÖú£¬ÕâÀïÌṩһЩÎÒÆ½³£¹¤×÷ÖÐÀÛ»ýµÄ֪ʶ£¬Ï£ÍûÄܰïÖúµ½´ó¼Ò ^_^
1¡¢Í³¼ÆËùÓÐÎļþÖеļǼÊý£ºwc -l filename
2¡¢²é¿´¹²ÏíÄڴ棺ipcs -m
3¡¢viÖеÄÅúÁ¿×Ö·ûÆ¥Å䣨a- ......