|
@@ -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,
|
|
|
+};
|