Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d90508f authored by Nikanth Karthikesan's avatar Nikanth Karthikesan Committed by Linus Torvalds
Browse files

mm: smaps: export mlock information



Currently there is no way to find whether a process has locked its pages
in memory or not.  And which of the memory regions are locked in memory.

Add a new field "Locked" to export this information via the smaps file.

Signed-off-by: default avatarNikanth Karthikesan <knikanth@suse.de>
Acked-by: default avatarBalbir Singh <balbir@linux.vnet.ibm.com>
Acked-by: default avatarWu Fengguang <fengguang.wu@intel.com>
Cc: Matt Mackall <mpm@selenic.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 62c70bce
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -375,6 +375,7 @@ Anonymous: 0 kB
Swap:                  0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
MMUPageSize:           4 kB
Locked:              374 kB


The first of these lines shows the same information as is displayed for the
The first of these lines shows the same information as is displayed for the
mapping in /proc/PID/maps.  The remaining lines show the size of the mapping
mapping in /proc/PID/maps.  The remaining lines show the size of the mapping
@@ -670,6 +671,8 @@ varies by architecture and compile options. The following is from a


> cat /proc/meminfo
> cat /proc/meminfo


The "Locked" indicates whether the mapping is locked in memory or not.



MemTotal:     16344972 kB
MemTotal:     16344972 kB
MemFree:      13634064 kB
MemFree:      13634064 kB
+5 −2
Original line number Original line Diff line number Diff line
@@ -418,7 +418,8 @@ static int show_smap(struct seq_file *m, void *v)
		   "Anonymous:      %8lu kB\n"
		   "Anonymous:      %8lu kB\n"
		   "Swap:           %8lu kB\n"
		   "Swap:           %8lu kB\n"
		   "KernelPageSize: %8lu kB\n"
		   "KernelPageSize: %8lu kB\n"
		   "MMUPageSize:    %8lu kB\n",
		   "MMUPageSize:    %8lu kB\n"
		   "Locked:         %8lu kB\n",
		   (vma->vm_end - vma->vm_start) >> 10,
		   (vma->vm_end - vma->vm_start) >> 10,
		   mss.resident >> 10,
		   mss.resident >> 10,
		   (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
		   (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
@@ -430,7 +431,9 @@ static int show_smap(struct seq_file *m, void *v)
		   mss.anonymous >> 10,
		   mss.anonymous >> 10,
		   mss.swap >> 10,
		   mss.swap >> 10,
		   vma_kernel_pagesize(vma) >> 10,
		   vma_kernel_pagesize(vma) >> 10,
		   vma_mmu_pagesize(vma) >> 10);
		   vma_mmu_pagesize(vma) >> 10,
		   (vma->vm_flags & VM_LOCKED) ?
			(unsigned long)(mss.pss >> (10 + PSS_SHIFT)) : 0);


	if (m->count < m->size)  /* vma is copied successfully */
	if (m->count < m->size)  /* vma is copied successfully */
		m->version = (vma != get_gate_vma(task)) ? vma->vm_start : 0;
		m->version = (vma != get_gate_vma(task)) ? vma->vm_start : 0;