Subversion Repositories Kolibri OS

Rev

Rev 5270 | Rev 6102 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5270 Rev 6082
Line 11... Line 11...
11
/* Plain integer GFP bitmasks. Do not use this directly. */
11
/* Plain integer GFP bitmasks. Do not use this directly. */
12
#define ___GFP_DMA		0x01u
12
#define ___GFP_DMA		0x01u
13
#define ___GFP_HIGHMEM		0x02u
13
#define ___GFP_HIGHMEM		0x02u
14
#define ___GFP_DMA32		0x04u
14
#define ___GFP_DMA32		0x04u
15
#define ___GFP_MOVABLE		0x08u
15
#define ___GFP_MOVABLE		0x08u
16
#define ___GFP_WAIT		0x10u
16
#define ___GFP_RECLAIMABLE	0x10u
17
#define ___GFP_HIGH		0x20u
17
#define ___GFP_HIGH		0x20u
18
#define ___GFP_IO		0x40u
18
#define ___GFP_IO		0x40u
19
#define ___GFP_FS		0x80u
19
#define ___GFP_FS		0x80u
20
#define ___GFP_COLD		0x100u
20
#define ___GFP_COLD		0x100u
21
#define ___GFP_NOWARN		0x200u
21
#define ___GFP_NOWARN		0x200u
Line 26... Line 26...
26
#define ___GFP_COMP		0x4000u
26
#define ___GFP_COMP		0x4000u
27
#define ___GFP_ZERO		0x8000u
27
#define ___GFP_ZERO		0x8000u
28
#define ___GFP_NOMEMALLOC	0x10000u
28
#define ___GFP_NOMEMALLOC	0x10000u
29
#define ___GFP_HARDWALL		0x20000u
29
#define ___GFP_HARDWALL		0x20000u
30
#define ___GFP_THISNODE		0x40000u
30
#define ___GFP_THISNODE		0x40000u
31
#define ___GFP_RECLAIMABLE	0x80000u
31
#define ___GFP_ATOMIC		0x80000u
-
 
32
#define ___GFP_NOACCOUNT	0x100000u
32
#define ___GFP_NOTRACK		0x200000u
33
#define ___GFP_NOTRACK		0x200000u
33
#define ___GFP_NO_KSWAPD	0x400000u
34
#define ___GFP_DIRECT_RECLAIM	0x400000u
34
#define ___GFP_OTHER_NODE	0x800000u
35
#define ___GFP_OTHER_NODE	0x800000u
35
#define ___GFP_WRITE		0x1000000u
36
#define ___GFP_WRITE		0x1000000u
-
 
37
#define ___GFP_KSWAPD_RECLAIM	0x2000000u
36
/* If the above are modified, __GFP_BITS_SHIFT may need updating */
38
/* If the above are modified, __GFP_BITS_SHIFT may need updating */
Line 37... Line 39...
37
 
39
 
38
/*
-
 
39
 * GFP bitmasks..
-
 
40
 *
40
/*
41
 * Zone modifiers (see linux/mmzone.h - low three bits)
41
 * Physical address zone modifiers (see linux/mmzone.h - low four bits)
42
 *
42
 *
43
 * Do not put any conditional on these. If necessary modify the definitions
43
 * Do not put any conditional on these. If necessary modify the definitions
44
 * without the underscores and use them consistently. The definitions here may
44
 * without the underscores and use them consistently. The definitions here may
45
 * be used in bit comparisons.
45
 * be used in bit comparisons.
46
 */
46
 */
47
#define __GFP_DMA	((__force gfp_t)___GFP_DMA)
47
#define __GFP_DMA	((__force gfp_t)___GFP_DMA)
48
#define __GFP_HIGHMEM	((__force gfp_t)___GFP_HIGHMEM)
48
#define __GFP_HIGHMEM	((__force gfp_t)___GFP_HIGHMEM)
49
#define __GFP_DMA32	((__force gfp_t)___GFP_DMA32)
49
#define __GFP_DMA32	((__force gfp_t)___GFP_DMA32)
-
 
