Re: devctl_notify system is inconsistent

From: Alexander V. Chernikov <melifaro_at_ipfw.ru>
Date: Thu, 01 Dec 2022 14:44:15 UTC

> On 1 Dec 2022, at 08:35, Baptiste Daroussin <bapt@FreeBSD.org> wrote:
> 
> Hello,
> 
> After the addition of netlink(4) by melifaro@, I started working on a new
> genetlink(4) module, to send kernel notification to the userland via netlink.
> 
> The goal is to be able to have multiple consumers without the need of devd to be
> running.
> 
> The goal is also to be able subscribe to the events the consumer is willing to
> receive.
> 
> https://reviews.freebsd.org/D37574
> 
> I also added a hook to devctl_notify to make sure all its event got sent via
> nlsysevent. (https://reviews.freebsd.org/D37573)
> 
> It works great and so far I am happy with it. on thing I figured out it is:
> the "system" argment of devctl_notify is inconsistent:
> Upper case vs lower case
> "kern" vs "kernel"
> 
> I intent to fix the following way:
> Create a new function similar to devctl_notify but with the first argument being
> an enum.
I don’t have enough domain knowledge here, but generally, one of the important changes in generic netlink was to move away from the enum-like identifiers shared across the modules to strings.
Having a single enum for the subsystem names would be hard for the third-part module authors as they have to guess/compete for the numbers.
I’d advocate for leaving them as strings (maybe with enforcing some naming rules).  

> Make the current devctl_notify convert its first argument into that enum and
> yell if an unkwown "system" is passed. (and probably declare devctl_notify
> deprecated)
> 
> Then fix the inconsistencies: all upper case as it seems the most wildly use
> case
> s/kern/kernel/g
> 
> WDYT?
> 
> Best regards,
> Bapt
>