60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
typedef enum PTevent {
 | 
						|
	SAdmit = 0,	/* Edf admit */
 | 
						|
	SRelease,	/* Edf release, waiting to be scheduled */
 | 
						|
	SEdf,		/* running under EDF */
 | 
						|
	SRun,		/* running best effort */
 | 
						|
 | 
						|
	SReady,		/* runnable but not running  */
 | 
						|
	SSleep,		/* blocked; arg is PSstate| pc<<8  */
 | 
						|
	SYield,		/* blocked waiting for release */
 | 
						|
	SSlice,		/* slice exhausted */
 | 
						|
 | 
						|
	SDeadline,	/* proc's deadline */
 | 
						|
	SExpel,		/* Edf expel */
 | 
						|
	SDead,		/* proc dies */
 | 
						|
	SInts,		/* Interrupt start */
 | 
						|
 | 
						|
	SInte,		/* Interrupt end */
 | 
						|
	STrap,		/* fault */
 | 
						|
	SUser,		/* user event */
 | 
						|
	SName,		/* used to report names for pids */
 | 
						|
	Nevent,
 | 
						|
} Tevent;
 | 
						|
 | 
						|
enum {
 | 
						|
	PTsize = 4 + 4 + 4 + 8 + 8,
 | 
						|
 | 
						|
	/* STrap arg flags */
 | 
						|
	STrapRPF = 0x1000000000000000ULL,	/* page fault (read) STrap arg */
 | 
						|
	STrapWPF = 0x1000000000000000ULL,	/* page fault (write) STrap arg */
 | 
						|
	STrapSC  = 0x2000000000000000ULL,	/* sys call STrap arg */
 | 
						|
	STrapMask = 0x0FFFFFFFFFFFFFFFULL,	/* bits available in arg */
 | 
						|
 | 
						|
	/* Sleep states; keep in sync with the kernel schedstate
 | 
						|
	 * BUG: generate automatically.
 | 
						|
	 */
 | 
						|
	PSDead = 0,		/* not used */
 | 
						|
	PSMoribund,		/* not used */
 | 
						|
	PSReady,		/* not used */
 | 
						|
	PSScheding,		/* not used */
 | 
						|
	PSRunning,		/* not used */
 | 
						|
	PSQueueing,
 | 
						|
	PSQueueingR,
 | 
						|
	PSQueueingW,
 | 
						|
	PSWakeme,
 | 
						|
	PSBroken,		/* not used */
 | 
						|
	PSStopped,		/* not used */
 | 
						|
	PSRendezvous,
 | 
						|
	PSWaitrelease,
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
typedef struct PTraceevent	PTraceevent;
 | 
						|
struct PTraceevent {
 | 
						|
	uint32_t	pid;	/* for the process */
 | 
						|
	uint32_t	etype;	/* Event type */
 | 
						|
	uint32_t	machno;	/* where the event happen */
 | 
						|
	int64_t		time;	/* time stamp  */
 | 
						|
	uint64_t	arg;	/* for this event type */
 | 
						|
};
 |