From e133ccdda8c351da29404d6f8fe3242b375c9e99 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 14 Aug 2008 10:25:56 +0200 Subject: implement memmap for mem driver Signed-off-by: Sascha Hauer --- commands/mem.c | 3 +++ fs/fs.c | 9 ++++++++- include/driver.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/commands/mem.c b/commands/mem.c index b030f2d740..e5aa3453db 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -532,6 +532,7 @@ static struct driver_d mem_drv = { .close = dev_close_default, .read = mem_read, .write = mem_write, + .memmap = mem_memmap, .lseek = dev_lseek_default, }; @@ -543,6 +544,7 @@ static struct driver_d ram_drv = { .read = mem_read, .write = mem_write, .lseek = dev_lseek_default, + .memmap = mem_memmap, .type = DEVICE_TYPE_DRAM, }; @@ -552,6 +554,7 @@ static struct driver_d rom_drv = { .open = dev_open_default, .close = dev_close_default, .read = mem_read, + .memmap = mem_memmap, .lseek = dev_lseek_default, }; diff --git a/fs/fs.c b/fs/fs.c index d0b008aca1..a2a8ed13f3 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -604,7 +604,7 @@ void *memmap(int fd, int flags) struct device_d *dev; struct fs_driver_d *fsdrv; FILE *f = &files[fd]; - void *ret = NULL; + void *ret = (void *)-1; dev = f->dev; @@ -962,3 +962,10 @@ ssize_t mem_write(struct device_d *dev, const void *buf, size_t count, ulong off } EXPORT_SYMBOL(mem_write); +int mem_memmap(struct device_d *dev, void **map, int flags) +{ + *map = dev->map_base; + return 0; +} +EXPORT_SYMBOL(mem_memmap); + diff --git a/include/driver.h b/include/driver.h index e2b6d669dc..d4e7c132c9 100644 --- a/include/driver.h +++ b/include/driver.h @@ -240,6 +240,7 @@ int dev_memmap(struct device_d *dev, void **map, int flags); /* These are used by drivers which work with direct memory accesses */ ssize_t mem_read(struct device_d *dev, void *buf, size_t count, ulong offset, ulong flags); ssize_t mem_write(struct device_d *dev, const void *buf, size_t count, ulong offset, ulong flags); +int mem_memmap(struct device_d *dev, void **map, int flags); /* Use this if you have nothing to do in your drivers probe function */ int dummy_probe(struct device_d *); -- cgit v1.2.3