diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2007-07-15 13:50:04 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2007-07-15 13:50:04 +0200 |
commit | 665291e693efd1fd2955c6f8bfb89956711b0aef (patch) | |
tree | 0c9d871da372b4a640a9760f8946a8a57e3fbbba /fs/fs.c | |
parent | 9b3761c4459167a335d3a1c30543824afa2d654d (diff) | |
download | barebox-665291e693efd1fd2955c6f8bfb89956711b0aef.tar.gz barebox-665291e693efd1fd2955c6f8bfb89956711b0aef.tar.xz |
implement memmap().
With this function we can get a pointer to directly memory mapped
devices like nor flash or RAM. Useful for bootm where we save one
memcopy when the image is mappable
Diffstat (limited to 'fs/fs.c')
-rw-r--r-- | fs/fs.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -516,6 +516,25 @@ int erase(int fd, size_t count, unsigned long offset) return errno; } +void *memmap(int fd, int flags) +{ + struct device_d *dev; + struct fs_driver_d *fsdrv; + FILE *f = &files[fd]; + void *ret = NULL; + + dev = f->dev; + + fsdrv = (struct fs_driver_d *)dev->driver->type_data; + + if (fsdrv->memmap) + errno = fsdrv->memmap(dev, f, &ret, flags); + else + errno = -EINVAL; + + return ret; +} + int close(int fd) { struct device_d *dev; |