[PATCH] proc: Move proc_maps_operations into task_mmu.c
All of the functions for proc_maps_operations are already defined in task_mmu.c so move the operations structure to keep the functionality together. Since task_nommu.c implements a dummy version of /proc/<pid>/maps give it a simplified version of proc_maps_operations that it can modify to best suit its needs. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
6e66b52bf5
commit
662795deb8
@ -539,67 +539,6 @@ out:
|
||||
goto exit;
|
||||
}
|
||||
|
||||
extern struct seq_operations proc_pid_maps_op;
|
||||
static int maps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct task_struct *task = proc_task(inode);
|
||||
int ret = seq_open(file, &proc_pid_maps_op);
|
||||
if (!ret) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = task;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct file_operations proc_maps_operations = {
|
||||
.open = maps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
extern struct seq_operations proc_pid_numa_maps_op;
|
||||
static int numa_maps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct task_struct *task = proc_task(inode);
|
||||
int ret = seq_open(file, &proc_pid_numa_maps_op);
|
||||
if (!ret) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = task;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct file_operations proc_numa_maps_operations = {
|
||||
.open = numa_maps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
extern struct seq_operations proc_pid_smaps_op;
|
||||
static int smaps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct task_struct *task = proc_task(inode);
|
||||
int ret = seq_open(file, &proc_pid_smaps_op);
|
||||
if (!ret) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = task;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct file_operations proc_smaps_operations = {
|
||||
.open = smaps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
extern struct seq_operations mounts_op;
|
||||
struct proc_mounts {
|
||||
struct seq_file m;
|
||||
|
@ -37,6 +37,10 @@ extern int proc_tgid_stat(struct task_struct *, char *);
|
||||
extern int proc_pid_status(struct task_struct *, char *);
|
||||
extern int proc_pid_statm(struct task_struct *, char *);
|
||||
|
||||
extern struct file_operations proc_maps_operations;
|
||||
extern struct file_operations proc_numa_maps_operations;
|
||||
extern struct file_operations proc_smaps_operations;
|
||||
|
||||
void free_proc_entry(struct proc_dir_entry *de);
|
||||
|
||||
int proc_init_inodecache(void);
|
||||
|
@ -374,27 +374,75 @@ static void *m_next(struct seq_file *m, void *v, loff_t *pos)
|
||||
return (vma != tail_vma)? tail_vma: NULL;
|
||||
}
|
||||
|
||||
struct seq_operations proc_pid_maps_op = {
|
||||
static struct seq_operations proc_pid_maps_op = {
|
||||
.start = m_start,
|
||||
.next = m_next,
|
||||
.stop = m_stop,
|
||||
.show = show_map
|
||||
};
|
||||
|
||||
struct seq_operations proc_pid_smaps_op = {
|
||||
static struct seq_operations proc_pid_smaps_op = {
|
||||
.start = m_start,
|
||||
.next = m_next,
|
||||
.stop = m_stop,
|
||||
.show = show_smap
|
||||
};
|
||||
|
||||
static int do_maps_open(struct inode *inode, struct file *file,
|
||||
struct seq_operations *ops)
|
||||
{
|
||||
struct task_struct *task = proc_task(inode);
|
||||
int ret = seq_open(file, ops);
|
||||
if (!ret) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = task;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int maps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return do_maps_open(inode, file, &proc_pid_maps_op);
|
||||
}
|
||||
|
||||
struct file_operations proc_maps_operations = {
|
||||
.open = maps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
extern int show_numa_map(struct seq_file *m, void *v);
|
||||
|
||||
struct seq_operations proc_pid_numa_maps_op = {
|
||||
static struct seq_operations proc_pid_numa_maps_op = {
|
||||
.start = m_start,
|
||||
.next = m_next,
|
||||
.stop = m_stop,
|
||||
.show = show_numa_map
|
||||
};
|
||||
|
||||
static int numa_maps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return do_maps_open(inode, file, &proc_pid_numa_maps_op);
|
||||
}
|
||||
|
||||
struct file_operations proc_numa_maps_operations = {
|
||||
.open = numa_maps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static int smaps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return do_maps_open(inode, file, &proc_pid_smaps_op);
|
||||
}
|
||||
|
||||
struct file_operations proc_smaps_operations = {
|
||||
.open = smaps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
@ -156,9 +156,28 @@ static void *m_next(struct seq_file *m, void *v, loff_t *pos)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
struct seq_operations proc_pid_maps_op = {
|
||||
static struct seq_operations proc_pid_maps_op = {
|
||||
.start = m_start,
|
||||
.next = m_next,
|
||||
.stop = m_stop,
|
||||
.show = show_map
|
||||
};
|
||||
|
||||
static int maps_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
int ret;
|
||||
ret = seq_open(file, &proc_pid_maps_op);
|
||||
if (!ret) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct file_operations proc_maps_operations = {
|
||||
.open = maps_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user