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

LinuxÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÖ®__alloc_bootº¯Êý·ÖÎö

 ¶ÔÓÚÕâ¸öº¯Êý£¬ÆäʵÊǺܶàºê¶¨Òåµ÷Óõĺ¯Êý£¬ÆäÖÐalloc_bootmem_low_pages(x)ÊÇÆäÖÐÒ»¸öµ÷ÓÃËüµÄºê£¬´ó¼Ò¿ÉÒÔÈÏΪÕâЩºêÖ»ÊǰÑÕâ¸ö__alloc_bootmemʵÖÊÐԵĺ¯Êý½øÐÐÁË·â×°¡£#define alloc_bootmem_low_pages(x)Ï൱ÓÚ__alloc_bootmem((x), PAGE_SIZE, 0)£¬¾ÍÊÇ´Ó0µØÖ·¿ªÊ¼µÄµÍ¶ËÄÚ´æ·ÖÅä°´Ò³´óС¶ÔÆëµÄÄÚ´æ¡£ºÃÁË£¬ÎªÁËÁ˽âÕâ¸öº¯ÊýÊÇÔõôÔËÐеģ¬ÎÒÃǾʹÓËüµÄÔ´Í·¿ªÊ¼½²Æð°É¡£
 ÎÒÃǻص½paging_init()Õâ¸öº¯Êý£¬ÔÚÉÏËßµÄÎÄÕµÄbootmem_init()º¯Êý·µ»ØÖ®ºó£¬¾Í½Óׯص½paging_init()¡£
 memcpy(&meminfo, mi, sizeof(meminfo));//ÕâÀïÆðµ½¸üеÄ×÷Óá£
 /*
  * allocate the zero page.  Note that we count on this going ok.
  */
 zero_page = alloc_bootmem_low_pages(PAGE_SIZE);//´Ó0µØÖ·µÍ¶ËÄڴ濪ʼ·ÖÅä1Ò³¿ÕÏÐÄڴ棬½«¸ÃÒ³µÄҳ֡λÂë±íÖÃ1£¬²¢½«ÕâÒ²µÃµÃÄÚÈÝÈ«²¿Çå0.ÎÒÃÇ»¹ÊÇ×ÐϸµãÀ´·ÖÎöÕâ¶Î´úÂë°É¡£
 void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal)//sizeÊÇÉêÇëµÄÄÚ´æ´óС£¬alignÊǾö¶¨µÄÆðʼµØÖ·¿ªÊ¼µÄÄÚ´æ¶ÔÆë·½Ê½£¬goalÊÇ·ÖÅäÄÚ´æµÄÆðʼµØÖ·£¬Èç¹û²»Ðеϰ¾Í´Ó0µØÖ·¿ªÊ¼¡£
{
 pg_data_t *pgdat = pgdat_list;//Õâ¸ö¾ÍÊÇÄǸöÖ¸Ïòdiscontig_node_data[0]µÄÁ´±í¡£
 void *ptr;
 for_each_pgdat(pgdat)//ÕâÊÇÒ»¸öºê¶¨Ò壺#define for_each_pgdat(pgdat)  for (pgdat = pgdat_list; pgdat; pgdat = pgdat->pgdat_next)¡£ÆäʵºÜ¼òµ¥£¬¾ÍÊÇͨ¹ýÕâ¸öÁ´±í´Ó0ºÅÄÚ´ænode¿ªÊ¼±éÀúËùÓеÄdiscontig_node_data[n]¡£
  if ((ptr = __alloc_bootmem_core(pgdat->bdata, size,align, goal)))//µ÷Ó÷ÖÅäÄÚ´æºËÐĺ¯Êý£¬ÎÒÃÇÔÚÏÂÃæ½ô½Ó×ŵÄλÖýéÉÜ¡£
   return(ptr);
 /*
  * Whoops, we cannot satisfy the allocation request.
  */
 printk(KERN_ALERT "bootmem alloc of %lu bytes failed!\n", size);
 panic("Out of memory");
 return NULL;
}
 static void * __init __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,unsigned long align, unsigned long goal)//ÕâÀïºÍÇ°ÃæµÄ__alloc_bootmem()²»Í¬µÄµØ·½¾ÍÊÇÔÚµÚÒ»Ï¶ÔÓÚÕâÒ»ÏîÎÒÃÇÊDZȽÏÊìϤµÄ¡£
{
  unsigned long offset, remaining_size,


Ïà¹ØÎĵµ£º

linuxÏÂmmapµÄʹÓÃ

http://blog.csdn.net/adcxf/archive/2009/03/14/3989725.aspx
¹² ÏíÄÚ´æ¿ÉÒÔ˵ÊÇ×îÓÐÓõĽø³Ì¼äͨÐÅ·½Ê½£¬Ò²ÊÇ×î¿ìµÄIPCÐÎʽ¡£Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½½ø³ÌA¡¢B¸÷×ԵĽø³ÌµØÖ·¿Õ ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ½½ø³ÌB¶Ô¹²ÏíÄÚ´æÖÐÊý¾ÝµÄ¸üУ¬·´Ö®ÒàÈ»¡£ÓÉÓÚ¶à¸ö½ø³Ì¹²Ïíͬһ¿éÄÚ´æÇøÓò£¬±ØÈ»ÐèÒ ......

[×ªÔØ]LinuxÈȲå°Î

 
½«¿ÉÒÆ¶¯É豸Á¬Èëϵͳʱ£¬ÏµÍ³µÄºǫ́ÖлáÒÀ´Î·¢ÉúÈçÏÂʼþ£º
l Äں˼ì²âµ½ÐÂÓ²¼þ²åÈ룬Ȼºó·Ö±ð֪ͨhotplugºÍudev¡£Ç°ÕßÓÃÀ´×°ÈëÏàÓ¦µÄÄÚºËÄ£¿é(Èçusb-storage)£¬¶øºóÕßÓÃÀ´ÔÚ/devÖд´½¨ÏàÓ¦µÄÉ豸½Úµã(Èç/dev/sda1)¡£
l udev´´½¨ÁËÏàÓ¦µÄÉ豸½ÚµãÖ®ºó£¬»á½«ÕâÒ»ÏûϢ֪ͨhalµÄÊØ»¤³ÌÐò(hald)¡£µ±È»udev»¹µÃ±£Ö¤Ð ......

ARM Linux¾²Ì¬Ó³Éä·ÖÎö


×÷ÕߣºÒ×ËÉ»ª,»ªÇåÔ¶¼ûǶÈëʽѧԺ½²Ê¦¡£
ÔÚ»ªÇåÔ¶¼ûÉϿιý³ÌÖУ¬·¢ÏÖ¾²Ì¬Ó³Éä·½Ãæ³õѧÕ߱ȽÏÄÑÓÚÕÆÎÕºÍÀí½â£¬ÏÂÃæ·ÖÎöһϾ²Ì¬Ó³Éä»úÖÆµÄÔ­Àí²¢Í¨¹ýGPIOºÍUSB¡¢LCDµÈµÄ¾²Ì¬Ó³Éä×÷ΪÀý×ÓÀ´ËµÃ÷ÈçºÎͨ¹ýÕâÖÖ¾²Ì¬Ó³ÉäµÄ·½Ê½·ÃÎÊÍâÉè×ÊÔ´¡£
ÄÚºËÌṩÁËÒ»¸öÖØÒªµÄ½á¹¹Ìåstruct machine_desc ,Õâ¸ö½á¹¹ÌåÔÚÄÚºËÒÆÖ²ÖÐÆðµ½Ï൱ ......

Linux use notes

-----------------------------
Based on Fedora 8 version:
-----------------------------
1. No common command like ifconfig in os?
Root cause is the standard search path not include /sbin and /usr/sbin. Try to include them in /etc/profile. As belows:
 #Kenny add /sbin and /usr/sbin here.
&n ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