mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[PATCH] optional ZONE_DMA: optional ZONE_DMA in the VM
Make ZONE_DMA optional in core code. - ifdef all code for ZONE_DMA and related definitions following the example for ZONE_DMA32 and ZONE_HIGHMEM. - Without ZONE_DMA, ZONE_HIGHMEM and ZONE_DMA32 we get to a ZONES_SHIFT of 0. - Modify the VM statistics to work correctly without a DMA zone. - Modify slab to not create DMA slabs if there is no ZONE_DMA. [akpm@osdl.org: cleanup] [jdike@addtoit.com: build fix] [apw@shadowen.org: Simplify calculation of the number of bits we need for ZONES_SHIFT] Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Andi Kleen <ak@suse.de> Cc: "Luck, Tony" <tony.luck@intel.com> Cc: Kyle McMartin <kyle@mcmartin.ca> Cc: Matthew Wilcox <willy@debian.org> Cc: James Bottomley <James.Bottomley@steeleye.com> Cc: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
66701b1499
commit
4b51d66989
8 changed files with 90 additions and 23 deletions
|
@ -19,6 +19,12 @@
|
|||
* generated will simply be the increment of a global address.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
#define DMA_ZONE(xx) xx##_DMA,
|
||||
#else
|
||||
#define DMA_ZONE(xx)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ZONE_DMA32
|
||||
#define DMA32_ZONE(xx) xx##_DMA32,
|
||||
#else
|
||||
|
@ -31,7 +37,7 @@
|
|||
#define HIGHMEM_ZONE(xx)
|
||||
#endif
|
||||
|
||||
#define FOR_ALL_ZONES(xx) xx##_DMA, DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx)
|
||||
#define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx)
|
||||
|
||||
enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
|
||||
FOR_ALL_ZONES(PGALLOC),
|
||||
|
@ -96,7 +102,8 @@ static inline void vm_events_fold_cpu(int cpu)
|
|||
#endif /* CONFIG_VM_EVENT_COUNTERS */
|
||||
|
||||
#define __count_zone_vm_events(item, zone, delta) \
|
||||
__count_vm_events(item##_DMA + zone_idx(zone), delta)
|
||||
__count_vm_events(item##_NORMAL - ZONE_NORMAL + \
|
||||
zone_idx(zone), delta)
|
||||
|
||||
/*
|
||||
* Zone based page accounting with per cpu differentials.
|
||||
|
@ -143,14 +150,16 @@ static inline unsigned long node_page_state(int node,
|
|||
struct zone *zones = NODE_DATA(node)->node_zones;
|
||||
|
||||
return
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
zone_page_state(&zones[ZONE_DMA], item) +
|
||||
#endif
|
||||
#ifdef CONFIG_ZONE_DMA32
|
||||
zone_page_state(&zones[ZONE_DMA32], item) +
|
||||
#endif
|
||||
zone_page_state(&zones[ZONE_NORMAL], item) +
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
zone_page_state(&zones[ZONE_HIGHMEM], item) +
|
||||
#endif
|
||||
zone_page_state(&zones[ZONE_DMA], item);
|
||||
zone_page_state(&zones[ZONE_NORMAL], item);
|
||||
}
|
||||
|
||||
extern void zone_statistics(struct zonelist *, struct zone *);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue