diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-10-29 23:35:44 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-10-29 23:35:44 -0800 |
| commit | 1d2652dd2c3e942e75dc3137b3cb1774b43ae377 (patch) | |
| tree | 2e8b5fdcf4e5d12dfa1816912b08138009230d5b /include/linux | |
| parent | 38e419f5b012874111de20e4589c718421dc43ab (diff) | |
[PATCH] hot-n-cold pages: bulk page freeing
Patch from Martin Bligh.
Implements __free_pages_bulk(). Release multiple pages of a given
order into the buddy all within a single acquisition of the zone lock.
This also removes current->local_pages. The per-task list of pages
which only ever contained one page. To prevent other tasks from
stealing pages which this task has just freed up.
Given that we're freeing into the per-cpu caches, and that those are
multipage caches, and the cpu-stickiness of the scheduler, I think
current->local_pages is no longer needed.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/sched.h | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index b5e63d8ade25..65f9799aa896 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -293,9 +293,6 @@ struct task_struct { struct list_head ptrace_list; struct mm_struct *mm, *active_mm; - struct list_head local_pages; - - unsigned int allocation_order, nr_local_pages; /* task state */ struct linux_binfmt *binfmt; @@ -411,16 +408,15 @@ do { if (atomic_dec_and_test(&(tsk)->usage)) __put_task_struct(tsk); } while(0) #define PF_SIGNALED 0x00000400 /* killed by a signal */ #define PF_MEMALLOC 0x00000800 /* Allocating memory */ #define PF_MEMDIE 0x00001000 /* Killed for out-of-memory */ -#define PF_FREE_PAGES 0x00002000 /* per process page freeing */ -#define PF_FLUSHER 0x00004000 /* responsible for disk writeback */ -#define PF_NOWARN 0x00008000 /* debug: don't warn if alloc fails */ - -#define PF_FREEZE 0x00010000 /* this task should be frozen for suspend */ -#define PF_IOTHREAD 0x00020000 /* this thread is needed for doing I/O to swap */ -#define PF_FROZEN 0x00040000 /* frozen for system suspend */ -#define PF_SYNC 0x00080000 /* performing fsync(), etc */ -#define PF_FSTRANS 0x00100000 /* inside a filesystem transaction */ -#define PF_KSWAPD 0x00200000 /* I am kswapd */ +#define PF_FLUSHER 0x00002000 /* responsible for disk writeback */ +#define PF_NOWARN 0x00004000 /* debug: don't warn if alloc fails */ + +#define PF_FREEZE 0x00008000 /* this task should be frozen for suspend */ +#define PF_IOTHREAD 0x00010000 /* this thread is needed for doing I/O to swap */ +#define PF_FROZEN 0x00020000 /* frozen for system suspend */ +#define PF_SYNC 0x00040000 /* performing fsync(), etc */ +#define PF_FSTRANS 0x00080000 /* inside a filesystem transaction */ +#define PF_KSWAPD 0x00100000 /* I am kswapd */ /* * Ptrace flags |
