1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2 | /* Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org> */ |
3 | #ifndef __THERMAL_H |
4 | #define __THERMAL_H |
5 | |
6 | #include <netlink/netlink.h> |
7 | #include <netlink/genl/genl.h> |
8 | #include <netlink/genl/mngt.h> |
9 | #include <netlink/genl/ctrl.h> |
10 | |
11 | struct thermal_handler { |
12 | int done; |
13 | int error; |
14 | struct thermal_ops *ops; |
15 | struct nl_msg *msg; |
16 | struct nl_sock *sk_event; |
17 | struct nl_sock *sk_sampling; |
18 | struct nl_sock *sk_cmd; |
19 | struct nl_cb *cb_cmd; |
20 | struct nl_cb *cb_event; |
21 | struct nl_cb *cb_sampling; |
22 | }; |
23 | |
24 | struct thermal_handler_param { |
25 | struct thermal_handler *th; |
26 | void *arg; |
27 | }; |
28 | |
29 | /* |
30 | * Low level netlink |
31 | */ |
32 | extern int nl_subscribe_thermal(struct nl_sock *nl_sock, struct nl_cb *nl_cb, |
33 | const char *group); |
34 | |
35 | extern int nl_unsubscribe_thermal(struct nl_sock *nl_sock, struct nl_cb *nl_cb, |
36 | const char *group); |
37 | |
38 | extern int nl_thermal_connect(struct nl_sock **nl_sock, struct nl_cb **nl_cb); |
39 | |
40 | extern void nl_thermal_disconnect(struct nl_sock *nl_sock, struct nl_cb *nl_cb); |
41 | |
42 | extern int nl_send_msg(struct nl_sock *sock, struct nl_cb *nl_cb, struct nl_msg *msg, |
43 | int (*rx_handler)(struct nl_msg *, void *), |
44 | void *data); |
45 | |
46 | #endif /* __THERMAL_H */ |
47 | |