50
#define __GFP_MOVABLE	((__force gfp_t)___GFP_MOVABLE)  /* Page is movable */
50
#define __GFP_MOVABLE	((__force gfp_t)___GFP_MOVABLE)  /* Page is movable */
51
#define __GFP_MOVABLE	((__force gfp_t)___GFP_MOVABLE)  /* ZONE_MOVABLE allowed */
-
 
52
#define GFP_ZONEMASK	(__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)
51
#define GFP_ZONEMASK	(__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)
53
 
-
 
54
/*
-
 
55
 * Page mobility and placement hints
-
 
56
 *
-
 
57
 * These flags provide hints about how mobile the page is. Pages with similar
-
 
58
 * mobility are placed within the same pageblocks to minimise problems due
-
 
59
 * to external fragmentation.
-
 
60
 *
-
 
61
 * __GFP_MOVABLE (also a zone modifier) indicates that the page can be
-
 
62
 *   moved by page migration during memory compaction or can be reclaimed.
-
 
63
 *
-
 
64
 * __GFP_RECLAIMABLE is used for slab allocations that specify
-
 
65
 *   SLAB_RECLAIM_ACCOUNT and whose pages can be freed via shrinkers.
-
 
66
 *
-
 
67
 * __GFP_WRITE indicates the caller intends to dirty the page. Where possible,
-
 
68
 *   these pages will be spread between local zones to avoid all the dirty
-
 
69
 *   pages being in one zone (fair zone allocation policy).
-
 
70
 *
-
 
71
 * __GFP_HARDWALL enforces the cpuset memory allocation policy.
-
 
72
 *
-
 
73
 * __GFP_THISNODE forces the allocation to be satisified from the requested
-
 
74
 *   node with no fallbacks or placement policy enforcements.
-
 
75
 */
-
 
76
#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE)
-
 
77
#define __GFP_WRITE	((__force gfp_t)___GFP_WRITE)
-
 
78
#define __GFP_HARDWALL   ((__force gfp_t)___GFP_HARDWALL)
-
 
79
#define __GFP_THISNODE	((__force gfp_t)___GFP_THISNODE)
-
 
80
 
52
/*
81
/*
-
 
82
 * Watermark modifiers -- controls access to emergency reserves
-
 
83
 *
-
 
84
 * __GFP_HIGH indicates that the caller is high-priority and that granting
-
 
85
 *   the request is necessary before the system can make forward progress.
-
 
86
 *   For example, creating an IO context to clean pages.
-
 
87
 *
-
 
88
 * __GFP_ATOMIC indicates that the caller cannot reclaim or sleep and is
-
 
89
 *   high priority. Users are typically interrupt handlers. This may be
-
 
90
 *   used in conjunction with __GFP_HIGH
-
 
91
 *
-
 
92
 * __GFP_MEMALLOC allows access to all memory. This should only be used when
-
 
93
 *   the caller guarantees the allocation will allow more memory to be freed
-
 
94
 *   very shortly e.g. process exiting or swapping. Users either should
-
 
95
 *   be the MM or co-ordinating closely with the VM (e.g. swap over NFS).
-
 
96
 *
-
 
97
 * __GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves.
-
 
98
 *   This takes precedence over the __GFP_MEMALLOC flag if both are set.
-
 
99
 *
-
 
100
 * __GFP_NOACCOUNT ignores the accounting for kmemcg limit enforcement.
-
 
101
 */
-
 
102
#define __GFP_ATOMIC	((__force gfp_t)___GFP_ATOMIC)
-
 
103
#define __GFP_HIGH	((__force gfp_t)___GFP_HIGH)
-
 
104
#define __GFP_MEMALLOC	((__force gfp_t)___GFP_MEMALLOC)
-
 
