mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
mm: reduce try_to_compact_pages parameters
Expand the usage of the struct alloc_context introduced in the previous patch also for calling try_to_compact_pages(), to reduce the number of its parameters. Since the function is in different compilation unit, we need to move alloc_context definition in the shared mm/internal.h header. With this change we get simpler code and small savings of code size and stack usage: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-27 (-27) function old new delta __alloc_pages_direct_compact 283 256 -27 add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-13 (-13) function old new delta try_to_compact_pages 582 569 -13 Stack usage of __alloc_pages_direct_compact goes from 24 to none (per scripts/checkstack.pl). Signed-off-by: Vlastimil Babka <[email protected]> Acked-by: Michal Hocko <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Zhang Yanfei <[email protected]> Cc: Minchan Kim <[email protected]> Cc: David Rientjes <[email protected]> Cc: Rik van Riel <[email protected]> Cc: "Aneesh Kumar K.V" <[email protected]> Cc: "Kirill A. Shutemov" <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: Joonsoo Kim <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
a9263751e1
commit
1a6d53a105
4 changed files with 44 additions and 45 deletions
|
|
@ -109,6 +109,28 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address);
|
|||
* in mm/page_alloc.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structure for holding the mostly immutable allocation parameters passed
|
||||
* between functions involved in allocations, including the alloc_pages*
|
||||
* family of functions.
|
||||
*
|
||||
* nodemask, migratetype and high_zoneidx are initialized only once in
|
||||
* __alloc_pages_nodemask() and then never change.
|
||||
*
|
||||
* zonelist, preferred_zone and classzone_idx are set first in
|
||||
* __alloc_pages_nodemask() for the fast path, and might be later changed
|
||||
* in __alloc_pages_slowpath(). All other functions pass the whole strucure
|
||||
* by a const pointer.
|
||||
*/
|
||||
struct alloc_context {
|
||||
struct zonelist *zonelist;
|
||||
nodemask_t *nodemask;
|
||||
struct zone *preferred_zone;
|
||||
int classzone_idx;
|
||||
int migratetype;
|
||||
enum zone_type high_zoneidx;
|
||||
};
|
||||
|
||||
/*
|
||||
* Locate the struct page for both the matching buddy in our
|
||||
* pair (buddy1) and the combined O(n+1) page they form (page).
|
||||
|
|
|
|||
Loading…
Reference in a new issue