struct per_cpu_pages *pcp; 
static void __init free_area_init_core(struct pglist_data *pgdat,		unsigned long *zones_size, unsigned long *zholes_size){	unsigned long i, j;	const unsigned long zone_required_alignment = 1UL << (MAX_ORDER-1);	int cpu, nid = pgdat->node_id;	unsigned long zone_start_pfn = pgdat->node_start_pfn;	pgdat->nr_zones = 0;	init_waitqueue_head(&pgdat->kswapd_wait);	pgdat->kswapd_max_order = 0;		for (j = 0; j < MAX_NR_ZONES; j++) {		struct zone *zone = pgdat->node_zones + j;		unsigned long size, realsize;		unsigned long batch;		zone_table[NODEZONE(nid, j)] = zone;		realsize = size = zones_size[j];		if (zholes_size)			realsize -= zholes_size[j];		if (j == ZONE_DMA || j == ZONE_NORMAL)			nr_kernel_pages += realsize;		nr_all_pages += realsize;		zone->spanned_pages = size;		zone->present_pages = realsize;		zone->name = zone_names[j];		spin_lock_init(&zone->lock);		spin_lock_init(&zone->lru_lock);		zone->zone_pgdat = pgdat;		zone->free_pages = 0;		zone->temp_priority = zone->prev_priority = DEF_PRIORITY;		batch = zone_batchsize(zone);		for (cpu = 0; cpu < NR_CPUS; cpu++) {			struct per_cpu_pages *pcp;#ifdef CONFIG_NUMA			struct per_cpu_pageset *pgset;			pgset = &pageset_table[nid*MAX_NR_ZONES*NR_CPUS +					(j * NR_CPUS) + cpu];			zone->pageset[cpu] = pgset;#else			struct per_cpu_pageset *pgset = zone_pcp(zone, cpu);#endif			pcp = &pgset->pcp[0];			/* hot */			pcp->count = 0;			pcp->low = 2 * batch;			pcp->high = 6 * batch;			pcp->batch = 1 * batch;			INIT_LIST_HEAD(&pcp->list);			pcp = &pgset->pcp[1];			/* cold */			pcp->count = 0;			pcp->low = 0;			pcp->high = 2 * batch;			pcp->batch = 1 * batch;			INIT_LIST_HEAD(&pcp->list);		}		printk(KERN_DEBUG "  %s zone: %lu pages, LIFO batch:%lu\n",				zone_names[j], realsize, batch);		INIT_LIST_HEAD(&zone->active_list);		INIT_LIST_HEAD(&zone->inactive_list);		zone->nr_scan_active = 0;		zone->nr_scan_inactive = 0;		zone->nr_active = 0;		zone->nr_inactive = 0;		atomic_set(&zone->reclaim_in_progress, -1);		if (!size)			continue;		/*		 * The per-page waitqueue mechanism uses hashed waitqueues		 * per zone.		 */		zone->wait_table_size = wait_table_size(size);		zone->wait_table_bits =			wait_table_bits(zone->wait_table_size);		zone->wait_table = (wait_queue_head_t *)			alloc_bootmem_node(pgdat, zone->wait_table_size						* sizeof(wait_queue_head_t));		for(i = 0; i < zone->wait_table_size; ++i)			init_waitqueue_head(zone->wait_table + i);		pgdat->nr_zones = j+1;		zone->zone_mem_map = pfn_to_page(zone_start_pfn);		zone->zone_start_pfn = zone_start_pfn;		if ((zone_start_pfn) & (zone_required_alignment-1))			printk(KERN_CRIT "BUG: wrong zone alignment, it will crash\n");		memmap_init(size, nid, j, zone_start_pfn);		zone_start_pfn += size;		zone_init_free_lists(pgdat, zone, zone->spanned_pages);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2caaad41e4aa8f5dd999695b4ddeaa0e7f3912a4/page_alloc.c/clean/mm/page_alloc.c