105
#define __GFP_NOMEMALLOC ((__force gfp_t)___GFP_NOMEMALLOC)
-
 
106
#define __GFP_NOACCOUNT	((__force gfp_t)___GFP_NOACCOUNT)
-
 
107
 
-
 
108
/*
-
 
109
 * Reclaim modifiers
-
 
110
 *
-
 
111
 * __GFP_IO can start physical IO.
-
 
112
 *
-
 
113
 * __GFP_FS can call down to the low-level FS. Clearing the flag avoids the
-
 
114
 *   allocator recursing into the filesystem which might already be holding
-
 
115
 *   locks.
-
 
116
 *
-
 
117
 * __GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
-
 
118
 *   This flag can be cleared to avoid unnecessary delays when a fallback
-
 
119
 *   option is available.
-
 
120
 *
-
 
121
 * __GFP_KSWAPD_RECLAIM indicates that the caller wants to wake kswapd when
-
 
122
 *   the low watermark is reached and have it reclaim pages until the high
-
 
123
 *   watermark is reached. A caller may wish to clear this flag when fallback
-
 
124
 *   options are available and the reclaim is likely to disrupt the system. The
-
 
125
 *   canonical example is THP allocation where a fallback is cheap but
-
 
126
 *   reclaim/compaction may cause indirect stalls.
-
 
127
 *
53
 * Action modifiers - doesn't change the zoning
128
 * __GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim.
54
 *
129
 *
55
 * __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt
130
 * __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt
56
 * _might_ fail.  This depends upon the particular VM implementation.
131
 *   _might_ fail.  This depends upon the particular VM implementation.
57
 *
132
 *
58
 * __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
133
 * __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
-
 
134
 *   cannot handle allocation failures. New users should be evaluated carefully
-
 
135
 *   (and the flag should be used only when there is no reasonable failure
59
 * cannot handle allocation failures.  This modifier is deprecated and no new
136
 *   policy) but it is definitely preferable to use the flag rather than
60
 * users should be added.
137
 *   opencode endless loop around allocator.
61
 *
138
 *
62
 * __GFP_NORETRY: The VM implementation must not retry indefinitely.
-
 
63
 *
139
 * __GFP_NORETRY: The VM implementation must not retry indefinitely and will
-
 
140
 *   return NULL when direct reclaim and memory compaction have failed to allow
64
 * __GFP_MOVABLE: Flag that this page will be movable by the page migration
141
 *   the allocation to succeed.  The OOM killer is not called with the current
65
 * mechanism or reclaimed
142
 *   implementation.
66
 */
143
 */
67
#define __GFP_WAIT	((__force gfp_t)___GFP_WAIT)	/* Can wait and reschedule? */
-
 
68
#define __GFP_HIGH	((__force gfp_t)___GFP_HIGH)	/* Should access emergency pools? */
144
#define __GFP_IO	((__force gfp_t)___GFP_IO)
69
#define __GFP_IO	((__force gfp_t)___GFP_IO)	/* Can start physical IO? */
145
#define __GFP_FS	((__force gfp_t)___GFP_FS)
70
#define __GFP_FS	((__force gfp_t)___GFP_FS)	/* Can call down to low-level FS? */
146
#define __GFP_DIRECT_RECLAIM	((__force gfp_t)___GFP_DIRECT_RECLAIM) /* Caller can reclaim */
71
#define __GFP_COLD	((__force gfp_t)___GFP_COLD)	/* Cache-cold page required */
147
#define __GFP_KSWAPD_RECLAIM	((__force gfp_t)___GFP_KSWAPD_RECLAIM) /* kswapd can wake */
72
#define __GFP_NOWARN	((__force gfp_t)___GFP_NOWARN)	/* Suppress page allocation failure warning */
148
#define __GFP_RECLAIM ((__force gfp_t)(___GFP_DIRECT_RECLAIM|___GFP_KSWAPD_RECLAIM))
73
#define __GFP_REPEAT	((__force gfp_t)___GFP_REPEAT)	/* See above */
149
#define __GFP_REPEAT	((__force gfp_t)___GFP_REPEAT)
74
#define __GFP_NOFAIL	((__force gfp_t)___GFP_NOFAIL)	/* See above */
-
 
