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