Lines Matching refs:handler
173 * @nb: Info about handler function to be called
176 * 0: Restart handler of last resort,
178 * 128: Default restart handler; use if no other
179 * restart handler is expected to be available,
182 * 255: Highest priority restart handler, will
193 * If more than one function is registered, the restart handler priority
199 * restart handlers may exist; for example, one restart handler might
201 * In such cases, the restart handler which only restarts part of the
216 * restart handler
219 * Unregisters a previously registered restart handler function.
230 * do_kernel_restart - Execute kernel restart handler call chain
237 * Restarts the system immediately if a restart handler function has been
339 struct sys_off_handler *handler;
342 handler = container_of(nb, struct sys_off_handler, nb);
343 data.cb_data = handler->cb_data;
346 data.dev = handler->dev;
348 return handler->sys_off_cb(&data);
355 struct sys_off_handler *handler;
359 * Platforms like m68k can't allocate sys_off handler dynamically
363 handler = &platform_sys_off_handler;
364 if (handler->cb_data)
372 handler = kzalloc(sizeof(*handler), flags);
373 if (!handler)
377 return handler;
380 static void free_sys_off_handler(struct sys_off_handler *handler)
382 if (handler == &platform_sys_off_handler)
383 memset(handler, 0, sizeof(*handler));
385 kfree(handler);
389 * register_sys_off_handler - Register sys-off handler
395 * Registers system power-off or restart handler that will be invoked
397 * should return NOTIFY_DONE to permit execution of the next handler in
403 * Only one handler can be registered at the non-default priority level,
415 struct sys_off_handler *handler;
418 handler = alloc_sys_off_handler(priority);
419 if (IS_ERR(handler))
420 return handler;
424 handler->list = &power_off_prep_handler_list;
425 handler->blocking = true;
429 handler->list = &power_off_handler_list;
433 handler->list = &restart_prep_handler_list;
434 handler->blocking = true;
438 handler->list = &restart_handler_list;
442 free_sys_off_handler(handler);
446 handler->nb.notifier_call = sys_off_notify;
447 handler->nb.priority = priority;
448 handler->sys_off_cb = callback;
449 handler->cb_data = cb_data;
450 handler->mode = mode;
452 if (handler->blocking) {
454 err = blocking_notifier_chain_register(handler->list,
455 &handler->nb);
457 err = blocking_notifier_chain_register_unique_prio(handler->list,
458 &handler->nb);
461 err = atomic_notifier_chain_register(handler->list,
462 &handler->nb);
464 err = atomic_notifier_chain_register_unique_prio(handler->list,
465 &handler->nb);
469 free_sys_off_handler(handler);
473 return handler;
478 * unregister_sys_off_handler - Unregister sys-off handler
479 * @handler: Sys-off handler
481 * Unregisters given sys-off handler.
483 void unregister_sys_off_handler(struct sys_off_handler *handler)
487 if (IS_ERR_OR_NULL(handler))
490 if (handler->blocking)
491 err = blocking_notifier_chain_unregister(handler->list,
492 &handler->nb);
494 err = atomic_notifier_chain_unregister(handler->list,
495 &handler->nb);
500 free_sys_off_handler(handler);
506 struct sys_off_handler *handler = data;
508 unregister_sys_off_handler(handler);
512 * devm_register_sys_off_handler - Register sys-off handler
513 * @dev: Device that registers handler
519 * Registers resource-managed sys-off handler.
529 struct sys_off_handler *handler;
531 handler = register_sys_off_handler(mode, priority, callback, cb_data);
532 if (IS_ERR(handler))
533 return PTR_ERR(handler);
534 handler->dev = dev;
537 handler);
542 * devm_register_power_off_handler - Register power-off handler
547 * Registers resource-managed sys-off handler with a default priority
564 * devm_register_restart_handler - Register restart handler
569 * Registers resource-managed sys-off handler with a default priority
609 struct sys_off_handler *handler;
611 handler = register_sys_off_handler(SYS_OFF_MODE_POWER_OFF,
615 if (IS_ERR(handler))
616 return PTR_ERR(handler);
618 platform_power_off_handler = handler;
654 * do_kernel_power_off - Execute kernel power-off handler call chain
658 * Powers off the system immediately if a power-off handler function has
685 * Returns true if power-off handler is registered and system can be