From: Fengguang Wu <wfg@mail.ustc.edu.cn>
To: Andrew Morton <akpm@osdl.org>
Cc: Matt Mackall <mpm@selenic.com>
Cc: John Berthels <jjberthels@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] maps: introduce generic_maps_open()
Date: Fri, 17 Aug 2007 06:05:19 +0800 [thread overview]
Message-ID: <387302129.27270@ustc.edu.cn> (raw)
Message-ID: <20070816220849.313377588@mail.ustc.edu.cn> (raw)
In-Reply-To: 20070816220516.782145952@mail.ustc.edu.cn
[-- Attachment #1: maps-generic-open.patch --]
[-- Type: text/plain, Size: 1873 bytes --]
Introduce generic_maps_open(). It is an extended version of do_maps_open().
The new function supports batch_size and custom sized seqfile/private buffers.
This function will be reused by pmaps.
Cc: Matt Mackall <mpm@selenic.com>
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
---
fs/proc/task_mmu.c | 51 ++++++++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 15 deletions(-)
--- linux-2.6.23-rc2-mm2.orig/fs/proc/task_mmu.c
+++ linux-2.6.23-rc2-mm2/fs/proc/task_mmu.c
@@ -178,24 +178,45 @@ static void m_stop(struct seq_file *m, v
put_task_struct(priv->task);
}
+static int generic_maps_open(struct inode *inode, struct file *file,
+ struct seq_operations *ops, unsigned long batch_size,
+ int bufsize, int privsize)
+{
+ struct seq_file *m;
+ struct proc_maps_private *priv = NULL;
+ char *buf = NULL;
+ int ret = -ENOMEM;
+
+ priv = kzalloc(privsize, GFP_KERNEL);
+ if (!priv)
+ goto out;
+
+ buf = kmalloc(bufsize, GFP_KERNEL);
+ if (!buf)
+ goto out;
+
+ ret = seq_open(file, ops);
+ if (ret)
+ goto out;
+
+ m = file->private_data;
+ m->private = priv;
+ m->buf = buf;
+ m->size = bufsize;
+ priv->pid = proc_pid(inode);
+ priv->batch_size = batch_size;
+ return 0;
+out:
+ kfree(priv);
+ kfree(buf);
+ return ret;
+}
+
static int do_maps_open(struct inode *inode, struct file *file,
struct seq_operations *ops)
{
- struct proc_maps_private *priv;
- int ret = -ENOMEM;
- priv = kzalloc(sizeof(*priv), GFP_KERNEL);
- if (priv) {
- priv->pid = proc_pid(inode);
- priv->batch_size = ~0;
- ret = seq_open(file, ops);
- if (!ret) {
- struct seq_file *m = file->private_data;
- m->private = priv;
- } else {
- kfree(priv);
- }
- }
- return ret;
+ return generic_maps_open(inode, file, ops, ~0, 2 * PAGE_SIZE,
+ sizeof(struct proc_maps_private));
}
static int show_map(struct seq_file *m, void *v)
--
next prev parent reply other threads:[~2007-08-16 22:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070816220516.782145952@mail.ustc.edu.cn>
2007-08-16 22:05 ` [PATCH 0/4] process memory footprints in proc/<pid>/[s|p]maps Fengguang Wu
[not found] ` <20070816220849.192029043@mail.ustc.edu.cn>
2007-08-16 22:05 ` [PATCH 2/4] maps: address based vma walking Fengguang Wu
2007-08-17 2:16 ` Matt Mackall
[not found] ` <20070817025454.GB5521@mail.ustc.edu.cn>
2007-08-17 2:54 ` Fengguang Wu
[not found] ` <20070816220849.313377588@mail.ustc.edu.cn>
2007-08-16 22:05 ` Fengguang Wu [this message]
[not found] ` <20070816220849.472883642@mail.ustc.edu.cn>
2007-08-16 22:05 ` [PATCH 4/4] maps: /proc/<pid>/pmaps interface - memory maps in granularity of pages Fengguang Wu
2007-08-17 2:38 ` Matt Mackall
[not found] ` <20070817034437.GC5521@mail.ustc.edu.cn>
2007-08-17 3:44 ` Fengguang Wu
2007-08-17 3:56 ` Matt Mackall
[not found] ` <20070817064727.GA6723@mail.ustc.edu.cn>
2007-08-17 6:47 ` Fengguang Wu
2007-08-17 16:58 ` Matt Mackall
[not found] ` <20070818024831.GA7856@mail.ustc.edu.cn>
2007-08-18 2:48 ` Fengguang Wu
2007-08-18 6:40 ` Matt Mackall
[not found] ` <20070818103146.GA6744@mail.ustc.edu.cn>
2007-08-18 10:31 ` Fengguang Wu
[not found] ` <20070818084531.GB5277@mail.ustc.edu.cn>
2007-08-18 8:45 ` Fengguang Wu
2007-08-18 17:22 ` Matt Mackall
[not found] ` <20070819004008.GA5297@mail.ustc.edu.cn>
2007-08-19 0:40 ` Fengguang Wu
[not found] ` <20070816220849.064901548@mail.ustc.edu.cn>
2007-08-16 22:05 ` [PATCH 1/4] maps: PSS(proportional set size) accounting in smaps Fengguang Wu
2007-08-17 2:13 ` Matt Mackall
[not found] ` <20070817024443.GA5521@mail.ustc.edu.cn>
2007-08-17 2:44 ` Fengguang Wu
[not found] <20070819075410.411207640@mail.ustc.edu.cn>
[not found] ` <20070819075547.674060890@mail.ustc.edu.cn>
2007-08-19 7:54 ` [PATCH 3/4] maps: introduce generic_maps_open() Fengguang Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=387302129.27270@ustc.edu.cn \
--to=wfg@mail.ustc.edu.cn \
--cc=akpm@osdl.org \
--cc=mpm@selenic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox