tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/kern



On Sun, Sep 15, 2019 at 03:47:32AM +0200, Emmanuel Dreyfus wrote:
> Michael van Elst <mlelstv%serpens.de@localhost> wrote:
> 
> > A real solution would just support the NAME=* syntax in getwedgename().
> > It might also allow for a case-insensitive match like userland. Then
> > it would just work for config, for boot parameters and for interactive
> > entries.
> 
> You mean this change? 
> 
> --- sys/kern/kern_subr.c        27 Jan 2019 02:08:43 -0000      1.223
> +++ sys/kern/kern_subr.c        15 Sep 2019 01:46:42 -0000
> @@ -678,15 +678,20 @@
>  
>  static const char *
>  getwedgename(const char *name, int namelen)
>  {
> -       const char *wpfx = "wedge:";
> -       const int wpfxlen = strlen(wpfx);
> +       const char *wpfx1 = "wedge:";
> +       const char *wpfx2 = "NAME=";
> +       const int wpfx1len = strlen(wpfx1);
> +       const int wpfx2len = strlen(wpfx2);
>  
> -       if (namelen < wpfxlen || strncmp(name, wpfx, wpfxlen) != 0)
> -               return NULL;
> +       if (namelen > wpfx1len && strncmp(name, wpfx1, wpfx1len) == 0)
> +               return name + wpfx1len;
>  
> -       return name + wpfxlen;
> +       if (namelen > wpfx2len && strncmp(name, wpfx2, wpfx2len) == 0)
> +               return name + wpfx2len;
> +
> +       return NULL;
>  }
>  
>  static device_t
>  parsedisk(char *str, int len, int defpart, dev_t *devp)


Yes. Please use strncasecmp for wpfx2, userland ignores case too.



We have to decide if we really want to switch things to the NAME=
syntax and allow wedge: only for compatibility. Then we should also
adjust what dkwedge_print_wnames() prints, currently it uses the wedge:
prefix. It is called in getdisk() when you enter something invalid
for a root device.

The wedge: syntax is documented in config(5), boot(8.x86) and cpu_rootconf(9)
and maybe in other places.

It is also used in iyonix/conf/GENERIC (as example) and evbarm/conf/IYONIX.


There is also MD code for evbarm that generates the wedge: syntax from
the FDT entry /chosen/netbsd,gpt-guid, replacing existing boot arguments.
While /chosen/netbsd,gpt-label is searched for in the wedge list to
pass a device to the MI code. But that's another story.



Greetings,
-- 
                                Michael van Elst
Internet: mlelstv%serpens.de@localhost
                                "A potential Snark may lurk in every tree."


Home | Main Index | Thread Index | Old Index