On Tue, Jan 14, 2020 at 06:10:43PM +0100, Laszlo Ersek wrote:
> On 01/14/20 10:25, Gerd Hoffmann wrote:
> > Call find_prio("HALT") only once, on first is_bootprio_strict() call.
> > Store the result in a variable and reuse it on subsequent calls.
> > 
> > Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
> > ---
> >  src/boot.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/boot.c b/src/boot.c
> > index 5182ab426b9f..afeb36a3319a 100644
> > --- a/src/boot.c
> > +++ b/src/boot.c
> > @@ -297,7 +297,11 @@ find_prio(const char *glob)
> >  
> >  u8 is_bootprio_strict(void)
> >  {
> > -    return find_prio("HALT") >= 0;
> > +    static int prio_halt = -2;
> > +
> > +    if (prio_halt == -2)
> > +        prio_halt = find_prio("HALT");
> > +    return prio_halt >= 0;
> >  }
> >  
> >  int bootprio_find_pci_device(struct pci_device *pci)
> > 
> 
> General question. Is it safe to use static variables in this file with
> initializers, i.e. without assigning their initial values through
> statements?

I'm not aware of any issues with that.  It should work.

> What happens at reset? In particular, the "bootorder" fw_cfg file may
> change across reset. (I'm not certain if specifically "HALT" can change
> in "bootorder" across reset.)

On a SeaBIOS reset it should get reset to -2 as far as I'm aware.

-Kevin
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to