Lines Matching full:handler

156  *	@nb: Info about handler function to be called
157 * @nb->priority: Handler priority. Handlers should follow the
159 * 0: Restart handler of last resort,
161 * 128: Default restart handler; use if no other
162 * restart handler is expected to be available,
165 * 255: Highest priority restart handler, will
176 * If more than one function is registered, the restart handler priority
182 * restart handlers may exist; for example, one restart handler might
184 * In such cases, the restart handler which only restarts part of the
199 * restart handler
202 * Unregisters a previously registered restart handler function.
213 * do_kernel_restart - Execute kernel restart handler call chain
220 * Restarts the system immediately if a restart handler function has been
319 struct sys_off_handler *handler; in sys_off_notify() local
322 handler = container_of(nb, struct sys_off_handler, nb); in sys_off_notify()
323 data.cb_data = handler->cb_data; in sys_off_notify()
327 return handler->sys_off_cb(&data); in sys_off_notify()
334 struct sys_off_handler *handler; in alloc_sys_off_handler() local
338 * Platforms like m68k can't allocate sys_off handler dynamically in alloc_sys_off_handler()
342 handler = &platform_sys_off_handler; in alloc_sys_off_handler()
343 if (handler->cb_data) in alloc_sys_off_handler()
351 handler = kzalloc(sizeof(*handler), flags); in alloc_sys_off_handler()
352 if (!handler) in alloc_sys_off_handler()
356 return handler; in alloc_sys_off_handler()
359 static void free_sys_off_handler(struct sys_off_handler *handler) in free_sys_off_handler() argument
361 if (handler == &platform_sys_off_handler) in free_sys_off_handler()
362 memset(handler, 0, sizeof(*handler)); in free_sys_off_handler()
364 kfree(handler); in free_sys_off_handler()
368 * register_sys_off_handler - Register sys-off handler
370 * @priority: Handler priority
374 * Registers system power-off or restart handler that will be invoked
375 * at the step corresponding to the given sys-off mode. Handler's callback
376 * should return NOTIFY_DONE to permit execution of the next handler in
382 * Only one handler can be registered at the non-default priority level,
394 struct sys_off_handler *handler; in register_sys_off_handler() local
397 handler = alloc_sys_off_handler(priority); in register_sys_off_handler()
398 if (IS_ERR(handler)) in register_sys_off_handler()
399 return handler; in register_sys_off_handler()
403 handler->list = &power_off_prep_handler_list; in register_sys_off_handler()
404 handler->blocking = true; in register_sys_off_handler()
408 handler->list = &power_off_handler_list; in register_sys_off_handler()
412 handler->list = &restart_prep_handler_list; in register_sys_off_handler()
413 handler->blocking = true; in register_sys_off_handler()
417 handler->list = &restart_handler_list; in register_sys_off_handler()
421 free_sys_off_handler(handler); in register_sys_off_handler()
425 handler->nb.notifier_call = sys_off_notify; in register_sys_off_handler()
426 handler->nb.priority = priority; in register_sys_off_handler()
427 handler->sys_off_cb = callback; in register_sys_off_handler()
428 handler->cb_data = cb_data; in register_sys_off_handler()
429 handler->mode = mode; in register_sys_off_handler()
431 if (handler->blocking) { in register_sys_off_handler()
433 err = blocking_notifier_chain_register(handler->list, in register_sys_off_handler()
434 &handler->nb); in register_sys_off_handler()
436 err = blocking_notifier_chain_register_unique_prio(handler->list, in register_sys_off_handler()
437 &handler->nb); in register_sys_off_handler()
440 err = atomic_notifier_chain_register(handler->list, in register_sys_off_handler()
441 &handler->nb); in register_sys_off_handler()
443 err = atomic_notifier_chain_register_unique_prio(handler->list, in register_sys_off_handler()
444 &handler->nb); in register_sys_off_handler()
448 free_sys_off_handler(handler); in register_sys_off_handler()
452 return handler; in register_sys_off_handler()
457 * unregister_sys_off_handler - Unregister sys-off handler
458 * @handler: Sys-off handler
460 * Unregisters given sys-off handler.
462 void unregister_sys_off_handler(struct sys_off_handler *handler) in unregister_sys_off_handler() argument
466 if (IS_ERR_OR_NULL(handler)) in unregister_sys_off_handler()
469 if (handler->blocking) in unregister_sys_off_handler()
470 err = blocking_notifier_chain_unregister(handler->list, in unregister_sys_off_handler()
471 &handler->nb); in unregister_sys_off_handler()
473 err = atomic_notifier_chain_unregister(handler->list, in unregister_sys_off_handler()
474 &handler->nb); in unregister_sys_off_handler()
479 free_sys_off_handler(handler); in unregister_sys_off_handler()
485 struct sys_off_handler *handler = data; in devm_unregister_sys_off_handler() local
487 unregister_sys_off_handler(handler); in devm_unregister_sys_off_handler()
491 * devm_register_sys_off_handler - Register sys-off handler
492 * @dev: Device that registers handler
494 * @priority: Handler priority
498 * Registers resource-managed sys-off handler.
508 struct sys_off_handler *handler; in devm_register_sys_off_handler() local
510 handler = register_sys_off_handler(mode, priority, callback, cb_data); in devm_register_sys_off_handler()
511 if (IS_ERR(handler)) in devm_register_sys_off_handler()
512 return PTR_ERR(handler); in devm_register_sys_off_handler()
515 handler); in devm_register_sys_off_handler()
520 * devm_register_power_off_handler - Register power-off handler
525 * Registers resource-managed sys-off handler with a default priority
542 * devm_register_restart_handler - Register restart handler
547 * Registers resource-managed sys-off handler with a default priority
587 struct sys_off_handler *handler; in register_platform_power_off() local
589 handler = register_sys_off_handler(SYS_OFF_MODE_POWER_OFF, in register_platform_power_off()
593 if (IS_ERR(handler)) in register_platform_power_off()
594 return PTR_ERR(handler); in register_platform_power_off()
596 platform_power_off_handler = handler; in register_platform_power_off()
632 * do_kernel_power_off - Execute kernel power-off handler call chain
636 * Powers off the system immediately if a power-off handler function has
663 * Returns true if power-off handler is registered and system can be