File tree Expand file tree Collapse file tree 4 files changed +28
-11
lines changed
Documentation/filesystems Expand file tree Collapse file tree 4 files changed +28
-11
lines changed Original file line number Diff line number Diff line change @@ -240,8 +240,8 @@ Table 1-2: Contents of the status files (as of 4.1)
240
240
RssFile size of resident file mappings
241
241
RssShmem size of resident shmem memory (includes SysV shm,
242
242
mapping of tmpfs and shared anonymous mappings)
243
- VmData size of data, stack, and text segments
244
- VmStk size of data, stack, and text segments
243
+ VmData size of private data segments
244
+ VmStk size of stack segments
245
245
VmExe size of text segment
246
246
VmLib size of shared library code
247
247
VmPTE size of page table entries
Original file line number Diff line number Diff line change @@ -201,11 +201,13 @@ extern unsigned int kobjsize(const void *objp);
201
201
#endif
202
202
203
203
#ifdef CONFIG_STACK_GROWSUP
204
- #define VM_STACK_FLAGS ( VM_GROWSUP | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT)
204
+ #define VM_STACK VM_GROWSUP
205
205
#else
206
- #define VM_STACK_FLAGS ( VM_GROWSDOWN | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT)
206
+ #define VM_STACK VM_GROWSDOWN
207
207
#endif
208
208
209
+ #define VM_STACK_FLAGS (VM_STACK | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT)
210
+
209
211
/*
210
212
* Special vmas that are non-mergable, non-mlock()able.
211
213
* Note: mm/huge_memory.c VM_NO_THP depends on this definition.
Original file line number Diff line number Diff line change @@ -424,9 +424,9 @@ struct mm_struct {
424
424
unsigned long total_vm ; /* Total pages mapped */
425
425
unsigned long locked_vm ; /* Pages that have PG_mlocked set */
426
426
unsigned long pinned_vm ; /* Refcount permanently increased */
427
- unsigned long data_vm ; /* VM_WRITE & ~VM_SHARED/GROWSDOWN */
428
- unsigned long exec_vm ; /* VM_EXEC & ~VM_WRITE */
429
- unsigned long stack_vm ; /* VM_GROWSUP/DOWN */
427
+ unsigned long data_vm ; /* VM_WRITE & ~VM_SHARED & ~VM_STACK */
428
+ unsigned long exec_vm ; /* VM_EXEC & ~VM_WRITE & ~VM_STACK */
429
+ unsigned long stack_vm ; /* VM_STACK */
430
430
unsigned long def_flags ;
431
431
unsigned long start_code , end_code , start_data , end_data ;
432
432
unsigned long start_brk , brk , start_stack ;
Original file line number Diff line number Diff line change @@ -216,20 +216,35 @@ static inline bool is_cow_mapping(vm_flags_t flags)
216
216
return (flags & (VM_SHARED | VM_MAYWRITE )) == VM_MAYWRITE ;
217
217
}
218
218
219
+ /*
220
+ * These three helpers classifies VMAs for virtual memory accounting.
221
+ */
222
+
223
+ /*
224
+ * Executable code area - executable, not writable, not stack
225
+ */
219
226
static inline bool is_exec_mapping (vm_flags_t flags )
220
227
{
221
- return (flags & (VM_EXEC | VM_WRITE )) == VM_EXEC ;
228
+ return (flags & (VM_EXEC | VM_WRITE | VM_STACK )) == VM_EXEC ;
222
229
}
223
230
231
+ /*
232
+ * Stack area - atomatically grows in one direction
233
+ *
234
+ * VM_GROWSUP / VM_GROWSDOWN VMAs are always private anonymous:
235
+ * do_mmap() forbids all other combinations.
236
+ */
224
237
static inline bool is_stack_mapping (vm_flags_t flags )
225
238
{
226
- return (flags & ( VM_STACK_FLAGS & ( VM_GROWSUP | VM_GROWSDOWN ))) != 0 ;
239
+ return (flags & VM_STACK ) == VM_STACK ;
227
240
}
228
241
242
+ /*
243
+ * Data area - private, writable, not stack
244
+ */
229
245
static inline bool is_data_mapping (vm_flags_t flags )
230
246
{
231
- return (flags & ((VM_STACK_FLAGS & (VM_GROWSUP | VM_GROWSDOWN )) |
232
- VM_WRITE | VM_SHARED )) == VM_WRITE ;
247
+ return (flags & (VM_WRITE | VM_SHARED | VM_STACK )) == VM_WRITE ;
233
248
}
234
249
235
250
/* mm/util.c */
You can’t perform that action at this time.
0 commit comments