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

LinuxÖÐALIGNºêµÄÔ­Àí

1. Òý×Ó
int a;  
int size = 8;
   
Èç¹ûÈÃaΪ(size =8)µÄÕûÊý±¶±íʾ³É¶þ½øÖÆÓ¦ÊÇʲôÑù×ÓÄØ£¿ÄǾÍÊÇÈÃÕâ¸öÊý±íʾ³É¶þ½øÖÆÊ±µÄ×îºóÈýλΪ0.
¶øÒª´ïµ½ÕâһĿ±ê£¬Ö»ÒªÏÂÃæÕâ¸öÊýÓëËü½øÐÐÓëÔËËã¾Í¿ÉÒÔÁË:
  11111111 11111111 11111111 11111000  
¶øÉÏÃæÕâ¸öÊýʵ¼ÊϾÍÊÇ ~ (size - 1)£¬¿ÉÒÔ½«¸ÃÊý³ÆÎªsizeµÄ¶ÔÆëÑÚÂësize_mask.  
   
¿ÉÕâÑù×öÇó³öµÄÊDZÈaСµÄÄǸö×î´óµÄ8µÄ±¶Êý. Èç¹ûÒªÇó³ö±Èa´óµÄÊDz»ÊÇÐèÒª¼ÓÉÏ8¾Í¿ÉÒÔÁË?
¿ÉÊÇÈç¹ûa±¾Éí¾ÍÊÇ8µÄ±¶Êý, ÕâÑù¼Ó8²»¾Í´íÁËÂð, ËùÒÔÔÚa»ù´¡ÉϼÓÉÏ size - 1, È»ºóÓësizeµÄ¶ÔÆëÑÚÂë½øÐÐÓëÔËËã.
ÕâÑù, ÎÒÃÇ¿ÉÒÔ¶¨ÒåÏÂÃæµÄºê, ÓÃÓÚ¼ÆËãÒ»¸öÊýaÒÔsizeΪ±¶ÊýµÄǰºóÁ½¸öÖµ£º
#define alignment_down(a, size) (a & (~(size-1)) )
#define alignment_up(a, size) ((a+size-1) & (~ (size-1)))
 
ÀýÈç:
a=0, size=8,  Ôòalignment_down(a,size)=0, alignment_up(a,size)=0.
a=6, size=8,  Ôòalignment_down(a,size)=0, alignment_up(a,size)=8.
a=8, size=8,  Ôòalignment_down(a,size)=8, alignment_up(a,size)=8.
a=14, size=8, Ôòalignment_down(a,size)=8, alignment_up(a,size)=16.
 
×¢Ò⣺sizeÓ¦µ±Îª2µÄn´Î·½, ¼´2, 4, 8, 16, 32, 64, 128, 256, 1024, 2048, 4096.....
 
2. ÔÚlinuxÖеÄÓ¦ÓÃ
ÉÏÃæµÄ¼ÆËã·½·¨ÔÚlinuxµÈ´úÂëÖÐÒ²³£³£¿ÉÒÔ¿´µ½,ÏÂÃæ¸ø³ö¼¸¸öÀý×Ó.
 
Àý£±£ºµ±·ÖÅ䵨ַaddrʱ, Òª½«¸ÃµØÖ·ÒÔsizeΪ±¶Êý¶ÔÆë, ¶øÇÒÒªµÃµ½ÊDZÈaddr´óµÄÖµ, ÔòʹÓÃ_ALIGNºê£º
/* align addr on a size boundary - adjust address up if needed -- Cort */
#define _ALIGN(addr,size)   (((addr)+(size)-1)&(~((size)-1)))
Àý2£ºÓëÒ³Ãæ¶ÔÆëÏà¹ØµÄºê
#define PAGE_SIZE               4096
#define PAGE_MASK               (~(PAGE_SIZE-1))
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr)        (((addr)+PAGE_SIZE-1) & PAGE_MASK)
 
Àý3£ºÓëskb·ÖÅäʱ¶ÔÆëÏà¹ØµÄºê
#define SKB_DATA_ALIGN(X)  


Ïà¹ØÎĵµ£º

LinuxÉ豸ģÐÍÖ®input×ÓϵͳÏê½â

Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......

linux ar ÃüÁîÏê½â


¹¦ÄÜ˵Ã÷£º½¨Á¢»òÐ޸ı¸´æÎļþ£¬»òÊÇ´Ó±¸´æÎļþÖгéÈ¡Îļþ¡£
Óï¡¡¡¡·¨£ºar[-dmpqrtx][cfosSuvV][a<³ÉÔ±Îļþ>][b<³ÉÔ±Îļþ>][i<³ÉÔ±Îļþ>][±¸´æÎļþ][³ÉÔ±Îļþ]
²¹³ä˵Ã÷£ºar¿ÉÈÃÄú¼¯ºÏÐí¶àÎļþ£¬³ÉΪµ¥Ò»µÄ±¸´æÎļþ¡£ÔÚ±¸´æÎļþÖУ¬ËùÓгÉÔ±Îļþ½Ô±£ÓÐÔ­À´µÄÊôÐÔÓëȨÏÞ¡£
²Î¡¡¡¡Êý£º
¡¡Ö¸Áî²ÎÊý
¡ ......

Linux netfilterÔ´Âë·ÖÎö(7)

תÌù×Ô£ºhttp://alexanderlaw.blog.hexun.com/8968960_d.html
Æß¡¢ target Æ¥Åä
7.1 ipt_targetºÍipt_entry_target½á¹¹      ip_tables.h
ipt_targetºÍipt_match½á¹¹ÀàËÆ£º
struct ipt_target
{
      struct list_head list;
 
    & ......

linux diff ÃüÁîÏê½â


Ê×Ò³


½²Êö£ºÎÒÓë51CTO²»µÃ²»ËµµÄ¹ÊÊÂ
    ²©¿Í»¥¶¯×¨Ìâ Ö® 2009£¬Í´²¢¿ìÀÖ×ŵÄITÈË
²©Ö÷µÄ¸ü¶àÎÄÕÂ>>

linux diff ÃüÁîÏê½â

2009-02-13 14:01:37
¡¡±êÇ©£ºlinux
diff
ÃüÁî
¡¡¡¡¡¡[ÍÆË͵½¼¼ÊõȦ
]


¹¦ÄÜ˵Ã÷£º±È½ÏÎļþµÄ²îÒì¡£
Óï
¡¡¡¡·¨£ºdi ......

¿ªÊ¼ÔÚlinux ƽ̨ѧϰ¿ª·¢c++Óöµ½µÄÎÊÌâ

1¡¢classµÄ¶¨ÒåÒ»¶¨ÒªÔÚºóÃæ¼Ó“£»”
2¡¢ÓÃcoutʱҪÔÚmainº¯Êýǰ¼Ó using namespace std;
3¡¢³öÏÖ undefined reference to `std::ios_base::Init::Init() ÌáʾµÄ»°£¬ÎÊÌâÊÇgcc±àÒëÆ÷³öÏֵ쬽â¾öµÄ°ì·¨ÊÇ£ºÔÚlinuxϱàÒëc++ ³ÌÐòҪʹÓÃg++ ±àÒëÆ÷,Èç¹ûÄãÒªÊÇʹÓÃgcc±àÒëÆ÷¾Í»áÓÐÉÏÃæµÄ±¨´íÐÅÏ¢,Ö»ÒªÔÚÔÚgccºó¼Ó ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