[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 1/2 hurd] libirqhelp: Add library
From: |
Samuel Thibault |
Subject: |
Re: [PATCH v6 1/2 hurd] libirqhelp: Add library |
Date: |
Tue, 11 Jul 2023 23:56:11 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Samuel Thibault, le mar. 11 juil. 2023 10:20:45 +0200, a ecrit:
> Damien Zammit, le mar. 11 juil. 2023 07:58:39 +0000, a ecrit:
> > On 11/7/23 05:47, Samuel Thibault wrote:
> > > Damien Zammit, le lun. 10 juil. 2023 09:02:10 +0000, a ecrit:
> > >> +void
> > >> +irqhelp_wait_init(struct irq *irq)
> > >> +{
> > >> + if (!irq)
> > >> + {
> > >> + log_error("cannot wait on this irq to be ready\n");
> > >> + return;
> > >> + }
> > >> +
> > >> + sem_wait(&irq->sema);
> > >> +}
> > >
> > > So, is this wait really necessary? Why?
> >
> > Yes, without this wait, netdde.static crashes randomly on startup,
> > and if it doesn't crash the first time, it can be triggered to crash
> > by running ifdown then ifup.
> >
> > I think the wait avoids a race.
>
> Ok but we should really understand what race can exist, otherwise we
> don't really know why the code works.
(put another way, the sem_wait possibly only makes the race less
probable, without making it impossible)
Samuel
[PATCH v6 2/2 hurd] ddekit: Use libirqhelp for interrupt registration, Damien Zammit, 2023/07/10