| /* SPDX-License-Identifier: LGPL-2.1+ */ |
| /* Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org> */ |
| #ifndef __THERMAL_H |
| #define __THERMAL_H |
| |
| #include <netlink/netlink.h> |
| #include <netlink/genl/genl.h> |
| #include <netlink/genl/mngt.h> |
| #include <netlink/genl/ctrl.h> |
| |
| struct thermal_handler { |
| int done; |
| int error; |
| struct thermal_ops *ops; |
| struct nl_msg *msg; |
| struct nl_sock *sk_event; |
| struct nl_sock *sk_sampling; |
| struct nl_sock *sk_cmd; |
| struct nl_cb *cb_cmd; |
| struct nl_cb *cb_event; |
| struct nl_cb *cb_sampling; |
| }; |
| |
| struct thermal_handler_param { |
| struct thermal_handler *th; |
| void *arg; |
| }; |
| |
| /* |
| * Low level netlink |
| */ |
| extern int nl_subscribe_thermal(struct nl_sock *nl_sock, struct nl_cb *nl_cb, |
| const char *group); |
| |
| extern int nl_unsubscribe_thermal(struct nl_sock *nl_sock, struct nl_cb *nl_cb, |
| const char *group); |
| |
| extern int nl_thermal_connect(struct nl_sock **nl_sock, struct nl_cb **nl_cb); |
| |
| extern void nl_thermal_disconnect(struct nl_sock *nl_sock, struct nl_cb *nl_cb); |
| |
| extern int nl_send_msg(struct nl_sock *sock, struct nl_cb *nl_cb, struct nl_msg *msg, |
| int (*rx_handler)(struct nl_msg *, void *), |
| void *data); |
| |
| #endif /* __THERMAL_H */ |