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 the static nodes and then do a second pass after the SYSINITs to clear all the disabled 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 _______________________________________________ email@example.com mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"