[systemd-devel] systemd inquiry

Mark Hounschell markh at compro.net
Wed Apr 11 13:07:39 PDT 2012


On 04/11/2012 04:02 PM, Kay Sievers wrote:
> On Wed, Apr 11, 2012 at 21:41, Mark Hounschell<markh at compro.net>  wrote:
>> On 04/10/2012 09:10 AM, Kay Sievers wrote:
>>>
>>> On Tue, Apr 10, 2012 at 14:36, Mark Hounschell<markh at compro.net>    wrote:
>>>
>>>> I am having another issue with an out of kernel "GPL" device driver not
>>>> being available "on time" so to say. When the kernel discovers this pci
>>>> card
>>>> it loads it's kernel module and sets up the card for use. This takes
>>>> around
>>>> 15 seconds per card and there is usually 2-3 of them. When the card is
>>>> up,
>>>> running, and ready, the kernel module notifies udev who in turn executes
>>>> a
>>>> small script that creates 30 or so different device nodes for use with
>>>> the
>>>> card.
>>>
>>>
>>> A bit unrelated to the described specific problem above, but:
>>>
>>> We do not support any kernel device driver which does not create the
>>> device nodes on its own from inside the kernel. Such drivers cause
>>> problems and will fail for various non-interesting reasons. You really
>>> must hook up the kernel driver to register the devices with the kernel
>>> driver-core; it's just a few lines to add.
>>>
>>> Doing mknod() in userspace is just too fragile and does not fit into
>>> any synchronization logic of udev or systemd, it is not even expected
>>> to work reliably with these tools.
>>
>>
>> OK, I've changed the driver such that is creates it's own device nodes after
>> the board is up and running. Like I said earlier, it takes a single board
>> 10-15 seconds to come up once the driver starts it. There are now, no
>> scripts required, no sysvinit, no systemd, no udev involved.
>
> Sounds cool. :)
>
> Udev and systemd are involved now, at least in a way that they see
> uevents, which did not exist before.
>
>> Still, when using systemd, when I get to my run-level, the application fails
>> because the device nodes have yet to be created. The driver is still waiting
>> for the boards to be ready. When I use sysvinit the device nodes are there
>>   when I get to my run-level.
>
> Try:
>    systemctl enable udev-settle.service
>

I should enter this command then reboot?

Mark


More information about the systemd-devel mailing list