public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC] procfs: Add VmFlags field in smaps output
@ 2012-10-18  9:55 Cyrill Gorcunov
  2012-10-18 10:31 ` Cyrill Gorcunov
  0 siblings, 1 reply; 5+ messages in thread
From: Cyrill Gorcunov @ 2012-10-18  9:55 UTC (permalink / raw)
  To: LKML; +Cc: Pavel Emelyanov, Andrew Morton, Peter Zijlstra

Hi guys, in a sake of c/r we need to fetch additional
VMA characteristics, so I though would /proc/pid/smaps
be appropriate place for it? If yes, I would like to
know if the output format provided below looks reasonable.

Please review, thanks!
---
From: Cyrill Gorcunov <gorcunov@openvz.org>
Subject: [RFC] procfs: Add VmFlags field in smaps output

When we do restore VMA area after checkpoint
we would like to know if the area was locked
or say it has mergeable attribute, but at moment
the kernel does not provide such information, thus
we can't figure out if we should call mlock/madvise
on VMA restore.

This patch adds new VmFlags field to smaps output
with vma->vm_flags encoded.

This field is CONFIG_CHECKPOINT_RESTORE dependent
since at moment I don't know if someone else might
need it.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Pavel Emelyanov <xemul@parallels.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 fs/proc/task_mmu.c |   40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

Index: linux-2.6.git/fs/proc/task_mmu.c
===================================================================
--- linux-2.6.git.orig/fs/proc/task_mmu.c
+++ linux-2.6.git/fs/proc/task_mmu.c
@@ -480,6 +480,44 @@ static int smaps_pte_range(pmd_t *pmd, u
 	return 0;
 }
 
+#ifdef CONFIG_CHECKPOINT_RESTORE
+static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)
+{
+	seq_puts(m, "VmFlags:              ");
+
+	if (vma->vm_flags & VM_LOCKED)
+		seq_puts(m, " locked");
+
+	if (vma->vm_flags & VM_GROWSDOWN)
+		seq_puts(m, " growsdown");
+
+	if (vma->vm_flags & VM_RAND_READ)
+		seq_puts(m, " rand_read");
+
+	if (vma->vm_flags & VM_SEQ_READ)
+		seq_puts(m, " seq_read");
+
+	if (vma->vm_flags & VM_DONTCOPY)
+		seq_puts(m, " dontcopy");
+
+	if (vma->vm_flags & VM_MERGEABLE)
+		seq_puts(m, " mergeable");
+
+	if (vma->vm_flags & VM_HUGEPAGE)
+		seq_puts(m, " hugepage");
+
+	if (vma->vm_flags & VM_NOHUGEPAGE)
+		seq_puts(m, " nohugepage");
+
+	if (vma->vm_flags & VM_DONTDUMP)
+		seq_puts(m, " dontdump");
+
+	seq_putc(m, '\n');
+}
+#else
+static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) { }
+#endif
+
 static int show_smap(struct seq_file *m, void *v, int is_pid)
 {
 	struct proc_maps_private *priv = m->private;
@@ -535,6 +573,8 @@ static int show_smap(struct seq_file *m,
 		seq_printf(m, "Nonlinear:      %8lu kB\n",
 				mss.nonlinear >> 10);
 
+	show_smap_vma_flags(m, vma);
+
 	if (m->count < m->size)  /* vma is copied successfully */
 		m->version = (vma != get_gate_vma(task->mm))
 			? vma->vm_start : 0;

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-10-19  9:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-18  9:55 [RFC] procfs: Add VmFlags field in smaps output Cyrill Gorcunov
2012-10-18 10:31 ` Cyrill Gorcunov
2012-10-18 21:02   ` Andrew Morton
2012-10-18 21:28     ` Cyrill Gorcunov
2012-10-19  9:45       ` Cyrill Gorcunov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox