patch-2.4.19 linux-2.4.19/drivers/char/raw.c
Next file: linux-2.4.19/drivers/char/rocket_int.h
Previous file: linux-2.4.19/drivers/char/qtronixmap.c
Back to the patch index
Back to the overall index
- Lines: 42
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/drivers/char/raw.c
- Orig date:
Sat Sep 22 20:35:43 2001
diff -urN linux-2.4.18/drivers/char/raw.c linux-2.4.19/drivers/char/raw.c
@@ -34,6 +34,7 @@
int raw_open(struct inode *, struct file *);
int raw_release(struct inode *, struct file *);
int raw_ctl_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
+int raw_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
static struct file_operations raw_fops = {
@@ -41,6 +42,7 @@
write: raw_write,
open: raw_open,
release: raw_release,
+ ioctl: raw_ioctl,
};
static struct file_operations raw_ctl_fops = {
@@ -160,6 +162,25 @@
+/* Forward ioctls to the underlying block device. */
+int raw_ioctl(struct inode *inode,
+ struct file *flip,
+ unsigned int command,
+ unsigned long arg)
+{
+ int minor = minor(inode->i_rdev), err;
+ struct block_device *b;
+ if (minor < 1 && minor > 255)
+ return -ENODEV;
+
+ b = raw_devices[minor].binding;
+ err = -EINVAL;
+ if (b && b->bd_inode && b->bd_op && b->bd_op->ioctl) {
+ err = b->bd_op->ioctl(b->bd_inode, NULL, command, arg);
+ }
+ return err;
+}
+
/*
* Deal with ioctls against the raw-device control interface, to bind
* and unbind other raw devices.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)