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