75
#define __GFP_NORETRY	((__force gfp_t)___GFP_NORETRY) /* See above */
-
 
76
#define __GFP_MEMALLOC	((__force gfp_t)___GFP_MEMALLOC)/* Allow access to emergency reserves */
-
 
77
#define __GFP_COMP	((__force gfp_t)___GFP_COMP)	/* Add compound page metadata */
-
 
78
#define __GFP_ZERO	((__force gfp_t)___GFP_ZERO)	/* Return zeroed page on success */
-
 
79
#define __GFP_NOMEMALLOC ((__force gfp_t)___GFP_NOMEMALLOC) /* Don't use emergency reserves.
-
 
80
							 * This takes precedence over the
-
 
81
							 * __GFP_MEMALLOC flag if both are
-
 
82
							 * set
-
 
83
							 */
-
 
84
#define __GFP_HARDWALL   ((__force gfp_t)___GFP_HARDWALL) /* Enforce hardwall cpuset memory allocs */
-
 
85
#define __GFP_THISNODE	((__force gfp_t)___GFP_THISNODE)/* No fallback, no policies */
-
 
86
#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */
-
 
87
#define __GFP_NOTRACK	((__force gfp_t)___GFP_NOTRACK)  /* Don't track with kmemcheck */
-
 
88
 
150
#define __GFP_NOFAIL	((__force gfp_t)___GFP_NOFAIL)
89
#define __GFP_NO_KSWAPD	((__force gfp_t)___GFP_NO_KSWAPD)
-
 
90
#define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */
-
 
Line 91... Line 151...
91
#define __GFP_WRITE	((__force gfp_t)___GFP_WRITE)	/* Allocator intends to dirty page */
151
#define __GFP_NORETRY	((__force gfp_t)___GFP_NORETRY)
-
 
152
 
-
 
153
/*
-
 
154
 * Action modifiers
-
 
155
 *
-
 
156
 * __GFP_COLD indicates that the caller does not expect to be used in the near
-
 
157
 *   future. Where possible, a cache-cold page will be returned.
-
 
158
 *
-
 
159
 * __GFP_NOWARN suppresses allocation failure reports.
-
 
160
 *
-
 
161
 * __GFP_COMP address compound page metadata.
-
 
162
 *
-
 
163
 * __GFP_ZERO returns a zeroed page on success.
-
 
164
 *
-
 
165
 * __GFP_NOTRACK avoids tracking with kmemcheck.
92
 
166
 *
93
/*
167
 * __GFP_NOTRACK_FALSE_POSITIVE is an alias of __GFP_NOTRACK. It's a means of
-
 
168
 *   distinguishing in the source between false positives and allocations that
-
 
169
 *   cannot be supported (e.g. page tables).
-
 
170
 *
-
 
171
 * __GFP_OTHER_NODE is for allocations that are on a remote node but that
-
 
172
 *   should not be accounted for as a remote allocation in vmstat. A
94
 * This may seem redundant, but it's a way of annotating false positives vs.
173
 *   typical user would be khugepaged collapsing a huge page on a remote
-
 
174
 *   node.
-
 
175
 */
-
 
176
#define __GFP_COLD	((__force gfp_t)___GFP_COLD)
-
 
177
#define __GFP_NOWARN	((__force gfp_t)___GFP_NOWARN)
-
 
178
#define __GFP_COMP	((__force gfp_t)___GFP_COMP)
95
 * allocations that simply cannot be supported (e.g. page tables).
179
#define __GFP_ZERO	((__force gfp_t)___GFP_ZERO)
-
 
180
#define __GFP_NOTRACK	((__force gfp_t)___GFP_NOTRACK)
Line 96... Line 181...
96
 */
