original_kernel/fs
Mauricio Lin e070ad49f3 [PATCH] add /proc/pid/smaps
Add a "smaps" entry to /proc/pid: show howmuch memory is resident in each
mapping.

People that want to perform a memory consumption analysing can use it
mainly if someone needs to figure out which libraries can be reduced for
embedded systems.  So the new features are the physical size of shared and
clean [or dirty]; private and clean [or dirty].

Take a look the example below:

# cat /proc/4576/smaps

08048000-080dc000 r-xp /bin/bash
Size:               592 KB
Rss:                500 KB
Shared_Clean:       500 KB
Shared_Dirty:         0 KB
Private_Clean:        0 KB
Private_Dirty:        0 KB
080dc000-080e2000 rw-p /bin/bash
Size:                24 KB
Rss:                 24 KB
Shared_Clean:         0 KB
Shared_Dirty:         0 KB
Private_Clean:        0 KB
Private_Dirty:       24 KB
080e2000-08116000 rw-p
Size:               208 KB
Rss:                208 KB
Shared_Clean:         0 KB
Shared_Dirty:         0 KB
Private_Clean:        0 KB
Private_Dirty:      208 KB
b7e2b000-b7e34000 r-xp /lib/tls/libnss_files-2.3.2.so
Size:                36 KB
Rss:                 12 KB
Shared_Clean:        12 KB
Shared_Dirty:         0 KB
Private_Clean:        0 KB
Private_Dirty:        0 KB
...

(Includes a cleanup from "Richard Purdie" <rpurdie@rpsys.net>)

From: Torsten Foertsch <torsten.foertsch@gmx.net>

show_smap calls first show_map and then prints its additional information to
the seq_file.  show_map checks if all it has to print fits into the buffer and
if yes marks the current vma as written.  While that is correct for show_map
it is not for show_smap.  Here the vma should be marked as written only after
the additional information is also written.

The attached patch cures the problem.  It moves the functionality of the
show_map function to a new function show_map_internal that is called with an
additional struct mem_size_stats* argument.  Then show_map calls
show_map_internal with NULL as struct mem_size_stats* whereas show_smap calls
it with a real pointer.  Now the final

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

is done only if the whole entry fits into the buffer.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:05:49 -07:00
..
adfs [ARM] fs/adfs/adfs.h: "extern inline" doesn't make sense 2005-08-20 17:20:28 +01:00
affs
afs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
autofs Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
autofs4 [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
befs befs: fix up missed follow_link declaration change 2005-08-20 13:20:01 -07:00
bfs
cifs [PATCH] Fix oops in fs/locks.c on close of file with pending locks 2005-08-26 16:05:35 -07:00
coda
cramfs
debugfs
devfs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
devpts
efs
exportfs
ext2 Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
ext3 Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
fat
freevxfs [PATCH] freevxfs: fix breakage introduced by symlink fixes 2005-08-20 14:30:50 -07:00
hfs [PATCH] hfs: don't reference missing page 2005-08-01 21:38:00 -07:00
hfsplus [PATCH] hfs: don't reference missing page 2005-08-01 21:38:00 -07:00
hostfs [PATCH] uml: implement hostfs syncing 2005-07-28 21:46:05 -07:00
hpfs
hppfs [PATCH] hppfs: fix symlink error path 2005-08-26 11:39:19 -07:00
hugetlbfs
isofs Check input buffer size in zisofs 2005-08-06 09:42:06 -07:00
jbd
jffs [PATCH] Fix missing refrigerator invocation in jffs2 2005-07-27 16:25:49 -07:00
jffs2 [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
jfs Merge refs/heads/for-linus from master.kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git 2005-08-30 07:47:42 -07:00
lockd
minix
msdos
ncpfs
nfs [PATCH] NFSv4: unbalanced BKL in nfs_atomic_lookup() 2005-08-19 18:44:56 -07:00
nfs_common [PATCH] NFS: Ensure ACL xdr code doesn't overflow. 2005-08-16 08:52:11 -07:00
nfsd [PATCH] nfsd to unlock kernel before exiting 2005-08-17 12:53:05 -07:00
nls
ntfs NTFS: Complete the previous fix for the unset device when mapping buffers 2005-08-16 19:42:56 +01:00
openpromfs
partitions
proc [PATCH] add /proc/pid/smaps 2005-09-05 00:05:49 -07:00
qnx4
ramfs
reiserfs [PATCH] reiserfs+acl+quota deadlock fix 2005-08-18 12:53:57 -07:00
romfs
smbfs [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
sysfs [PATCH] Fix oops in sysfs_hash_and_remove_file() 2005-08-26 19:37:13 -07:00
sysv [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
udf
ufs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
umsdos
vfat
xfs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
Kconfig [PATCH] inotify: update help text 2005-08-04 13:11:15 -07:00
Kconfig.binfmt
Makefile
aio.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf.c
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c [PATCH] uclinux: use MAP_PRIVATE when mmaping code regions in flat binary loader 2005-09-02 00:57:31 -07:00
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio.c [PATCH] __bio_clone() dead comment 2005-08-07 10:00:38 -07:00
block_dev.c
buffer.c
char_dev.c
compat.c
compat_ioctl.c
dcache.c [PATCH] fsnotify_name/inoderemove 2005-08-08 11:53:47 -07:00
dcookies.c
direct-io.c
dnotify.c
dquot.c
eventpoll.c
exec.c
fcntl.c [PATCH] stale POSIX lock handling 2005-07-27 16:26:06 -07:00
fifo.c
file.c
file_table.c
filesystems.c
fs-writeback.c
inode.c
inotify.c [PATCH] Document idr_get_new_above() semantics, update inotify 2005-08-26 11:32:57 -07:00
ioctl.c
ioprio.c Don't allow normal users to set idle IO priority 2005-08-20 18:51:29 -07:00
libfs.c
locks.c [PATCH] stale POSIX lock handling 2005-07-27 16:26:06 -07:00
mbcache.c [PATCH] mbcache: Remove unused mb_cache_shrink parameter 2005-07-27 16:26:07 -07:00
mpage.c
namei.c Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
namespace.c [PATCH] namespace.c: fix bind mount from foreign namespace 2005-08-07 10:00:38 -07:00
nfsctl.c
open.c
pipe.c
posix_acl.c
quota.c
quota_v1.c
quota_v2.c
read_write.c
readdir.c
select.c
seq_file.c
stat.c
super.c
xattr.c
xattr_acl.c