Re: proc_mknod() replacement

From: Jim Crilly
Date: Mon May 09 2005 - 17:06:47 EST


On 05/10/05 01:06:08AM +0800, KC wrote:
> Hi,
>
> Thanks for reply.
>
> On 5/9/05, Erik Mouw <erik@xxxxxxxxxxxxxxxxxxxxx> wrote:
> > On Mon, May 09, 2005 at 07:17:44PM +0800, KC wrote:
> > > I found that proc_mknod() had been removed from kernel 2.6.x.
> > > Any replacement ?
> > >
> > > Or how can I create file, device node or dir from device driver ?
> >
> > You don't do that from a device driver in the first place. Have a look
> > at udev, it will do what you want from userspace.
>
> For regular file, I do agree with you. But for device node, I don't see
> anything wrong by create it directly from kernel space.
> In fact, I do not understand why proc_mknod() is removed from
> 2.6.x ... I will be happy if someone can tell me why.

Because naming of devices is a policy that shouldn't be defined in the
kernel.

>
> Why I want to use proc_mknod() in driver ? I write a small package, ovi-dev,
> which can be downloaded from
> http://www.sourceforge.net/projects/ovi
> The ovi-dev will scan the PCI bus and if it found, eg, 3 PCI devices, it
> will create 3 device entries (nodes) automatically at module load time.
> So number of device entries (nodes) will match number of devices
> of the system ... well, UNIX/Linux doesn't work that way ... there are a lot
> of device entries ... but no corresponding hardware existed.

You must have not have converted to udev, it's sort of like devfs in that
device nodes are created dynamicly but it's a userspace daemon that
adds/removes device nodes in response to hotplug events generated by the kernel.
>
> The proc_mknod() can fix the problems ... but it was removed from 2.6.x ...
> too bad ... at least for me. So I'm looking for an alternative way to create
> device entry under /dev from drivers instead of /proc ... but still don't know
> how. Anyone know how to do that ? It should be done at module_init()
> and the entry should be removed at module_exit().

I believe if you use the driver core class stuff (i.e.
class_simple_device_add) it should add device nodes in sysfs and generate
hotplug events for udev.

>
>
> Thanks
> KC
>

Jim.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/