From:
Make smaps output match the maps output, as smaps was not showing info like
which map was heap and stack etc. The code is smaller also, as show_smap()
now just calls show_map().
Signed-off-by: Andrew Morton
---
fs/proc/task_mmu.c | 21 +++++----------------
1 files changed, 5 insertions(+), 16 deletions(-)
diff -puN fs/proc/task_mmu.c~smaps-print-more-fields fs/proc/task_mmu.c
--- devel/fs/proc/task_mmu.c~smaps-print-more-fields 2005-07-12 17:18:17.000000000 -0700
+++ devel-akpm/fs/proc/task_mmu.c 2005-07-12 17:18:17.000000000 -0700
@@ -123,9 +123,9 @@ static int show_map(struct seq_file *m,
* Print the dentry name for named mappings, and a
* special [heap] marker for the heap:
*/
- if (vma->vm_file) {
+ if (file) {
pad_len_spaces(m, len);
- seq_path(m, file->f_vfsmnt, file->f_dentry, "");
+ seq_path(m, file->f_vfsmnt, file->f_dentry, "\n");
} else {
if (mm) {
if (vma->vm_start <= mm->start_brk &&
@@ -247,32 +247,21 @@ static inline void smaps_pgd_range(struc
static int show_smap(struct seq_file *m, void *v)
{
struct vm_area_struct *vma = v;
- struct file *file = vma->vm_file;
- int flags = vma->vm_flags;
struct mm_struct *mm = vma->vm_mm;
unsigned long vma_len = (vma->vm_end - vma->vm_start);
struct mem_size_stats mss;
memset(&mss, 0, sizeof mss);
+ show_map(m, v);
+
if (mm) {
spin_lock(&mm->page_table_lock);
smaps_pgd_range(vma, vma->vm_start, vma->vm_end, &mss);
spin_unlock(&mm->page_table_lock);
}
- seq_printf(m, "%08lx-%08lx %c%c%c%c ",
- vma->vm_start,
- vma->vm_end,
- flags & VM_READ ? 'r' : '-',
- flags & VM_WRITE ? 'w' : '-',
- flags & VM_EXEC ? 'x' : '-',
- flags & VM_MAYSHARE ? 's' : 'p');
-
- if (vma->vm_file)
- seq_path(m, file->f_vfsmnt, file->f_dentry, " \t\n\\");
-
- seq_printf(m, "\n"
+ seq_printf(m,
"Size: %8lu kB\n"
"Rss: %8lu kB\n"
"Shared_Clean: %8lu kB\n"
_