Re: [GIT PATCH] Remove devfs from 2.6.17

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/18/06, H. Peter Anvin <[email protected]> wrote:
Joshua Hudson wrote:
> With udev, you could mknod it yourself (in your application), then open it.
> That would fire up the auto-module-load.

Sure, but it would be even better if pointing udev to a set of modules
(or perhaps a file generated by depmod) and have it do it all automatically.

Providing the information about what devices a virtual driver will
register when loaded seems like a good idea.

Something like the following occurs to me. But it doesn't deal with
loop's ability to register a different number of minors based on a
module parameter. Not really sure what to do about that.

Going in this direction is also a further impediment to dynamicly
assigned device numbers.

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 9c3b94e..b933f3f 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1205,6 +1205,18 @@ static struct block_device_operations lo
	.ioctl =	lo_ioctl,
};

+static struct virtual_device_table loop_virt_tbl= {
+	{LOOP_MAJOR, 0, 1},
+	{LOOP_MAJOR, 1, 1},
+	{LOOP_MAJOR, 2, 1},
+	{LOOP_MAJOR, 3, 1},
+	{LOOP_MAJOR, 4, 1},
+	{LOOP_MAJOR, 5, 1},
+	{LOOP_MAJOR, 6, 1},
+	{LOOP_MAJOR, 7, 1},
+	{}
+};
+
/*
 * And now the modules code and kernel interface.
 */
@@ -1212,6 +1224,7 @@ module_param(max_loop, int, 0);
MODULE_PARM_DESC(max_loop, "Maximum number of loop devices (1-256)");
MODULE_LICENSE("GPL");
MODULE_ALIAS_BLOCKDEV_MAJOR(LOOP_MAJOR);
+MODULE_DEVICE_TABLE (virtual, loop_virt_tbl);

int loop_register_transfer(struct loop_func_table *funcs)
{
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index f697770..f4a21d0 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -297,4 +297,16 @@ struct input_device_id {
	kernel_ulong_t driver_info;
};

+/*
+ * Declare the intention of a driver to register a virtual
+ * device upon loading.
+ */
+struct virtual_device_id {
+	__u32 major;
+	__u32 minor;
+	__u8 type; /* 0 for char, 1 for block */
+
+	kernel_ulong_t driver_info;
+}
+
#endif /* LINUX_MOD_DEVICETABLE_H */


--
Will Dyson
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux