Re: [PATCH pahole 1/4] dwarves: revert semantics of member bit/byte hole

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 */
};




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux