diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-06-11 15:33:49 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-07-21 16:41:47 +0200 |
commit | 02ba8a0542f119e02e63a3b4cd6ae5abfd8331f3 (patch) | |
tree | c358a8c1f4d1cc5db91d898e6f409f55b22f4127 /fs/devfs.c | |
parent | 2f8df2a003a22e8b7397e51ac5f1796db920d579 (diff) | |
download | barebox-02ba8a0542f119e02e63a3b4cd6ae5abfd8331f3.tar.gz barebox-02ba8a0542f119e02e63a3b4cd6ae5abfd8331f3.tar.xz |
get rid of device ids
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/devfs.c')
-rw-r--r-- | fs/devfs.c | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/fs/devfs.c b/fs/devfs.c index b8b9fa25b1..865b9ccb79 100644 --- a/fs/devfs.c +++ b/fs/devfs.c @@ -47,29 +47,37 @@ struct cdev *cdev_by_name(const char *filename) return NULL; } -int devfs_read(struct device_d *_dev, FILE *f, void *buf, size_t size) +ssize_t cdev_read(struct cdev *cdev, void *buf, size_t count, ulong offset, ulong flags) { - struct cdev *cdev = f->inode; - if (!cdev->ops->read) return -ENOSYS; - return cdev->ops->read(cdev, buf, size, - f->pos + cdev->offset, f->flags); + return cdev->ops->read(cdev, buf, count, cdev->offset +offset, flags); } -int devfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t size) +ssize_t cdev_write(struct cdev *cdev, const void *buf, size_t count, ulong offset, ulong flags) { - struct cdev *cdev = f->inode; - if (!cdev->ops->write) return -ENOSYS; - return cdev->ops->write(cdev, buf, size, - f->pos + cdev->offset, f->flags); + return cdev->ops->write(cdev, buf, count, cdev->offset + offset, flags); +} + +static int devfs_read(struct device_d *_dev, FILE *f, void *buf, size_t size) +{ + struct cdev *cdev = f->inode; + + return cdev_read(cdev, buf, size, f->pos, f->flags); +} + +static int devfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t size) +{ + struct cdev *cdev = f->inode; + + return cdev_write(cdev, buf, size, f->pos, f->flags); } -off_t devfs_lseek(struct device_d *_dev, FILE *f, off_t pos) +static off_t devfs_lseek(struct device_d *_dev, FILE *f, off_t pos) { struct cdev *cdev = f->inode; off_t ret = -1; @@ -83,7 +91,7 @@ off_t devfs_lseek(struct device_d *_dev, FILE *f, off_t pos) return ret; } -int devfs_erase(struct device_d *_dev, FILE *f, size_t count, unsigned long offset) +static int devfs_erase(struct device_d *_dev, FILE *f, size_t count, unsigned long offset) { struct cdev *cdev = f->inode; @@ -93,7 +101,7 @@ int devfs_erase(struct device_d *_dev, FILE *f, size_t count, unsigned long offs return cdev->ops->erase(cdev, count, offset + cdev->offset); } -int devfs_protect(struct device_d *_dev, FILE *f, size_t count, unsigned long offset, int prot) +static int devfs_protect(struct device_d *_dev, FILE *f, size_t count, unsigned long offset, int prot) { struct cdev *cdev = f->inode; @@ -287,6 +295,8 @@ int devfs_create(struct cdev *new) return -EEXIST; list_add_tail(&new->list, &cdev_list); + if (new->dev) + list_add_tail(&new->devices_list, &new->dev->cdevs); return 0; } @@ -294,6 +304,8 @@ int devfs_create(struct cdev *new) void devfs_remove(struct cdev *cdev) { list_del(&cdev->list); + if (cdev->dev) + list_del(&cdev->devices_list); } int devfs_add_partition(const char *devname, unsigned long offset, size_t size, |