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,
Ïà¹ØÎĵµ£º
http://blog.csdn.net/adcxf/archive/2009/03/14/3989725.aspx
¹² ÏíÄÚ´æ¿ÉÒÔ˵ÊÇ×îÓÐÓõĽø³Ì¼äͨÐÅ·½Ê½£¬Ò²ÊÇ×î¿ìµÄIPCÐÎʽ¡£Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½½ø³ÌA¡¢B¸÷×ԵĽø³ÌµØÖ·¿Õ ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ½½ø³ÌB¶Ô¹²ÏíÄÚ´æÖÐÊý¾ÝµÄ¸üУ¬·´Ö®ÒàÈ»¡£ÓÉÓÚ¶à¸ö½ø³Ì¹²Ïíͬһ¿éÄÚ´æÇøÓò£¬±ØÈ»ÐèÒ ......
LinuxÔ´Âë°²×°Subversion
ÏÈ´ÓsubversionµÄ¹Ù·½ÍøÕ¾ÏÂÔØÔ´Â룬subversion.apache.org
½âѹ¿ªµ½subversion-xxx È»ºóconfigure
È»ºóÒ»°ã¾ÍÊÇÕÒ²»µ½Ä³Ä³¿âµÄ´íÎó£¬ÒÔÏÂ˵Ã÷
1.ÕÒ²»µ½sqlite3
´ÓsqliteÍøÕ¾ÉÏÏÂÔØsqlite3µÄÔ´Â룬Ȼºó°Ñsqlite3.c¿½±´µ½ subversion-xxx/sqlite-amalgamation/sqlite3.c
2.ÕÒ²»µ½apr
......
Ò»¡¢ÏÂÔØ°²×°³ÌÐò
1¡¢ ÏÂÔØÄÚºËÔ´Â루linux-2.6.33.tar.bz2£©£¬Î»Öãºhttps://www.kernel.org
2¡¢ ÏÂÔØ×îаæµÄmodule-init-tools£¨module-init-tools-3.8.tar.bz2£©ºÍmodutils£¨modutils-2.4.26-1.src.rpm£©µÄÔ´Âë
λÖãºhttp://www.kernel.org/pub/linux/kernel/people/rusty/modules/
λÖãºhttp://www. ......
´ËÎÄÓÚ2010-02-26±»ÍƼöµ½CSDNÊ×Ò³
ÈçºÎ±»ÍƼö£¿
×î½üÔÚÑо¿ Linux
Äں˵Äʱ¼ä×Óϵͳ£¬ÎªÏÂһƪ³¤ÎÄ¡¶·þÎñÆ÷³ÌÐòÖеÄÈÕÆÚÓëʱ¼ä¡·×ö×¼±¸£¬ÎÞÒâÖÐ×¢Òâµ½ÁË Linux
ÐÂÔöµÄ¼¸¸öϵͳµ÷ÓõĶԱàд·þÎñÆ÷´úÂëµÄÓ°Ï죬ÏÈ´óּǼÔÚÕâÀï¡£Õâƪ²©¿ÍÒ²¿ÉËã×÷ǰһƪ¡¶¶àÏß
³Ì·þÎñÆ÷µÄ³£Óñà³ÌÄ£ÐÍ¡·
µÄÒ»¸ö×¢½Å¡£
< type="te ......