6 #include "proc-events.h"
9 int subscribe_on_proc_events(int sock)
13 struct __attribute__ ((__packed__)) {
15 enum proc_cn_mcast_op cn_mcast;
19 bzero(&msg, sizeof(msg));
20 msg.n.nlmsg_len = sizeof(msg);
21 msg.n.nlmsg_pid = getpid();
22 msg.n.nlmsg_type = NLMSG_DONE;
24 msg.cn_msg.id.idx = CN_IDX_PROC;
25 msg.cn_msg.id.val = CN_VAL_PROC;
26 msg.cn_msg.len = sizeof(enum proc_cn_mcast_op);
27 msg.cn_mcast = PROC_CN_MCAST_LISTEN;
29 if (send(sock, &msg, sizeof(msg), 0) < 0) {
38 int process_proc_event_answer(int sock,
39 int (*process_cb)(struct proc_event *e, void *user_data), void *user_data)
43 struct nlmsghdr nl_hdr;
44 struct __attribute__ ((__packed__)) {
46 struct proc_event event;
50 rc = recv(sock, &msg, sizeof(msg), 0);
51 if (rc < 0 && errno != EAGAIN) {
57 process_cb(&msg.event, user_data);