28.10.2021 12:59, Rafael J. Wysocki пишет: >> +#define RESTART_PRIO_RESERVED 0 >> +#define RESTART_PRIO_DEFAULT 128 >> +#define RESTART_PRIO_HIGH 192 >> >> enum reboot_mode { >> REBOOT_UNDEFINED = -1, >> @@ -49,6 +55,167 @@ int register_restart_handler(struct notifier_block *); >> int unregister_restart_handler(struct notifier_block *); >> void do_kernel_restart(char *cmd); >> >> +/* >> + * Unified poweroff + restart API. >> + */ >> + >> +#define POWEROFF_PRIO_RESERVED 0 >> +#define POWEROFF_PRIO_PLATFORM 1 >> +#define POWEROFF_PRIO_DEFAULT 128 >> +#define POWEROFF_PRIO_HIGH 192 >> +#define POWEROFF_PRIO_FIRMWARE 224 > Also I'm wondering why these particular numbers were chosen, here and above? These values are chosen based on priorities that drivers already use. I looked thorough them all and ended with this scheme that fulfills the needs of the current API users. I'll add these comments in v3: /* * Standard restart priority levels. Intended to be set in the * sys_off_handler.restart_priority field. * * Use `RESTART_PRIO_XXX +- prio` style for additional levels. * * RESTART_PRIO_RESERVED: Falls back to RESTART_PRIO_DEFAULT. * Drivers may leave priority initialized * to zero, to auto-set it to the default level. * * RESTART_PRIO_DEFAULT: Use this for generic handler. * * RESTART_PRIO_HIGH: Use this if you have multiple handlers and * this handler has higher priority than the * default handler. */ /* * Standard power-off priority levels. Intended to be set in the * sys_off_handler.power_off_priority field. * * Use `POWEROFF_PRIO_XXX +- prio` style for additional levels. * * POWEROFF_PRIO_RESERVED: Falls back to POWEROFF_PRIO_DEFAULT. * Drivers may leave priority initialized * to zero, to auto-set it to the default level. * * POWEROFF_PRIO_PLATFORM: Intended to be used by platform-level handler. * Has lowest priority since device drivers are * expected to take over platform handler which * doesn't allow further callback chaining. * * POWEROFF_PRIO_DEFAULT: Use this for generic handler. * * POWEROFF_PRIO_HIGH: Use this if you have multiple handlers and * this handler has higher priority than the * default handler. * * POWEROFF_PRIO_FIRMWARE: Use this if handler uses firmware call. * Has highest priority since firmware is expected * to know best how to power-off hardware properly. */