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,
Ïà¹ØÎĵµ£º
ËäÈ»mplayerµÄ°²×°·½·¨ÒѾ²»ÊÇʲô¼¼Êõ»î£¬µ«×î½üÓв»ÉÙͬѧÔÚѯÎÊÎÒ¹ØÓÚmplayerµÄ°²×°·½·¨µÄÎÊÌâ¡£ÎÒÒ»¹áÍÆ¼öËüÃÇÔ´´úÂë°üµÄ°²×°£¬ËäÈ»²½ÖèÓÐЩ¸´ÔÓ£¬µ«½âÂëÆ÷ºÍ¶þ½øÖƳÌÐò¶¼¾¡ÔÚÕÆÎÕ£¬ÐÄÀï̤ʵ¡£
£½£½£½
1
ÏÂÔØÈçÏÂÕâЩÈí¼þ£º
all-20071007.tar.bz2
windows-all-20071007.zip
Blue-1.7.tar.bz2
MPlayer-1.0rc2.ta ......
Linux Input Device ½é紹: APIs
jollen 發±íì¶ April 8, 2009 12:18 PM
Linux µÄ Input Device ÊÇÖØÒªµÄÒ»個 subsystem£¬ÔÚ進ÐÐ實Àý½é紹ǰ£¬ÏÈ´óÂÔÁ˽âÒ»ÏÂÏà關µÄ API¡£
Linux Input Device
input.cÊÇLinuxµÄ”input”驅動³Ìʽ£¬Ö÷ÒªÖ ......
The Linux USB input subsystem is a single, harmonized way to manage all input devices. This is a relatively new approach for Linux, with the system being partly incorporated in kernel version 2.4 and fully integrated in the 2.5 development series.
This article covers four basic areas: a descripti ......
Ò»¡¢ÏÂÔØ°²×°³ÌÐò
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. ......
ÏÈÓÃwhoÃüÁî²é¿´ËùÓеǽÖÕ¶Ë
#who -uH
Êä³öÈçÏ£º
NAME LINE TIME IDLE PID COMMENT
root :0 2010-03-01 19:13 ? & ......