---
This patch provides the arch independent code to create the
physmem view in the proc file system. /proc/physmem
reflects the entire RAM resources that present in the system.
Even if the system has been booted with mem= or memmap= options,
this view will reflect the complete physical memory map.

---

Signed-off-by: Hariprasad Nellitheertha <[EMAIL PROTECTED]>
---

 linux-2.6.12-rc1-hari/kernel/resource.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+)

diff -puN kernel/resource.c~physmem-common kernel/resource.c
--- linux-2.6.12-rc1/kernel/resource.c~physmem-common   2005-03-23 
17:48:02.000000000 +0530
+++ linux-2.6.12-rc1-hari/kernel/resource.c     2005-03-23 17:48:02.000000000 
+0530
@@ -39,6 +39,15 @@ struct resource iomem_resource = {
 
 EXPORT_SYMBOL(iomem_resource);
 
+struct resource physmem_resource = {
+       .name   = "Phys mem",
+       .start  = 0ULL,
+       .end    = ~0ULL,
+       .flags  = IORESOURCE_MEM,
+};
+
+EXPORT_SYMBOL(physmem_resource);
+
 static DEFINE_RWLOCK(resource_lock);
 
 #ifdef CONFIG_PROC_FS
@@ -118,6 +127,16 @@ static int iomem_open(struct inode *inod
        return res;
 }
 
+static int physmem_open(struct inode *inode, struct file *file)
+{
+       int res = seq_open(file, &resource_op);
+       if (!res) {
+               struct seq_file *m = file->private_data;
+               m->private = &physmem_resource;
+       }
+       return res;
+}
+
 static struct file_operations proc_ioports_operations = {
        .open           = ioports_open,
        .read           = seq_read,
@@ -132,6 +151,13 @@ static struct file_operations proc_iomem
        .release        = seq_release,
 };
 
+static struct file_operations proc_physmem_operations = {
+       .open           = physmem_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+       .release        = seq_release,
+};
+
 static int __init ioresources_init(void)
 {
        struct proc_dir_entry *entry;
@@ -142,6 +168,9 @@ static int __init ioresources_init(void)
        entry = create_proc_entry("iomem", 0, NULL);
        if (entry)
                entry->proc_fops = &proc_iomem_operations;
+       entry = create_proc_entry("physmem", 0, NULL);
+       if (entry)
+               entry->proc_fops = &proc_physmem_operations;
        return 0;
 }
 __initcall(ioresources_init);
_

Reply via email to