1d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/****************************************************************************
2d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ****************************************************************************
3d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***
4d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   This header was automatically generated from a Linux kernel header
5d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   of the same name, to make information necessary for userspace to
6d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   call into the kernel available to libc.  It contains only constants,
7d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   structures, and macros generated from the original header, and thus,
8d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   contains no copyrightable information.
9d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***
10d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   To edit the content of this header, modify the corresponding
11d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   source file (e.g. under external/kernel-headers/original/) then
12d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   run bionic/libc/kernel/tools/update_all.py
13d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***
14d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   Any manual change here will be lost the next time this script will
15d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***   be run. You've been warned!
16d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ***
17d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ****************************************************************************
18d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal ****************************************************************************/
19d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#ifndef KCT_H_
20d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define KCT_H_
21d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#include <linux/netlink.h>
22d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define EV_FLAGS_PRIORITY_LOW (1<<0)
23d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#ifndef MAX_SB_N
25d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define MAX_SB_N 32
26d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#endif
27d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#ifndef MAX_EV_N
28d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define MAX_EV_N 32
30d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#endif
31d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define NETLINK_CRASHTOOL 27
32d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define ATTCHMT_ALIGN 4U
33d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalenum ct_ev_type {
35d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_EV_STAT,
36d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_EV_INFO,
37d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_EV_ERROR,
38d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_EV_CRASH,
40d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_EV_LAST
41d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal};
42d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalenum ct_attchmt_type {
43d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA0,
45d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA1,
46d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA2,
47d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA3,
48d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA4,
50d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_DATA5,
51d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_BINARY,
52d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal CT_ATTCHMT_FILELIST
53d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal};
55d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalstruct ct_attchmt {
56d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal __u32 size;
57d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal enum ct_attchmt_type type;
58d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal char data[];
60d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal} __aligned(4);
61d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalstruct ct_event {
62d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal __u64 timestamp;
63d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal char submitter_name[MAX_SB_N];
65d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal char ev_name[MAX_EV_N];
66d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal enum ct_ev_type type;
67d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal __u32 attchmt_size;
68d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal __u32 flags;
70d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal struct ct_attchmt attachments[];
71d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal} __aligned(4);
72d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalenum kct_nlmsg_type {
73d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal KCT_EVENT,
75d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal KCT_SET_PID = 4200,
76d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal};
77d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwalstruct kct_packet {
78d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal struct nlmsghdr nlh;
80d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal struct ct_event event;
81d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal};
82d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define ATTCHMT_ALIGNMENT 4
83d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#ifndef KCT_ALIGN
85d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __KCT_ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask))
86d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __KCT_ALIGN(x, a) __KCT_ALIGN_MASK(x, (typeof(x))(a) - 1)
87d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define KCT_ALIGN(x, a) __KCT_ALIGN((x), (a))
88d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#endif
90d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define foreach_attchmt(Event, Attchmt)   if ((Event)->attchmt_size)   for ((Attchmt) = (Event)->attachments;   (Attchmt) < (typeof(Attchmt))(((char *)   (Event)->attachments) +   (Event)->attchmt_size);   (Attchmt) = (typeof(Attchmt))KCT_ALIGN(((size_t)(Attchmt))   + sizeof(*(Attchmt)) +   (Attchmt)->size, ATTCHMT_ALIGNMENT))
91d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define MKFN(fn, ...) MKFN_N(fn, ##__VA_ARGS__, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)(__VA_ARGS__)
92d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define MKFN_N(fn, n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n, ...) fn##n
93d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define kct_log(...) MKFN(__kct_log_, ##__VA_ARGS__)
95d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_4(Type, Submitter_name, Ev_name, flags)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
96d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_5(Type, Submitter_name, Ev_name, flags, Data0)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
97d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_6(Type, Submitter_name, Ev_name, flags, Data0, Data1)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
98d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_7(Type, Submitter_name, Ev_name, flags, Data0, Data1, Data2)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   if (Data2)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA2,   strlen(Data2) + 1, Data2, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
100d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_8(Type, Submitter_name, Ev_name, flags, Data0, Data1, Data2,   Data3)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   if (Data2)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA2,   strlen(Data2) + 1, Data2, GFP_ATOMIC);   if (Data3)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA3,   strlen(Data3) + 1, Data3, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
101d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_9(Type, Submitter_name, Ev_name, flags, Data0, Data1, Data2,   Data3, Data4)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   if (Data2)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA2,   strlen(Data2) + 1, Data2, GFP_ATOMIC);   if (Data3)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA3,   strlen(Data3) + 1, Data3, GFP_ATOMIC);   if (Data4)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA4,   strlen(Data4) + 1, Data4, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
102d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_10(Type, Submitter_name, Ev_name, flags, Data0, Data1, Data2,   Data3, Data4, Data5)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   if (Data2)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA2,   strlen(Data2) + 1, Data2, GFP_ATOMIC);   if (Data3)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA3,   strlen(Data3) + 1, Data3, GFP_ATOMIC);   if (Data4)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA4,   strlen(Data4) + 1, Data4, GFP_ATOMIC);   if (Data5)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA5,   strlen(Data5) + 1, Data5, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
103d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#define __kct_log_11(Type, Submitter_name, Ev_name, flags, Data0, Data1, Data2,   Data3, Data4, Data5, filelist)   do { if (kct_alloc_event) {   struct ct_event *__ev =   kct_alloc_event(Submitter_name, Ev_name, Type,   GFP_ATOMIC, flags);   if (__ev) {   if (Data0)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA0,   strlen(Data0) + 1, Data0, GFP_ATOMIC);   if (Data1)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA1,   strlen(Data1) + 1, Data1, GFP_ATOMIC);   if (Data2)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA2,   strlen(Data2) + 1, Data2, GFP_ATOMIC);   if (Data3)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA3,   strlen(Data3) + 1, Data3, GFP_ATOMIC);   if (Data4)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA4,   strlen(Data4) + 1, Data4, GFP_ATOMIC);   if (Data5)   kct_add_attchmt(&__ev, CT_ATTCHMT_DATA5,   strlen(Data5) + 1, Data5, GFP_ATOMIC);   if (filelist)   kct_add_attchmt(&__ev, CT_ATTCHMT_FILELIST,   strlen(filelist) + 1, filelist, GFP_ATOMIC);   kct_log_event(__ev, GFP_ATOMIC);   }   } } while (0)
105d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal#endif
106d9eec1df06b63ce346211e18cd69840e01bc115eTarun Agarwal
107