| /* Copyright (c) 2009 The Regents of the University of California | 
 |  * See LICENSE for details.  */ | 
 |  | 
 | #pragma once | 
 |  | 
 | #include <ros/memlayout.h> | 
 | #include <ros/ring_syscall.h> | 
 | #include <ros/sysevent.h> | 
 | #include <ros/arch/arch.h> | 
 | #include <ros/common.h> | 
 | #include <ros/procinfo.h> | 
 | #include <ros/event.h> | 
 |  | 
 | typedef struct procdata { | 
 | 	/* | 
 | 	syscall_sring_t			syscallring; | 
 | 	char				pad1[SYSCALLRINGSIZE - | 
 | 	                                     sizeof(syscall_sring_t)]; | 
 | 	*/ | 
 | 	syscall_sring_t			*syscallring; | 
 | 	sysevent_sring_t		syseventring; | 
 | 	char				pad2[SYSEVENTRINGSIZE | 
 | 		                             - sizeof(sysevent_sring_t)]; | 
 | 	bool				printx_on; | 
 | 	uint8_t				pad8; | 
 | 	uint16_t			pad16; | 
 | 	uint32_t			pad32; | 
 | 	struct resource_req		res_req[MAX_NUM_RESOURCES]; | 
 | 	struct event_queue		*kernel_evts[MAX_NR_EVENT]; | 
 | 	/* Long range, would like these to be mapped in lazily, as the vcores | 
 | 	 * are requested.  Sharing MAX_NUM_CORES is a bit weird too. */ | 
 | 	struct preempt_data		vcore_preempt_data[MAX_NUM_CORES]; | 
 | } procdata_t; | 
 |  | 
 | #define PROCDATA_NUM_PAGES  ((sizeof(procdata_t)-1)/PGSIZE + 1) | 
 |  | 
 | /* TODO: I dislike having this not be a pointer (for kernel programming) */ | 
 | #define __procdata (*(procdata_t*)UDATA) |