| /* |
| * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * Process Domain Service Notifier API header |
| */ |
| |
| #ifndef _SERVICE_NOTIFIER_H |
| #define _SERVICE_NOTIFIER_H |
| |
| enum qmi_servreg_notif_service_state_enum_type_v01 { |
| QMI_SERVREG_NOTIF_SERVICE_STATE_ENUM_TYPE_MIN_VAL_V01 = INT_MIN, |
| QMI_SERVREG_NOTIF_SERVICE_STATE_ENUM_TYPE_MAX_VAL_V01 = INT_MAX, |
| SERVREG_NOTIF_SERVICE_STATE_DOWN_V01 = 0x0FFFFFFF, |
| SERVREG_NOTIF_SERVICE_STATE_UP_V01 = 0x1FFFFFFF, |
| SERVREG_NOTIF_SERVICE_STATE_UNINIT_V01 = 0x7FFFFFFF, |
| }; |
| |
| enum pd_subsys_state { |
| ROOT_PD_DOWN, |
| ROOT_PD_UP, |
| ROOT_PD_ERR_FATAL, |
| ROOT_PD_WDOG_BITE, |
| ROOT_PD_SHUTDOWN, |
| USER_PD_STATE_CHANGE, |
| }; |
| #if defined(CONFIG_MSM_SERVICE_NOTIFIER) |
| |
| /* service_notif_register_notifier() - Register a notifier for a service |
| * On success, it returns back a handle. It takes the following arguments: |
| * service_path: Individual service identifier path for which a client |
| * registers for notifications. |
| * instance_id: Instance id specific to a subsystem. |
| * current_state: Current state of service returned by the registration |
| * process. |
| * notifier block: notifier callback for service events. |
| */ |
| void *service_notif_register_notifier(const char *service_path, int instance_id, |
| struct notifier_block *nb, int *curr_state); |
| |
| /* service_notif_unregister_notifier() - Unregister a notifier for a service. |
| * service_notif_handle - The notifier handler that was provided by the |
| * service_notif_register_notifier function when the |
| * client registered for notifications. |
| * nb - The notifier block that was previously used during the registration. |
| */ |
| int service_notif_unregister_notifier(void *service_notif_handle, |
| struct notifier_block *nb); |
| |
| int service_notif_pd_restart(const char *service_path, int instance_id); |
| |
| #else |
| |
| static inline void *service_notif_register_notifier(const char *service_path, |
| int instance_id, struct notifier_block *nb, |
| int *curr_state) |
| { |
| return ERR_PTR(-ENODEV); |
| } |
| |
| static inline int service_notif_unregister_notifier(void *service_notif_handle, |
| struct notifier_block *nb) |
| { |
| return -ENODEV; |
| } |
| |
| static inline int service_notif_pd_restart(const char *service_path, |
| int instance_id) |
| { |
| return -ENODEV; |
| } |
| |
| #endif /* CONFIG_MSM_SERVICE_NOTIFIER */ |
| |
| #endif |