181
#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
-
 
182
#define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE)
97
#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
183
 
Line -... Line 184...
-
 
184
/* Room for N __GFP_FOO bits */
-
 
185
#define __GFP_BITS_SHIFT 26
98
 
186
#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
99
#define __GFP_BITS_SHIFT 25	/* Room for N __GFP_FOO bits */
187
 
-
 
188
/*
100
#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
189
 * Useful GFP flag combinations that are commonly used. It is recommended
-
 
190
 * that subsystems start with one of these combinations and then set/clear
-
 
191
 * __GFP_FOO flags as necessary.
-
 
192
 *
-
 
193
 * GFP_ATOMIC users can not sleep and need the allocation to succeed. A lower
-
 
194
 *   watermark is applied to allow access to "atomic reserves"
-
 
195
 *
-
 
196
 * GFP_KERNEL is typical for kernel-internal allocations. The caller requires
-
 
197
 *   ZONE_NORMAL or a lower zone for direct access but can direct reclaim.
-
 
198
 *
-
 
199
 * GFP_NOWAIT is for kernel allocations that should not stall for direct
-
 
200
 *   reclaim, start physical IO or use any filesystem callback.
-
 
201
 *
-
 
202
 * GFP_NOIO will use direct reclaim to discard clean pages or slab pages
-
 
203
 *   that do not require the starting of any physical IO.
-
 
204
 *
-
 
205
 * GFP_NOFS will use direct reclaim but will not use any filesystem interfaces.
-
 
206
 *
-
 
207
 * GFP_USER is for userspace allocations that also need to be directly
-
 
208
 *   accessibly by the kernel or hardware. It is typically used by hardware
-
 
209
 *   for buffers that are mapped to userspace (e.g. graphics) that hardware
-
 
210
 *   still must DMA to. cpuset limits are enforced for these allocations.
-
 
211
 *
-
 
212
 * GFP_DMA exists for historical reasons and should be avoided where possible.
-
 
213
 *   The flags indicates that the caller requires that the lowest zone be
-
 
214
 *   used (ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
-
 
215
 *   it would require careful auditing as some users really require it and
-
 
216
 *   others use the flag to avoid lowmem reserves in ZONE_DMA and treat the
-
 
217
 *   lowest zone as a type of emergency reserve.
-
 
218
 *
-
 
219
 * GFP_DMA32 is similar to GFP_DMA except that the caller requires a 32-bit
-
 
220
 *   address.
-
 
221
 *
-
 
222
 * GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
-
 
223
 *   do not need to be directly accessible by the kernel but that cannot
-
 
224
 *   move once in use. An example may be a hardware allocation that maps
-
 
225
 *   data directly into userspace but has no addressing limitations.
-
 
226
 *
-
 
227
 * GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
-
 
228
 *   need direct access to but can use kmap() when access is required. They
-
 
229
 *   are expected to be movable via page reclaim or page migration. Typically,
-
 
230
 *   pages on the LRU would also be allocated with GFP_HIGHUSER_MOVABLE.
-
 
231
 *
101
 
232
 * GFP_TRANSHUGE is used for THP allocations. They are compound allocations
-
 
233
 *   that will fail quickly if memory is not available and will not wake
102
/* This equals 0, but use constants in case they ever change */
234
 *   kswapd on failure.
103
#define GFP_NOWAIT	(GFP_ATOMIC & ~__GFP_HIGH)
235
 */
