Em Wed, Apr 03, 2019 at 05:03:26PM +0200, Mark Wielaard escreveu: > On Wed, 2019-04-03 at 11:48 -0300, Arnaldo Carvalho de Melo wrote: > > Em Wed, Apr 03, 2019 at 04:05:06PM +0200, Mark Wielaard escreveu: > > > On Wed, 2019-04-03 at 10:19 -0300, Arnaldo Carvalho de Melo wrote: > > > > Most are false positives, as DWARF (let alone BTF) has explicit > > > > ways > > > > to tell that these are all __attribute__((aligned(something)) and > > > > pahole still don't infer those by realizing that its not a > > > > natural > > > > alignment, a heuristic that would catch most of these bigger > > > > holes, > > > > such as: > > > > > > DWARF does have DW_AT_alignment and GCC8 does output it. > > > > Excellent! So it is GCC that first used it? > > I just checked GCC 7.3.1 and it also emits it. > It was added by Alexandre Oliva two years ago: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63238 https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?h=bitfield&id=3571031a0ebe3ca9a334ac024eb77a1f28d29f25 For instance, for the running kernel, i.e. not specifying a vmlinux file makes it look at the build id of the running kernel and look up the matching vmlinux in the usual places, ending up with: [acme@quaco pahole]$ pahole -C inet_timewait_death_row struct inet_timewait_death_row { atomic_t tw_count; /* 0 4 */ /* XXX 60 bytes hole, try to pack */ /* --- cacheline 1 boundary (64 bytes) --- */ struct inet_hashinfo * hashinfo __attribute__((__aligned__(64)); /* 64 8 */ int sysctl_max_tw_buckets; /* 72 4 */ /* size: 128, cachelines: 2, members: 3 */ /* sum members: 16, holes: 1, sum holes: 60 */ /* padding: 52 */ }; [acme@quaco pahole]$ Or something more fun, task_struct with all its inner types expanded, quite a lot of unnatural alignments :-) $ pahole -EC task_struct struct task_struct { struct thread_info { long unsigned int flags; /* 0 8 */ /* typedef u32 -> __u32 */ unsigned int status; /* 8 4 */ } thread_info; /* 0 16 */ /* XXX last struct has 4 bytes of padding */ volatile long int state; /* 16 8 */ void * stack; /* 24 8 */ /* typedef refcount_t */ struct refcount_struct { /* typedef atomic_t */ struct { int counter; /* 32 4 */ } refs; /* 32 4 */ } usage; /* 32 4 */ unsigned int flags; /* 36 4 */ unsigned int ptrace; /* 40 4 */ /* XXX 4 bytes hole, try to pack */ struct llist_node { struct llist_node * next; /* 48 8 */ } wake_entry; /* 48 8 */ int on_cpu; /* 56 4 */ unsigned int cpu; /* 60 4 */ /* --- cacheline 1 boundary (64 bytes) --- */ unsigned int wakee_flips; /* 64 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int wakee_flip_decay_ts; /* 72 8 */ struct task_struct * last_wakee; /* 80 8 */ int recent_used_cpu; /* 88 4 */ int wake_cpu; /* 92 4 */ int on_rq; /* 96 4 */ int prio; /* 100 4 */ int static_prio; /* 104 4 */ int normal_prio; /* 108 4 */ unsigned int rt_priority; /* 112 4 */ /* XXX 4 bytes hole, try to pack */ const struct sched_class * sched_class; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ struct sched_entity { struct load_weight { long unsigned int weight; /* 128 8 */ /* typedef u32 -> __u32 */ unsigned int inv_weight; /* 136 4 */ } load; /* 128 16 */ /* XXX last struct has 4 bytes of padding */ long unsigned int runnable_weight; /* 144 8 */ struct rb_node { long unsigned int __rb_parent_color; /* 152 8 */ struct rb_node * rb_right; /* 160 8 */ struct rb_node * rb_left; /* 168 8 */ } run_node __attribute__((__aligned__(8)); /* 152 24 */ struct list_head { struct list_head * next; /* 176 8 */ struct list_head * prev; /* 184 8 */ } group_node; /* 176 16 */ /* --- cacheline 3 boundary (192 bytes) --- */ unsigned int on_rq; /* 192 4 */ /* XXX 4 bytes hole, try to pack */ /* typedef u64 -> __u64 */ long long unsigned int exec_start; /* 200 8 */ /* typedef u64 -> __u64 */ long long unsigned int sum_exec_runtime; /* 208 8 */ /* typedef u64 -> __u64 */ long long unsigned int vruntime; /* 216 8 */ /* typedef u64 -> __u64 */ long long unsigned int prev_sum_exec_runtime; /* 224 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_migrations; /* 232 8 */ struct sched_statistics { /* typedef u64 -> __u64 */ long long unsigned int wait_start; /* 240 8 */ /* typedef u64 -> __u64 */ long long unsigned int wait_max; /* 248 8 */ /* --- cacheline 4 boundary (256 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int wait_count; /* 256 8 */ /* typedef u64 -> __u64 */ long long unsigned int wait_sum; /* 264 8 */ /* typedef u64 -> __u64 */ long long unsigned int iowait_count; /* 272 8 */ /* typedef u64 -> __u64 */ long long unsigned int iowait_sum; /* 280 8 */ /* typedef u64 -> __u64 */ long long unsigned int sleep_start; /* 288 8 */ /* typedef u64 -> __u64 */ long long unsigned int sleep_max; /* 296 8 */ /* typedef s64 -> __s64 */ long long int sum_sleep_runtime; /* 304 8 */ /* typedef u64 -> __u64 */ long long unsigned int block_start; /* 312 8 */ /* --- cacheline 5 boundary (320 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int block_max; /* 320 8 */ /* typedef u64 -> __u64 */ long long unsigned int exec_max; /* 328 8 */ /* typedef u64 -> __u64 */ long long unsigned int slice_max; /* 336 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_migrations_cold; /* 344 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_failed_migrations_affine; /* 352 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_failed_migrations_running; /* 360 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_failed_migrations_hot; /* 368 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_forced_migrations; /* 376 8 */ /* --- cacheline 6 boundary (384 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups; /* 384 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_sync; /* 392 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_migrate; /* 400 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_local; /* 408 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_remote; /* 416 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_affine; /* 424 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_affine_attempts; /* 432 8 */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_passive; /* 440 8 */ /* --- cacheline 7 boundary (448 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int nr_wakeups_idle; /* 448 8 */ } statistics; /* 240 216 */ int depth; /* 456 4 */ /* XXX 4 bytes hole, try to pack */ struct sched_entity * parent; /* 464 8 */ struct cfs_rq * cfs_rq; /* 472 8 */ struct cfs_rq * my_q; /* 480 8 */ /* XXX 24 bytes hole, try to pack */ /* --- cacheline 8 boundary (512 bytes) --- */ struct sched_avg { /* typedef u64 -> __u64 */ long long unsigned int last_update_time; /* 512 8 */ /* typedef u64 -> __u64 */ long long unsigned int load_sum; /* 520 8 */ /* typedef u64 -> __u64 */ long long unsigned int runnable_load_sum; /* 528 8 */ /* typedef u32 -> __u32 */ unsigned int util_sum; /* 536 4 */ /* typedef u32 -> __u32 */ unsigned int period_contrib; /* 540 4 */ long unsigned int load_avg; /* 544 8 */ long unsigned int runnable_load_avg; /* 552 8 */ long unsigned int util_avg; /* 560 8 */ struct util_est { unsigned int enqueued; /* 568 4 */ unsigned int ewma; /* 572 4 */ } util_est __attribute__((__aligned__(8)); /* 568 8 */ } avg __attribute__((__aligned__(64)); /* 512 64 */ } se __attribute__((__aligned__(64)); /* 128 448 */ /* --- cacheline 9 boundary (576 bytes) --- */ struct sched_rt_entity { struct list_head { struct list_head * next; /* 576 8 */ struct list_head * prev; /* 584 8 */ } run_list; /* 576 16 */ long unsigned int timeout; /* 592 8 */ long unsigned int watchdog_stamp; /* 600 8 */ unsigned int time_slice; /* 608 4 */ short unsigned int on_rq; /* 612 2 */ short unsigned int on_list; /* 614 2 */ struct sched_rt_entity * back; /* 616 8 */ } rt; /* 576 48 */ struct task_group * sched_task_group; /* 624 8 */ struct sched_dl_entity { struct rb_node { long unsigned int __rb_parent_color; /* 632 8 */ /* --- cacheline 10 boundary (640 bytes) --- */ struct rb_node * rb_right; /* 640 8 */ struct rb_node * rb_left; /* 648 8 */ } rb_node __attribute__((__aligned__(8)); /* 632 24 */ /* typedef u64 -> __u64 */ long long unsigned int dl_runtime; /* 656 8 */ /* typedef u64 -> __u64 */ long long unsigned int dl_deadline; /* 664 8 */ /* typedef u64 -> __u64 */ long long unsigned int dl_period; /* 672 8 */ /* typedef u64 -> __u64 */ long long unsigned int dl_bw; /* 680 8 */ /* typedef u64 -> __u64 */ long long unsigned int dl_density; /* 688 8 */ /* typedef s64 -> __s64 */ long long int runtime; /* 696 8 */ /* --- cacheline 11 boundary (704 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int deadline; /* 704 8 */ unsigned int flags; /* 712 4 */ unsigned int dl_throttled:1; /* 716: 0 4 */ unsigned int dl_boosted:1; /* 716: 1 4 */ unsigned int dl_yielded:1; /* 716: 2 4 */ unsigned int dl_non_contending:1; /* 716: 3 4 */ unsigned int dl_overrun:1; /* 716: 4 4 */ /* XXX 27 bits hole, try to pack */ struct hrtimer { struct timerqueue_node { struct rb_node { long unsigned int __rb_parent_color; /* 720 8 */ struct rb_node * rb_right; /* 728 8 */ struct rb_node * rb_left; /* 736 8 */ } node __attribute__((__aligned__(8)); /* 720 24 */ /* typedef ktime_t -> s64 -> __s64 */ long long int expires; /* 744 8 */ } node __attribute__((__aligned__(8)); /* 720 32 */ /* typedef ktime_t -> s64 -> __s64 */ long long int _softexpires; /* 752 8 */ enum hrtimer_restart (*function)(struct hrtimer *); /* 760 8 */ /* --- cacheline 12 boundary (768 bytes) --- */ struct hrtimer_clock_base * base; /* 768 8 */ /* typedef u8 -> __u8 */ unsigned char state; /* 776 1 */ /* typedef u8 -> __u8 */ unsigned char is_rel; /* 777 1 */ /* typedef u8 -> __u8 */ unsigned char is_soft; /* 778 1 */ } dl_timer __attribute__((__aligned__(8)); /* 720 64 */ /* XXX last struct has 5 bytes of padding */ struct hrtimer { struct timerqueue_node { struct rb_node { long unsigned int __rb_parent_color; /* 784 8 */ struct rb_node * rb_right; /* 792 8 */ struct rb_node * rb_left; /* 800 8 */ } node __attribute__((__aligned__(8)); /* 784 24 */ /* typedef ktime_t -> s64 -> __s64 */ long long int expires; /* 808 8 */ } node __attribute__((__aligned__(8)); /* 784 32 */ /* typedef ktime_t -> s64 -> __s64 */ long long int _softexpires; /* 816 8 */ enum hrtimer_restart (*function)(struct hrtimer *); /* 824 8 */ /* --- cacheline 13 boundary (832 bytes) --- */ struct hrtimer_clock_base * base; /* 832 8 */ /* typedef u8 -> __u8 */ unsigned char state; /* 840 1 */ /* typedef u8 -> __u8 */ unsigned char is_rel; /* 841 1 */ /* typedef u8 -> __u8 */ unsigned char is_soft; /* 842 1 */ } inactive_timer __attribute__((__aligned__(8)); /* 784 64 */ /* XXX last struct has 5 bytes of padding */ } dl __attribute__((__aligned__(8)); /* 632 216 */ struct hlist_head { struct hlist_node * first; /* 848 8 */ } preempt_notifiers; /* 848 8 */ unsigned int btrace_seq; /* 856 4 */ unsigned int policy; /* 860 4 */ int nr_cpus_allowed; /* 864 4 */ /* XXX 4 bytes hole, try to pack */ /* typedef cpumask_t */ struct cpumask { long unsigned int bits[1]; /* 872 8 */ } cpus_allowed; /* 872 8 */ long unsigned int rcu_tasks_nvcsw; /* 880 8 */ /* typedef u8 -> __u8 */ unsigned char rcu_tasks_holdout; /* 888 1 */ /* typedef u8 -> __u8 */ unsigned char rcu_tasks_idx; /* 889 1 */ /* XXX 2 bytes hole, try to pack */ int rcu_tasks_idle_cpu; /* 892 4 */ /* --- cacheline 14 boundary (896 bytes) --- */ struct list_head { struct list_head * next; /* 896 8 */ struct list_head * prev; /* 904 8 */ } rcu_tasks_holdout_list; /* 896 16 */ struct sched_info { long unsigned int pcount; /* 912 8 */ long long unsigned int run_delay; /* 920 8 */ long long unsigned int last_arrival; /* 928 8 */ long long unsigned int last_queued; /* 936 8 */ } sched_info; /* 912 32 */ struct list_head { struct list_head * next; /* 944 8 */ struct list_head * prev; /* 952 8 */ } tasks; /* 944 16 */ /* --- cacheline 15 boundary (960 bytes) --- */ struct plist_node { int prio; /* 960 4 */ /* XXX 4 bytes hole, try to pack */ struct list_head { struct list_head * next; /* 968 8 */ struct list_head * prev; /* 976 8 */ } prio_list; /* 968 16 */ struct list_head { struct list_head * next; /* 984 8 */ struct list_head * prev; /* 992 8 */ } node_list; /* 984 16 */ } pushable_tasks; /* 960 40 */ struct rb_node { long unsigned int __rb_parent_color; /* 1000 8 */ struct rb_node * rb_right; /* 1008 8 */ struct rb_node * rb_left; /* 1016 8 */ } pushable_dl_tasks __attribute__((__aligned__(8)); /* 1000 24 */ /* --- cacheline 16 boundary (1024 bytes) --- */ struct mm_struct * mm; /* 1024 8 */ struct mm_struct * active_mm; /* 1032 8 */ struct vmacache { /* typedef u64 -> __u64 */ long long unsigned int seqnum; /* 1040 8 */ struct vm_area_struct * vmas[4]; /* 1048 32 */ } vmacache; /* 1040 40 */ struct task_rss_stat { int events; /* 1080 4 */ int count[4]; /* 1084 16 */ } rss_stat; /* 1080 20 */ /* --- cacheline 17 boundary (1088 bytes) was 12 bytes ago --- */ int exit_state; /* 1100 4 */ int exit_code; /* 1104 4 */ int exit_signal; /* 1108 4 */ int pdeath_signal; /* 1112 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int jobctl; /* 1120 8 */ unsigned int personality; /* 1128 4 */ unsigned int sched_reset_on_fork:1; /* 1132: 0 4 */ unsigned int sched_contributes_to_load:1; /* 1132: 1 4 */ unsigned int sched_migrated:1; /* 1132: 2 4 */ unsigned int sched_remote_wakeup:1; /* 1132: 3 4 */ /* XXX 28 bits hole, try to pack */ unsigned int in_execve:1; /* 1136: 0 4 */ unsigned int in_iowait:1; /* 1136: 1 4 */ unsigned int restore_sigmask:1; /* 1136: 2 4 */ unsigned int in_user_fault:1; /* 1136: 3 4 */ unsigned int no_cgroup_migration:1; /* 1136: 4 4 */ unsigned int use_memdelay:1; /* 1136: 5 4 */ /* XXX 26 bits hole, try to pack */ /* XXX 4 bytes hole, try to pack */ long unsigned int atomic_flags; /* 1144 8 */ /* --- cacheline 18 boundary (1152 bytes) --- */ struct restart_block { long int (*fn)(struct restart_block *); /* 1152 8 */ union { struct { u32 * uaddr; /* 1160 8 */ /* typedef u32 -> __u32 */ unsigned int val; /* 1168 4 */ /* typedef u32 -> __u32 */ unsigned int flags; /* 1172 4 */ /* typedef u32 -> __u32 */ unsigned int bitset; /* 1176 4 */ /* XXX 4 bytes hole, try to pack */ /* typedef u64 -> __u64 */ long long unsigned int time; /* 1184 8 */ u32 * uaddr2; /* 1192 8 */ } futex; /* 1160 40 */ struct { /* typedef clockid_t -> __kernel_clockid_t */ int clockid; /* 1160 4 */ enum timespec_type type; /* 1164 4 */ union { struct __kernel_timespec * rmtp; /* 1168 8 */ struct old_timespec32 * compat_rmtp; /* 1168 8 */ }; /* 1168 8 */ /* typedef u64 -> __u64 */ long long unsigned int expires; /* 1176 8 */ } nanosleep; /* 1160 24 */ struct { struct pollfd * ufds; /* 1160 8 */ int nfds; /* 1168 4 */ int has_timeout; /* 1172 4 */ long unsigned int tv_sec; /* 1176 8 */ long unsigned int tv_nsec; /* 1184 8 */ } poll; /* 1160 32 */ }; /* 1160 40 */ } restart_block; /* 1152 48 */ /* typedef pid_t -> __kernel_pid_t */ int pid; /* 1200 4 */ /* typedef pid_t -> __kernel_pid_t */ int tgid; /* 1204 4 */ long unsigned int stack_canary; /* 1208 8 */ /* --- cacheline 19 boundary (1216 bytes) --- */ struct task_struct * real_parent; /* 1216 8 */ struct task_struct * parent; /* 1224 8 */ struct list_head { struct list_head * next; /* 1232 8 */ struct list_head * prev; /* 1240 8 */ } children; /* 1232 16 */ struct list_head { struct list_head * next; /* 1248 8 */ struct list_head * prev; /* 1256 8 */ } sibling; /* 1248 16 */ struct task_struct * group_leader; /* 1264 8 */ struct list_head { struct list_head * next; /* 1272 8 */ /* --- cacheline 20 boundary (1280 bytes) --- */ struct list_head * prev; /* 1280 8 */ } ptraced; /* 1272 16 */ struct list_head { struct list_head * next; /* 1288 8 */ struct list_head * prev; /* 1296 8 */ } ptrace_entry; /* 1288 16 */ struct pid * thread_pid; /* 1304 8 */ struct hlist_node { struct hlist_node * next; /* 1312 8 */ struct hlist_node * * pprev; /* 1320 8 */ } pid_links[4]; /* 1312 64 */ /* --- cacheline 21 boundary (1344 bytes) was 32 bytes ago --- */ struct list_head { struct list_head * next; /* 1376 8 */ struct list_head * prev; /* 1384 8 */ } thread_group; /* 1376 16 */ struct list_head { struct list_head * next; /* 1392 8 */ struct list_head * prev; /* 1400 8 */ } thread_node; /* 1392 16 */ /* --- cacheline 22 boundary (1408 bytes) --- */ struct completion * vfork_done; /* 1408 8 */ int * set_child_tid; /* 1416 8 */ int * clear_child_tid; /* 1424 8 */ /* typedef u64 -> __u64 */ long long unsigned int utime; /* 1432 8 */ /* typedef u64 -> __u64 */ long long unsigned int stime; /* 1440 8 */ /* typedef u64 -> __u64 */ long long unsigned int gtime; /* 1448 8 */ struct prev_cputime { /* typedef u64 -> __u64 */ long long unsigned int utime; /* 1456 8 */ /* typedef u64 -> __u64 */ long long unsigned int stime; /* 1464 8 */ /* --- cacheline 23 boundary (1472 bytes) --- */ /* typedef raw_spinlock_t */ struct raw_spinlock { /* typedef arch_spinlock_t */ struct qspinlock { union { /* typedef atomic_t */ struct { int counter; /* 1472 4 */ } val; /* 1472 4 */ struct { /* typedef u8 -> __u8 */ unsigned char locked; /* 1472 1 */ /* typedef u8 -> __u8 */ unsigned char pending; /* 1473 1 */ }; /* 1472 2 */ struct { /* typedef u16 -> __u16 */ short unsigned int locked_pending; /* 1472 2 */ /* typedef u16 -> __u16 */ short unsigned int tail; /* 1474 2 */ }; /* 1472 4 */ }; /* 1472 4 */ } raw_lock; /* 1472 4 */ } lock; /* 1472 4 */ } prev_cputime; /* 1456 24 */ /* XXX last struct has 4 bytes of padding */ struct vtime { /* typedef seqcount_t */ struct seqcount { unsigned int sequence; /* 1480 4 */ } seqcount; /* 1480 4 */ /* XXX 4 bytes hole, try to pack */ long long unsigned int starttime; /* 1488 8 */ enum vtime_state state; /* 1496 4 */ /* XXX 4 bytes hole, try to pack */ /* typedef u64 -> __u64 */ long long unsigned int utime; /* 1504 8 */ /* typedef u64 -> __u64 */ long long unsigned int stime; /* 1512 8 */ /* typedef u64 -> __u64 */ long long unsigned int gtime; /* 1520 8 */ } vtime; /* 1480 48 */ /* typedef atomic_t */ struct { int counter; /* 1528 4 */ } tick_dep_mask; /* 1528 4 */ /* XXX 4 bytes hole, try to pack */ /* --- cacheline 24 boundary (1536 bytes) --- */ long unsigned int nvcsw; /* 1536 8 */ long unsigned int nivcsw; /* 1544 8 */ /* typedef u64 -> __u64 */ long long unsigned int start_time; /* 1552 8 */ /* typedef u64 -> __u64 */ long long unsigned int real_start_time; /* 1560 8 */ long unsigned int min_flt; /* 1568 8 */ long unsigned int maj_flt; /* 1576 8 */ struct task_cputime { /* typedef u64 -> __u64 */ long long unsigned int utime; /* 1584 8 */ /* typedef u64 -> __u64 */ long long unsigned int stime; /* 1592 8 */ /* --- cacheline 25 boundary (1600 bytes) --- */ long long unsigned int sum_exec_runtime; /* 1600 8 */ } cputime_expires; /* 1584 24 */ struct list_head { struct list_head * next; /* 1608 8 */ struct list_head * prev; /* 1616 8 */ } cpu_timers[3]; /* 1608 48 */ const struct cred * ptracer_cred; /* 1656 8 */ /* --- cacheline 26 boundary (1664 bytes) --- */ const struct cred * real_cred; /* 1664 8 */ const struct cred * cred; /* 1672 8 */ char comm[16]; /* 1680 16 */ struct nameidata * nameidata; /* 1696 8 */ struct sysv_sem { struct sem_undo_list * undo_list; /* 1704 8 */ } sysvsem; /* 1704 8 */ struct sysv_shm { struct list_head { struct list_head * next; /* 1712 8 */ struct list_head * prev; /* 1720 8 */ } shm_clist; /* 1712 16 */ } sysvshm; /* 1712 16 */ /* --- cacheline 27 boundary (1728 bytes) --- */ struct fs_struct * fs; /* 1728 8 */ struct files_struct * files; /* 1736 8 */ struct nsproxy * nsproxy; /* 1744 8 */ struct signal_struct * signal; /* 1752 8 */ struct sighand_struct * sighand; /* 1760 8 */ /* typedef sigset_t */ struct { long unsigned int sig[1]; /* 1768 8 */ } blocked; /* 1768 8 */ /* typedef sigset_t */ struct { long unsigned int sig[1]; /* 1776 8 */ } real_blocked; /* 1776 8 */ /* typedef sigset_t */ struct { long unsigned int sig[1]; /* 1784 8 */ } saved_sigmask; /* 1784 8 */ /* --- cacheline 28 boundary (1792 bytes) --- */ struct sigpending { struct list_head { struct list_head * next; /* 1792 8 */ struct list_head * prev; /* 1800 8 */ } list; /* 1792 16 */ /* typedef sigset_t */ struct { long unsigned int sig[1]; /* 1808 8 */ } signal; /* 1808 8 */ } pending; /* 1792 24 */ long unsigned int sas_ss_sp; /* 1816 8 */ /* typedef size_t -> __kernel_size_t -> __kernel_ulong_t */ long unsigned int sas_ss_size; /* 1824 8 */ unsigned int sas_ss_flags; /* 1832 4 */ /* XXX 4 bytes hole, try to pack */ struct callback_head * task_works; /* 1840 8 */ struct audit_context * audit_context; /* 1848 8 */ /* --- cacheline 29 boundary (1856 bytes) --- */ /* typedef kuid_t */ struct { /* typedef uid_t -> __kernel_uid32_t */ unsigned int val; /* 1856 4 */ } loginuid; /* 1856 4 */ unsigned int sessionid; /* 1860 4 */ struct seccomp { int mode; /* 1864 4 */ /* XXX 4 bytes hole, try to pack */ struct seccomp_filter * filter; /* 1872 8 */ } seccomp; /* 1864 16 */ /* typedef u32 -> __u32 */ unsigned int parent_exec_id; /* 1880 4 */ /* typedef u32 -> __u32 */ unsigned int self_exec_id; /* 1884 4 */ /* typedef spinlock_t */ struct spinlock { union { struct raw_spinlock { /* typedef arch_spinlock_t */ struct qspinlock { union { /* typedef atomic_t */ struct { int counter; /* 1888 4 */ } val; /* 1888 4 */ struct { /* typedef u8 -> __u8 */ unsigned char locked; /* 1888 1 */ /* typedef u8 -> __u8 */ unsigned char pending; /* 1889 1 */ }; /* 1888 2 */ struct { /* typedef u16 -> __u16 */ short unsigned int locked_pending; /* 1888 2 */ /* typedef u16 -> __u16 */ short unsigned int tail; /* 1890 2 */ }; /* 1888 4 */ }; /* 1888 4 */ } raw_lock; /* 1888 4 */ } rlock; /* 1888 4 */ }; /* 1888 4 */ } alloc_lock; /* 1888 4 */ /* typedef raw_spinlock_t */ struct raw_spinlock { /* typedef arch_spinlock_t */ struct qspinlock { union { /* typedef atomic_t */ struct { int counter; /* 1892 4 */ } val; /* 1892 4 */ struct { /* typedef u8 -> __u8 */ unsigned char locked; /* 1892 1 */ /* typedef u8 -> __u8 */ unsigned char pending; /* 1893 1 */ }; /* 1892 2 */ struct { /* typedef u16 -> __u16 */ short unsigned int locked_pending; /* 1892 2 */ /* typedef u16 -> __u16 */ short unsigned int tail; /* 1894 2 */ }; /* 1892 4 */ }; /* 1892 4 */ } raw_lock; /* 1892 4 */ } pi_lock; /* 1892 4 */ struct wake_q_node { struct wake_q_node * next; /* 1896 8 */ } wake_q; /* 1896 8 */ struct rb_root_cached { struct rb_root { struct rb_node * rb_node; /* 1904 8 */ } rb_root; /* 1904 8 */ struct rb_node * rb_leftmost; /* 1912 8 */ } pi_waiters; /* 1904 16 */ /* --- cacheline 30 boundary (1920 bytes) --- */ struct task_struct * pi_top_task; /* 1920 8 */ struct rt_mutex_waiter * pi_blocked_on; /* 1928 8 */ void * journal_info; /* 1936 8 */ struct bio_list * bio_list; /* 1944 8 */ struct blk_plug * plug; /* 1952 8 */ struct reclaim_state * reclaim_state; /* 1960 8 */ struct backing_dev_info * backing_dev_info; /* 1968 8 */ struct io_context * io_context; /* 1976 8 */ /* --- cacheline 31 boundary (1984 bytes) --- */ struct capture_control * capture_control; /* 1984 8 */ long unsigned int ptrace_message; /* 1992 8 */ kernel_siginfo_t * last_siginfo; /* 2000 8 */ struct task_io_accounting { /* typedef u64 -> __u64 */ long long unsigned int rchar; /* 2008 8 */ /* typedef u64 -> __u64 */ long long unsigned int wchar; /* 2016 8 */ /* typedef u64 -> __u64 */ long long unsigned int syscr; /* 2024 8 */ /* typedef u64 -> __u64 */ long long unsigned int syscw; /* 2032 8 */ /* typedef u64 -> __u64 */ long long unsigned int read_bytes; /* 2040 8 */ /* --- cacheline 32 boundary (2048 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int write_bytes; /* 2048 8 */ /* typedef u64 -> __u64 */ long long unsigned int cancelled_write_bytes; /* 2056 8 */ } ioac; /* 2008 56 */ /* typedef u64 -> __u64 */ long long unsigned int acct_rss_mem1; /* 2064 8 */ /* typedef u64 -> __u64 */ long long unsigned int acct_vm_mem1; /* 2072 8 */ /* typedef u64 -> __u64 */ long long unsigned int acct_timexpd; /* 2080 8 */ /* typedef nodemask_t */ struct { long unsigned int bits[16]; /* 2088 128 */ } mems_allowed; /* 2088 128 */ /* --- cacheline 34 boundary (2176 bytes) was 40 bytes ago --- */ /* typedef seqcount_t */ struct seqcount { unsigned int sequence; /* 2216 4 */ } mems_allowed_seq; /* 2216 4 */ int cpuset_mem_spread_rotor; /* 2220 4 */ int cpuset_slab_spread_rotor; /* 2224 4 */ /* XXX 4 bytes hole, try to pack */ struct css_set * cgroups; /* 2232 8 */ /* --- cacheline 35 boundary (2240 bytes) --- */ struct list_head { struct list_head * next; /* 2240 8 */ struct list_head * prev; /* 2248 8 */ } cg_list; /* 2240 16 */ /* typedef u32 -> __u32 */ unsigned int closid; /* 2256 4 */ /* typedef u32 -> __u32 */ unsigned int rmid; /* 2260 4 */ struct robust_list_head * robust_list; /* 2264 8 */ struct compat_robust_list_head * compat_robust_list; /* 2272 8 */ struct list_head { struct list_head * next; /* 2280 8 */ struct list_head * prev; /* 2288 8 */ } pi_state_list; /* 2280 16 */ struct futex_pi_state * pi_state_cache; /* 2296 8 */ /* --- cacheline 36 boundary (2304 bytes) --- */ struct perf_event_context * perf_event_ctxp[2]; /* 2304 16 */ struct mutex { /* typedef atomic_long_t -> atomic64_t */ struct { long int counter; /* 2320 8 */ } owner; /* 2320 8 */ /* typedef spinlock_t */ struct spinlock { union { struct raw_spinlock { /* typedef arch_spinlock_t */ struct qspinlock { union { /* typedef atomic_t */ struct { int counter; /* 2328 4 */ } val; /* 2328 4 */ struct { /* typedef u8 -> __u8 */ unsigned char locked; /* 2328 1 */ /* typedef u8 -> __u8 */ unsigned char pending; /* 2329 1 */ }; /* 2328 2 */ struct { /* typedef u16 -> __u16 */ short unsigned int locked_pending; /* 2328 2 */ /* typedef u16 -> __u16 */ short unsigned int tail; /* 2330 2 */ }; /* 2328 4 */ }; /* 2328 4 */ } raw_lock; /* 2328 4 */ } rlock; /* 2328 4 */ }; /* 2328 4 */ } wait_lock; /* 2328 4 */ struct optimistic_spin_queue { /* typedef atomic_t */ struct { int counter; /* 2332 4 */ } tail; /* 2332 4 */ } osq; /* 2332 4 */ struct list_head { struct list_head * next; /* 2336 8 */ struct list_head * prev; /* 2344 8 */ } wait_list; /* 2336 16 */ } perf_event_mutex; /* 2320 32 */ struct list_head { struct list_head * next; /* 2352 8 */ struct list_head * prev; /* 2360 8 */ } perf_event_list; /* 2352 16 */ /* --- cacheline 37 boundary (2368 bytes) --- */ struct mempolicy * mempolicy; /* 2368 8 */ short int il_prev; /* 2376 2 */ short int pref_node_fork; /* 2378 2 */ int numa_scan_seq; /* 2380 4 */ unsigned int numa_scan_period; /* 2384 4 */ unsigned int numa_scan_period_max; /* 2388 4 */ int numa_preferred_nid; /* 2392 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int numa_migrate_retry; /* 2400 8 */ /* typedef u64 -> __u64 */ long long unsigned int node_stamp; /* 2408 8 */ /* typedef u64 -> __u64 */ long long unsigned int last_task_numa_placement; /* 2416 8 */ /* typedef u64 -> __u64 */ long long unsigned int last_sum_exec_runtime; /* 2424 8 */ /* --- cacheline 38 boundary (2432 bytes) --- */ struct callback_head { struct callback_head * next; /* 2432 8 */ void (*func)(struct callback_head *); /* 2440 8 */ } numa_work __attribute__((__aligned__(8)); /* 2432 16 */ struct numa_group * numa_group; /* 2448 8 */ long unsigned int * numa_faults; /* 2456 8 */ long unsigned int total_numa_faults; /* 2464 8 */ long unsigned int numa_faults_locality[3]; /* 2472 24 */ /* --- cacheline 39 boundary (2496 bytes) --- */ long unsigned int numa_pages_migrated; /* 2496 8 */ struct rseq * rseq; /* 2504 8 */ /* typedef u32 -> __u32 */ unsigned int rseq_len; /* 2512 4 */ /* typedef u32 -> __u32 */ unsigned int rseq_sig; /* 2516 4 */ long unsigned int rseq_event_mask; /* 2520 8 */ struct tlbflush_unmap_batch { struct arch_tlbflush_unmap_batch { struct cpumask { long unsigned int bits[1]; /* 2528 8 */ } cpumask; /* 2528 8 */ } arch; /* 2528 8 */ /* typedef bool */ _Bool flush_required; /* 2536 1 */ /* typedef bool */ _Bool writable; /* 2537 1 */ } tlb_ubc; /* 2528 16 */ /* XXX last struct has 6 bytes of padding */ struct callback_head { struct callback_head * next; /* 2544 8 */ void (*func)(struct callback_head *); /* 2552 8 */ } rcu __attribute__((__aligned__(8)); /* 2544 16 */ /* --- cacheline 40 boundary (2560 bytes) --- */ struct pipe_inode_info * splice_pipe; /* 2560 8 */ struct page_frag { struct page * page; /* 2568 8 */ /* typedef __u32 */ unsigned int offset; /* 2576 4 */ /* typedef __u32 */ unsigned int size; /* 2580 4 */ } task_frag; /* 2568 16 */ struct task_delay_info * delays; /* 2584 8 */ int nr_dirtied; /* 2592 4 */ int nr_dirtied_pause; /* 2596 4 */ long unsigned int dirty_paused_when; /* 2600 8 */ int latency_record_count; /* 2608 4 */ /* XXX 4 bytes hole, try to pack */ struct latency_record { long unsigned int backtrace[12]; /* 2616 96 */ /* --- cacheline 42 boundary (2688 bytes) was 24 bytes ago --- */ unsigned int count; /* 2712 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int time; /* 2720 8 */ long unsigned int max; /* 2728 8 */ } latency_record[32]; /* 2616 3840 */ /* --- cacheline 100 boundary (6400 bytes) was 56 bytes ago --- */ /* typedef u64 -> __u64 */ long long unsigned int timer_slack_ns; /* 6456 8 */ /* --- cacheline 101 boundary (6464 bytes) --- */ /* typedef u64 -> __u64 */ long long unsigned int default_timer_slack_ns; /* 6464 8 */ int curr_ret_stack; /* 6472 4 */ int curr_ret_depth; /* 6476 4 */ struct ftrace_ret_stack * ret_stack; /* 6480 8 */ long long unsigned int ftrace_timestamp; /* 6488 8 */ /* typedef atomic_t */ struct { int counter; /* 6496 4 */ } trace_overrun; /* 6496 4 */ /* typedef atomic_t */ struct { int counter; /* 6500 4 */ } tracing_graph_pause; /* 6500 4 */ long unsigned int trace; /* 6504 8 */ long unsigned int trace_recursion; /* 6512 8 */ struct mem_cgroup * memcg_in_oom; /* 6520 8 */ /* --- cacheline 102 boundary (6528 bytes) --- */ /* typedef gfp_t */ unsigned int memcg_oom_gfp_mask; /* 6528 4 */ int memcg_oom_order; /* 6532 4 */ unsigned int memcg_nr_pages_over_high; /* 6536 4 */ /* XXX 4 bytes hole, try to pack */ struct mem_cgroup * active_memcg; /* 6544 8 */ struct request_queue * throttle_queue; /* 6552 8 */ struct uprobe_task * utask; /* 6560 8 */ unsigned int sequential_io; /* 6568 4 */ unsigned int sequential_io_avg; /* 6572 4 */ int pagefault_disabled; /* 6576 4 */ /* XXX 4 bytes hole, try to pack */ struct task_struct * oom_reaper_list; /* 6584 8 */ /* --- cacheline 103 boundary (6592 bytes) --- */ struct vm_struct * stack_vm_area; /* 6592 8 */ /* typedef refcount_t */ struct refcount_struct { /* typedef atomic_t */ struct { int counter; /* 6600 4 */ } refs; /* 6600 4 */ } stack_refcount; /* 6600 4 */ /* XXX 4 bytes hole, try to pack */ void * security; /* 6608 8 */ /* XXX 40 bytes hole, try to pack */ /* --- cacheline 104 boundary (6656 bytes) --- */ struct thread_struct { struct desc_struct { /* typedef u16 -> __u16 */ short unsigned int limit0; /* 6656 2 */ /* typedef u16 -> __u16 */ short unsigned int base0; /* 6658 2 */ /* typedef u16 -> __u16 */ short unsigned int base1:8; /* 6660: 0 2 */ /* typedef u16 -> __u16 */ short unsigned int type:4; /* 6660: 8 2 */ /* typedef u16 -> __u16 */ short unsigned int s:1; /* 6660:12 2 */ /* typedef u16 -> __u16 */ short unsigned int dpl:2; /* 6660:13 2 */ /* typedef u16 -> __u16 */ short unsigned int p:1; /* 6660:15 2 */ /* typedef u16 -> __u16 */ short unsigned int limit1:4; /* 6662: 0 2 */ /* typedef u16 -> __u16 */ short unsigned int avl:1; /* 6662: 4 2 */ /* typedef u16 -> __u16 */ short unsigned int l:1; /* 6662: 5 2 */ /* typedef u16 -> __u16 */ short unsigned int d:1; /* 6662: 6 2 */ /* typedef u16 -> __u16 */ short unsigned int g:1; /* 6662: 7 2 */ /* typedef u16 -> __u16 */ short unsigned int base2:8; /* 6662: 8 2 */ } tls_array[3]; /* 6656 24 */ long unsigned int sp; /* 6680 8 */ short unsigned int es; /* 6688 2 */ short unsigned int ds; /* 6690 2 */ short unsigned int fsindex; /* 6692 2 */ short unsigned int gsindex; /* 6694 2 */ long unsigned int fsbase; /* 6696 8 */ long unsigned int gsbase; /* 6704 8 */ struct perf_event * ptrace_bps[4]; /* 6712 32 */ /* --- cacheline 105 boundary (6720 bytes) was 24 bytes ago --- */ long unsigned int debugreg6; /* 6744 8 */ long unsigned int ptrace_dr7; /* 6752 8 */ long unsigned int cr2; /* 6760 8 */ long unsigned int trap_nr; /* 6768 8 */ long unsigned int error_code; /* 6776 8 */ /* --- cacheline 106 boundary (6784 bytes) --- */ long unsigned int * io_bitmap_ptr; /* 6784 8 */ long unsigned int iopl; /* 6792 8 */ unsigned int io_bitmap_max; /* 6800 4 */ /* XXX 4 bytes hole, try to pack */ /* typedef mm_segment_t */ struct { long unsigned int seg; /* 6808 8 */ } addr_limit; /* 6808 8 */ unsigned int sig_on_uaccess_err:1; /* 6816: 0 4 */ unsigned int uaccess_err:1; /* 6816: 1 4 */ /* XXX 30 bits hole, try to pack */ /* XXX 28 bytes hole, try to pack */ /* --- cacheline 107 boundary (6848 bytes) --- */ struct fpu { unsigned int last_cpu; /* 6848 4 */ unsigned char initialized; /* 6852 1 */ /* XXX 3 bytes hole, try to pack */ long unsigned int avx512_timestamp; /* 6856 8 */ /* XXX 48 bytes hole, try to pack */ /* --- cacheline 108 boundary (6912 bytes) --- */ union fpregs_state { struct fregs_state { /* typedef u32 -> __u32 */ unsigned int cwd; /* 6912 4 */ /* typedef u32 -> __u32 */ unsigned int swd; /* 6916 4 */ /* typedef u32 -> __u32 */ unsigned int twd; /* 6920 4 */ /* typedef u32 -> __u32 */ unsigned int fip; /* 6924 4 */ /* typedef u32 -> __u32 */ unsigned int fcs; /* 6928 4 */ /* typedef u32 -> __u32 */ unsigned int foo; /* 6932 4 */ /* typedef u32 -> __u32 */ unsigned int fos; /* 6936 4 */ /* typedef u32 -> __u32 */ unsigned int st_space[20]; /* 6940 80 */ /* --- cacheline 109 boundary (6976 bytes) was 44 bytes ago --- */ /* typedef u32 -> __u32 */ unsigned int status; /* 7020 4 */ } fsave; /* 6912 112 */ struct fxregs_state { /* typedef u16 -> __u16 */ short unsigned int cwd; /* 6912 2 */ /* typedef u16 -> __u16 */ short unsigned int swd; /* 6914 2 */ /* typedef u16 -> __u16 */ short unsigned int twd; /* 6916 2 */ /* typedef u16 -> __u16 */ short unsigned int fop; /* 6918 2 */ union { struct { /* typedef u64 -> __u64 */ long long unsigned int rip; /* 6920 8 */ /* typedef u64 -> __u64 */ long long unsigned int rdp; /* 6928 8 */ }; /* 6920 16 */ struct { /* typedef u32 -> __u32 */ unsigned int fip; /* 6920 4 */ /* typedef u32 -> __u32 */ unsigned int fcs; /* 6924 4 */ /* typedef u32 -> __u32 */ unsigned int foo; /* 6928 4 */ /* typedef u32 -> __u32 */ unsigned int fos; /* 6932 4 */ }; /* 6920 16 */ }; /* 6920 16 */ /* typedef u32 -> __u32 */ unsigned int mxcsr; /* 6936 4 */ /* typedef u32 -> __u32 */ unsigned int mxcsr_mask; /* 6940 4 */ /* typedef u32 -> __u32 */ unsigned int st_space[32]; /* 6944 128 */ /* --- cacheline 110 boundary (7040 bytes) was 32 bytes ago --- */ /* typedef u32 -> __u32 */ unsigned int xmm_space[64]; /* 7072 256 */ /* --- cacheline 114 boundary (7296 bytes) was 32 bytes ago --- */ /* typedef u32 -> __u32 */ unsigned int padding[12]; /* 7328 48 */ /* --- cacheline 115 boundary (7360 bytes) was 16 bytes ago --- */ union { /* typedef u32 -> __u32 */ unsigned int padding1[12]; /* 7376 48 */ /* typedef u32 -> __u32 */ unsigned int sw_reserved[12]; /* 7376 48 */ }; /* 7376 48 */ } fxsave __attribute__((__aligned__(16)); /* 6912 512 */ struct swregs_state { /* typedef u32 -> __u32 */ unsigned int cwd; /* 6912 4 */ /* typedef u32 -> __u32 */ unsigned int swd; /* 6916 4 */ /* typedef u32 -> __u32 */ unsigned int twd; /* 6920 4 */ /* typedef u32 -> __u32 */ unsigned int fip; /* 6924 4 */ /* typedef u32 -> __u32 */ unsigned int fcs; /* 6928 4 */ /* typedef u32 -> __u32 */ unsigned int foo; /* 6932 4 */ /* typedef u32 -> __u32 */ unsigned int fos; /* 6936 4 */ /* typedef u32 -> __u32 */ unsigned int st_space[20]; /* 6940 80 */ /* --- cacheline 109 boundary (6976 bytes) was 44 bytes ago --- */ /* typedef u8 -> __u8 */ unsigned char ftop; /* 7020 1 */ /* typedef u8 -> __u8 */ unsigned char changed; /* 7021 1 */ /* typedef u8 -> __u8 */ unsigned char lookahead; /* 7022 1 */ /* typedef u8 -> __u8 */ unsigned char no_update; /* 7023 1 */ /* typedef u8 -> __u8 */ unsigned char rm; /* 7024 1 */ /* typedef u8 -> __u8 */ unsigned char alimit; /* 7025 1 */ /* XXX 6 bytes hole, try to pack */ struct math_emu_info * info; /* 7032 8 */ /* --- cacheline 110 boundary (7040 bytes) --- */ /* typedef u32 -> __u32 */ unsigned int entry_eip; /* 7040 4 */ } soft; /* 6912 136 */ struct xregs_state { struct fxregs_state { /* typedef u16 -> __u16 */ short unsigned int cwd; /* 6912 2 */ /* typedef u16 -> __u16 */ short unsigned int swd; /* 6914 2 */ /* typedef u16 -> __u16 */ short unsigned int twd; /* 6916 2 */ /* typedef u16 -> __u16 */ short unsigned int fop; /* 6918 2 */ union { struct { /* typedef u64 -> __u64 */ long long unsigned int rip; /* 6920 8 */ /* typedef u64 -> __u64 */ long long unsigned int rdp; /* 6928 8 */ }; /* 6920 16 */ struct { /* typedef u32 -> __u32 */ unsigned int fip; /* 6920 4 */ /* typedef u32 -> __u32 */ unsigned int fcs; /* 6924 4 */ /* typedef u32 -> __u32 */ unsigned int foo; /* 6928 4 */ /* typedef u32 -> __u32 */ unsigned int fos; /* 6932 4 */ }; /* 6920 16 */ }; /* 6920 16 */ /* typedef u32 -> __u32 */ unsigned int mxcsr; /* 6936 4 */ /* typedef u32 -> __u32 */ unsigned int mxcsr_mask; /* 6940 4 */ /* typedef u32 -> __u32 */ unsigned int st_space[32]; /* 6944 128 */ /* --- cacheline 110 boundary (7040 bytes) was 32 bytes ago --- */ /* typedef u32 -> __u32 */ unsigned int xmm_space[64]; /* 7072 256 */ /* --- cacheline 114 boundary (7296 bytes) was 32 bytes ago --- */ /* typedef u32 -> __u32 */ unsigned int padding[12]; /* 7328 48 */ /* --- cacheline 115 boundary (7360 bytes) was 16 bytes ago --- */ union { /* typedef u32 -> __u32 */ unsigned int padding1[12]; /* 7376 48 */ /* typedef u32 -> __u32 */ unsigned int sw_reserved[12]; /* 7376 48 */ }; /* 7376 48 */ } i387 __attribute__((__aligned__(1)); /* 6912 512 */ /* --- cacheline 116 boundary (7424 bytes) --- */ struct xstate_header { /* typedef u64 -> __u64 */ long long unsigned int xfeatures; /* 7424 8 */ /* typedef u64 -> __u64 */ long long unsigned int xcomp_bv; /* 7432 8 */ /* typedef u64 -> __u64 */ long long unsigned int reserved[6]; /* 7440 48 */ } header; /* 7424 64 */ /* --- cacheline 117 boundary (7488 bytes) --- */ /* typedef u8 -> __u8 */ unsigned char extended_state_area[0]; /* 7488 0 */ } xsave __attribute__((__aligned__(64)); /* 6912 576 */ /* typedef u8 -> __u8 */ unsigned char __padding[4096]; /* 6912 4096 */ } state __attribute__((__aligned__(64)); /* 6912 4096 */ } fpu __attribute__((__aligned__(64)); /* 6848 4160 */ } thread __attribute__((__aligned__(64)); /* 6656 4352 */ /* size: 11008, cachelines: 172, members: 207 */ /* sum members: 10902, holes: 16, sum holes: 98 */ /* sum bitfield members: 10 bits, bit holes: 2, sum bit holes: 54 bits */ /* paddings: 3, sum paddings: 14 */ };