lkml.org 
[lkml]   [2004]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[4/7] Xen VMM #3: ARCH_HAS_DEV_MEM
    Date
    From

    This patch adds ARCH_HAS_DEV_MEM, enabling per-architecture
    implementations of /dev/mem and thus avoids a number of messy
    #ifdef's. In arch xen we need to use different functions for mapping
    bus vs physical addresses. This allows the X server and dmidecode etc
    to work as per normal.

    Signed-off-by: ian.pratt@cl.cam.ac.uk

    ---


    diff -Nurp pristine-linux-2.6.10-rc2/drivers/char/mem.c tmp-linux-2.6.10-rc2-xen.patch/drivers/char/mem.c
    --- pristine-linux-2.6.10-rc2/drivers/char/mem.c 2004-11-30 01:19:43.000000000 +0000
    +++ tmp-linux-2.6.10-rc2-xen.patch/drivers/char/mem.c 2004-11-30 01:42:12.000000000 +0000
    @@ -143,7 +143,7 @@ static ssize_t do_write_mem(void *p, uns
    return written;
    }

    -
    +#ifndef ARCH_HAS_DEV_MEM
    /*
    * This funcion reads the *physical* memory. The f_pos points directly to the
    * memory location.
    @@ -189,8 +189,9 @@ static ssize_t write_mem(struct file * f
    return -EFAULT;
    return do_write_mem(__va(p), p, buf, count, ppos);
    }
    +#endif

    -static int mmap_mem(struct file * file, struct vm_area_struct * vma)
    +static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
    {
    #ifdef pgprot_noncached
    unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
    @@ -208,6 +209,7 @@ static int mmap_mem(struct file * file,
    vma->vm_end-vma->vm_start,
    vma->vm_page_prot))
    return -EAGAIN;
    +
    return 0;
    }

    @@ -567,7 +569,7 @@ static int open_port(struct inode * inod
    return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
    }

    -#define mmap_kmem mmap_mem
    +#define mmap_mem mmap_kmem
    #define zero_lseek null_lseek
    #define full_lseek null_lseek
    #define write_zero write_null
    @@ -575,6 +577,7 @@ static int open_port(struct inode * inod
    #define open_mem open_port
    #define open_kmem open_mem

    +#ifndef ARCH_HAS_DEV_MEM
    static struct file_operations mem_fops = {
    .llseek = memory_lseek,
    .read = read_mem,
    @@ -582,6 +585,9 @@ static struct file_operations mem_fops =
    .mmap = mmap_mem,
    .open = open_mem,
    };
    +#else
    +extern struct file_operations mem_fops;
    +#endif

    static struct file_operations kmem_fops = {
    .llseek = memory_lseek,
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:0.021 / U:91.588 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site