[PATCH] Fix for USB media not found at boot
Scott Long
scottl at samsco.org
Sat Oct 3 16:13:58 UTC 2009
On Oct 3, 2009, at 10:00 AM, Hans Petter Selasky wrote:
> On Saturday 03 October 2009 17:05:35 Scott Long wrote:
>> On Oct 3, 2009, at 4:30 AM, Hans Petter Selasky wrote:
>>> On Saturday 03 October 2009 10:19:57 Scott Long wrote:
>>>> config_intrhook system will sleep after all
>>>
>>> Then why do you need the intr hook callback?
>>
>> The config_intrhook lets you know that interrupts are enabled, the
>> scheduler is running, and mountroot hasn't run yet. It provides a
>> very convenient and standard way to do exactly what we want with USB
>> enumeration.
>
> Hi,
>
> The root HUB attach and explore code is already running from a
> separate
> thread, so won't that be superfluous? I mean, the HUB explore code
> for any USB
> HUB will not run until the scheduler is running anyway.
>
> In my opinion delaying the system until the boot disk is present is
> just not
> good. We should rather be event driven, so that every time a new
> disk becomes
> present it checks it for mountroot.
>
> while (1) {
> if (mountroot is successful)
> break;
> if (ctrl+c is pressed)
> manual_mountroot();
> printf("Waiting 1 second for root-disk to appear. Press CTRL+C
> to
> abort.\n");
> sleep(1);
> }
>
Actually, if you want to truly be event based, then instead of
sleeping for a fixed time and then polling for devices, go to sleep
and have GEOM wake you up when a disk device arrives. You can still
wake up periodically to provide status to the user (or not, it might
get too noisy).
Scott
More information about the freebsd-current
mailing list