*** array.c Thu Aug 16 16:33:56 2001 --- array.c.orig Mon Mar 19 21:34:55 2001 *************** *** 50,61 **** * Al Viro & Jeff Garzik : moved most of the thing into base.c and * : proc_misc.c. The rest may eventually go into * : base.c too. - * - * Terje Eggestad : added in /proc//status a VmClones: n - * : that tells how many proc that uses the same VM (mm_struct). - * : if there are clones add another field VmFirstClone with the - * : clone with the lowest pid. Needed for things like gtop that adds - * : mem usage of groups of proc, or else they add up the usage of threads. */ #include --- 50,55 ---- *************** *** 184,190 **** static inline char * task_mem(struct mm_struct *mm, char *buffer) { struct vm_area_struct * vma; ! unsigned long data = 0, stack = 0; unsigned long exec = 0, lib = 0; down_read(&mm->mmap_sem); --- 178,184 ---- static inline char * task_mem(struct mm_struct *mm, char *buffer) { struct vm_area_struct * vma; ! unsigned long data = 0, stack = 0; unsigned long exec = 0, lib = 0; down_read(&mm->mmap_sem); *************** *** 212,235 **** "VmData:\t%8lu kB\n" "VmStk:\t%8lu kB\n" "VmExe:\t%8lu kB\n" ! "VmLib:\t%8lu kB\n" ! "VmClones:\t%d\n", mm->total_vm << (PAGE_SHIFT-10), mm->locked_vm << (PAGE_SHIFT-10), mm->rss << (PAGE_SHIFT-10), data - stack, stack, ! exec - lib, lib, ! mm->mm_users.counter-2); ! /* if we've vm clones, find the lowest/first pid of the clones */ ! if (mm->mm_users.counter > 2) { ! struct task_struct *p; ! read_lock(&tasklist_lock); ! for_each_task(p) { ! if (p->mm == mm) break; ! }; ! buffer += sprintf(buffer, "VmFirstClone:\t%d\n", p->pid); ! read_unlock(&tasklist_lock); ! }; up_read(&mm->mmap_sem); return buffer; } --- 206,217 ---- "VmData:\t%8lu kB\n" "VmStk:\t%8lu kB\n" "VmExe:\t%8lu kB\n" ! "VmLib:\t%8lu kB\n", mm->total_vm << (PAGE_SHIFT-10), mm->locked_vm << (PAGE_SHIFT-10), mm->rss << (PAGE_SHIFT-10), data - stack, stack, ! exec - lib, lib); up_read(&mm->mmap_sem); return buffer; }