summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-06-06 09:25:13 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2008-06-06 09:30:48 +0200
commitee6d36a5405305f3bbdb0457948c219731b3d9cc (patch)
tree0a328bd96f2cf2f190372b654515e509c694930a /lib
parent3f73e61600f8fce0b6fa02e9a82124c1c89937c7 (diff)
downloadbarebox-ee6d36a5405305f3bbdb0457948c219731b3d9cc.tar.gz
barebox-ee6d36a5405305f3bbdb0457948c219731b3d9cc.tar.xz
- introduce ioctl call
- pass open/close/lseek through to drivers
Diffstat (limited to 'lib')
-rw-r--r--lib/driver.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/driver.c b/lib/driver.c
index f3129c4015..45417c28a9 100644
--- a/lib/driver.c
+++ b/lib/driver.c
@@ -212,6 +212,38 @@ ssize_t dev_write(struct device_d *dev, const void *buf, size_t count, unsigned
return -ENOSYS;
}
+off_t dev_lseek(struct device_d *dev, off_t offset)
+{
+ if (dev->driver->lseek)
+ return dev->driver->lseek(dev, offset);
+ errno = -ENOSYS;
+ return -ENOSYS;
+}
+
+int dev_open(struct device_d *dev, struct filep *f)
+{
+ if (dev->driver->open)
+ return dev->driver->open(dev, f);
+ errno = -ENOSYS;
+ return -ENOSYS;
+}
+
+int dev_close(struct device_d *dev, struct filep *f)
+{
+ if (dev->driver->close)
+ return dev->driver->close(dev, f);
+ errno = -ENOSYS;
+ return -ENOSYS;
+}
+
+int dev_ioctl(struct device_d *dev, int request, void *buf)
+{
+ if (dev->driver->ioctl)
+ return dev->driver->ioctl(dev, request, buf);
+ errno = -ENOSYS;
+ return -ENOSYS;
+}
+
int dev_erase(struct device_d *dev, size_t count, unsigned long offset)
{
if (dev->driver->erase)