104
/* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
236
#define GFP_ATOMIC	(__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
105
#define GFP_ATOMIC	(__GFP_HIGH)
237
#define GFP_KERNEL	(__GFP_RECLAIM | __GFP_IO | __GFP_FS)
106
#define GFP_NOIO	(__GFP_WAIT)
238
#define GFP_NOWAIT	(__GFP_KSWAPD_RECLAIM)
107
#define GFP_NOFS	(__GFP_WAIT | __GFP_IO)
239
#define GFP_NOIO	(__GFP_RECLAIM)
-
 
240
#define GFP_NOFS	(__GFP_RECLAIM | __GFP_IO)
-
 
241
#define GFP_TEMPORARY	(__GFP_RECLAIM | __GFP_IO | __GFP_FS | \
108
#define GFP_KERNEL	(__GFP_WAIT | __GFP_IO | __GFP_FS)
242
			 __GFP_RECLAIMABLE)
109
#define GFP_TEMPORARY	(__GFP_WAIT | __GFP_IO | __GFP_FS | \
243
#define GFP_USER	(__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
110
			 __GFP_RECLAIMABLE)
-
 
111
#define GFP_USER	(__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
244
#define GFP_DMA		__GFP_DMA
112
#define GFP_HIGHUSER	(GFP_USER | __GFP_HIGHMEM)
245
#define GFP_DMA32	__GFP_DMA32
113
#define GFP_HIGHUSER_MOVABLE	(GFP_HIGHUSER | __GFP_MOVABLE)
246
#define GFP_HIGHUSER	(GFP_USER | __GFP_HIGHMEM)
114
#define GFP_IOFS	(__GFP_IO | __GFP_FS)
-
 
115
#define GFP_TRANSHUGE	(GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
-
 
116
			 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \
-
 
117
			 __GFP_NO_KSWAPD)
-
 
118
 
-
 
119
/*
-
 
120
 * GFP_THISNODE does not perform any reclaim, you most likely want to
-
 
121
 * use __GFP_THISNODE to allocate from a given node without fallback!
-
 
122
 */
-
 
123
#ifdef CONFIG_NUMA
-
 
Line 124... Line 247...
124
#define GFP_THISNODE	(__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY)
247
#define GFP_HIGHUSER_MOVABLE	(GFP_HIGHUSER | __GFP_MOVABLE)
125
#else
248
#define GFP_TRANSHUGE	((GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
-
 
249
			 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN) & \
Line 126... Line -...
126
#define GFP_THISNODE	((__force gfp_t)0)
-
 
127
#endif
-
 
128
 
-
 
129
/* This mask makes up all the page movable related flags */
-
 
130
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE)
-
 
131
 
-
 
132
/* Control page allocator reclaim behavior */
-
 
133
#define GFP_RECLAIM_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS|\
-
 
134
			__GFP_NOWARN|__GFP_REPEAT|__GFP_NOFAIL|\
-
 
135
			__GFP_NORETRY|__GFP_MEMALLOC|__GFP_NOMEMALLOC)
-
 
136
 
-
 
137
/* Control slab gfp mask during early boot */
-
 
138
#define GFP_BOOT_MASK (__GFP_BITS_MASK & ~(__GFP_WAIT|__GFP_IO|__GFP_FS))
-
 
139
 
-
 
140
/* Control allocation constraints */
-
 
141
#define GFP_CONSTRAINT_MASK (__GFP_HARDWALL|__GFP_THISNODE)
-
 
142
 
-
 
143
/* Do not use these with a slab allocator */
250
			 ~__GFP_KSWAPD_RECLAIM)
144
#define GFP_SLAB_BUG_MASK (__GFP_DMA32|__GFP_HIGHMEM|~__GFP_BITS_MASK)
-
 
145
 
-
 
146
/* Flag - indicates that the buffer will be suitable for DMA.  Ignored on some
251
 
Line -... Line 252...
-
 
252
/* Convert GFP flags to their corresponding migrate type */
-
 
253
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE)
-
 
254
#define GFP_MOVABLE_SHIFT 3
-
 
255
 
Line 147... Line 256...
147
   platforms, used as appropriate on others */
256
#undef GFP_MOVABLE_MASK
148
 
257
#undef GFP_MOVABLE_SHIFT
149
#define GFP_DMA		__GFP_DMA
258
 
150
 
259
static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)