message user_x86_regs_entry {
	required uint64			r15		=  1;
	required uint64			r14		=  2;
	required uint64			r13		=  3;
	required uint64			r12		=  4;
	required uint64			bp		=  5;
	required uint64			bx		=  6;
	required uint64			r11		=  7;
	required uint64			r10		=  8;
	required uint64			r9		=  9;
	required uint64			r8		= 10;
	required uint64			ax		= 11;
	required uint64			cx		= 12;
	required uint64			dx		= 13;
	required uint64			si		= 14;
	required uint64			di		= 15;
	required uint64			orig_ax	 	= 16;
	required uint64			ip	 	= 17;
	required uint64			cs		= 18;
	required uint64			flags		= 19;
	required uint64			sp		= 20;
	required uint64			ss		= 21;
	required uint64			fs_base		= 22;
	required uint64			gs_base		= 23;
	required uint64			ds		= 24;
	required uint64			es		= 25;
	required uint64			fs		= 26;
	required uint64			gs		= 27;
}

message user_x86_fpregs_entry {
	required uint32			cwd		=  1;
	required uint32			swd		=  2;
	required uint32			twd		=  3;
	required uint32			fop		=  4;
	required uint64			rip		=  5;
	required uint64			rdp		=  6;
	required uint32			mxcsr		=  7;
	required uint32			mxcsr_mask	=  8;
	repeated uint32			st_space	=  9;
	repeated uint32			xmm_space	= 10;
	repeated uint32			padding		= 11;
}

message task_core_entry {
	required uint32			task_state	= 1;
	required uint32			exit_code	= 2;

	required uint32			personality	= 3;
	required uint32			flags		= 4;
	required uint64			blk_sigset	= 5;

	required string			comm		= 6;
}

message task_kobj_ids_entry {
	required uint32			vm_id		= 1;
	required uint32			files_id	= 2;
	required uint32			fs_id		= 3;
	required uint32			sighand_id	= 4;
}

message thread_info_x86 {
	required uint64			clear_tid_addr	= 1;
	required user_x86_regs_entry	gpregs		= 2;
	required user_x86_fpregs_entry	fpregs		= 3;
}

message thread_core_entry {
	required uint64			futex_rla	= 1;
	required uint32			futex_rla_len	= 2;
}

message core_entry {
	enum march {
		UNKNOWN		= 0;
		X86_64		= 1;
	}

	required march			mtype		= 1;
	optional thread_info_x86	thread_info	= 2;

	optional task_core_entry	tc		= 3;
	optional task_kobj_ids_entry	ids		= 4;
	optional thread_core_entry	thread_core	= 5;
}
