summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMartin Baulig <martin@home-of-linux.org>1998-08-12 20:16:24 +0000
committerMartin Baulig <martin@src.gnome.org>1998-08-12 20:16:24 +0000
commit9248d72018249f8a1388a4d760bbddfc0cb84219 (patch)
tree344642635ad1f221a7abf0dfb3c2a195e78e59f6 /kernel
parentda622f70c7f6067b0f55ab098ebd24c8d8a8963e (diff)
downloadlibgtop-9248d72018249f8a1388a4d760bbddfc0cb84219.tar.gz
Using `text_rss', `shlib_rss', `data_rss' and `dirty_size' instead of
1998-08-12 Martin Baulig <martin@home-of-linux.org> * include/glibtop/procsegment.h (glibtop_proc_segment): Using `text_rss', `shlib_rss', `data_rss' and `dirty_size' instead of `tsr', `lrs', `drs' and `dt'. New field `stack_rss'. * sysdeps/linux/procmem.c: Memory sizes now correctly in bytes. * sysdeps/linux/procsegment.c: Dito. * sysdeps/kernel/procsegment.c: Stack pages are reported via `stack_rss' and no longer count towards `data_rss' * kernel/table.h (table_proc_segment): Added `srs' field. * kernel/table21/module.c (TBL_PROC_SEGMENT): Added kernel support for this. * sysdeps/{linux, kernel, stub}/procmap.c: New files.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/table.h4
-rw-r--r--kernel/table21/module.c31
2 files changed, 18 insertions, 17 deletions
diff --git a/kernel/table.h b/kernel/table.h
index 9136f537..6dac48d4 100644
--- a/kernel/table.h
+++ b/kernel/table.h
@@ -117,8 +117,8 @@ struct table_proc_mem
struct table_proc_segment
{
unsigned long vsize;
- int size, resident, shared;
- int trs, lrs, drs, dt;
+ unsigned long size, resident, shared;
+ unsigned long trs, lrs, drs, srs, dt;
};
struct table_proc_time
diff --git a/kernel/table21/module.c b/kernel/table21/module.c
index 77ff898a..9b55eca6 100644
--- a/kernel/table21/module.c
+++ b/kernel/table21/module.c
@@ -473,7 +473,7 @@ table_fkt (int type, union table *buf, const void *param)
if (tsk->mm && tsk->mm != &init_mm) {
unsigned long vsize = 0;
int size = 0, resident = 0, share = 0;
- int trs = 0, lrs = 0, drs = 0, dt = 0;
+ int trs = 0, lrs = 0, drs = 0, srs = 0, dt = 0;
struct vm_area_struct * vma = tsk->mm->mmap;
while (vma) {
@@ -486,27 +486,26 @@ table_fkt (int type, union table *buf, const void *param)
&pages, &shared, &dirty, &total);
-#if 0
- printk ("vma %p (%d) - %d, %d, %d, %d - "
- "%lx - %lx, %lx - %lx - %lx\n",
- vma, pid, pages, shared, dirty, total,
- PAGE_SIZE, vma->vm_start, vma->vm_end,
- vma->vm_end - vma->vm_start,
- (vma->vm_end - vma->vm_start) >> PAGE_SHIFT);
-#endif
-
resident += pages;
share += shared;
dt += dirty;
size += total;
- if (vma->vm_flags & VM_EXECUTABLE)
- trs += pages; /* text */
- else if (vma->vm_flags & VM_GROWSDOWN)
- drs += pages; /* stack */
- else if (vma->vm_end > 0x60000000)
+
+ /* Well, shared library seem to get mapped
+ * above 0x40000000 and are executable,
+ * so I use this hack to get their size.
+ */
+
+ if (vma->vm_flags & VM_GROWSDOWN)
+ srs += pages; /* stack */
+ else if ((vma->vm_flags & VM_EXEC) &&
+ (vma->vm_start > 0x40000000))
lrs += pages; /* library */
+ else if (vma->vm_flags & VM_EXECUTABLE)
+ trs += pages; /* text */
else
drs += pages;
+
vma = vma->vm_next;
}
@@ -516,6 +515,8 @@ table_fkt (int type, union table *buf, const void *param)
tbl.proc_segment.shared = share << PAGE_SHIFT;
tbl.proc_segment.trs = trs << PAGE_SHIFT;
tbl.proc_segment.lrs = lrs << PAGE_SHIFT;
+ tbl.proc_segment.drs = drs << PAGE_SHIFT;
+ tbl.proc_segment.srs = srs << PAGE_SHIFT;
tbl.proc_segment.dt = dt << PAGE_SHIFT;
}
break;