On Thursday, August 03, 2017 09:57:15 AM Andriy Gapon wrote:
> On 02/08/2017 18:49, John Baldwin wrote:
> > sysctl nodes are created explicitly via linker_file_register_sysctls, not 
> > via
> > SYSINITs, so you can't order them with respect to other init functions.
> > 
> > I think Andriy's suggestion of doing sysctls "inside" sysinits (so they are
> > registered last and unregistered first) is probably better than the current
> > state and is a simpler fix than changing all sysctls to use SYSINITs.
> Kostik (kib) suggested a possible valid use-case that depends on the current
> order: adding dynamic sysctl-s under static sysctl-s via the module load 
> handler.
> He also offered an idea for a possible solution: holding the modules lock in 
> the
> shared mode (MOD_SLOCK) around calls to sysctl-s registered from modules.

Yes, that could work.  You'd need a way to "tag" sysctls as being module sysctls
vs non-module sysctls.  Another possiblity would be to make two passes over
sysctls when loading/unloading modules where you have a "disabled" flag or some
such.  During load you would set this flag when doing sysctl_register_oid for 
static nodes and then do a second pass after the SYSINITs to clear all the 
flags.  During unload you would do this in reverse with an early pass before
SYSUNINITs to set "disabled" on all the static nodes for the kld.

John Baldwin
freebsd-current@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to