1 typedef enum PTevent { 2 SAdmit = 0, /* Edf admit */ 3 SRelease, /* Edf release, waiting to be scheduled */ 4 SEdf, /* running under EDF */ 5 SRun, /* running best effort */ 6 7 SReady, /* runnable but not running */ 8 SSleep, /* blocked; arg is PSstate| pc<<8 */ 9 SYield, /* blocked waiting for release */ 10 SSlice, /* slice exhausted */ 11 12 SDeadline, /* proc's deadline */ 13 SExpel, /* Edf expel */ 14 SDead, /* proc dies */ 15 SInts, /* Interrupt start */ 16 17 SInte, /* Interrupt end */ 18 STrap, /* fault */ 19 SUser, /* user event */ 20 SName, /* used to report names for pids */ 21 Nevent, 22 } Tevent; 23 24 enum { 25 PTsize = 4 + 4 + 4 + 8 + 8, 26 27 /* STrap arg flags */ 28 STrapRPF = 0x1000000000000000ULL, /* page fault (read) STrap arg */ 29 STrapWPF = 0x1000000000000000ULL, /* page fault (write) STrap arg */ 30 STrapSC = 0x2000000000000000ULL, /* sys call STrap arg */ 31 STrapMask = 0x0FFFFFFFFFFFFFFFULL, /* bits available in arg */ 32 33 /* Sleep states; keep in sync with the kernel schedstate 34 * BUG: generate automatically. 35 */ 36 PSDead = 0, /* not used */ 37 PSMoribund, /* not used */ 38 PSReady, /* not used */ 39 PSScheding, /* not used */ 40 PSRunning, /* not used */ 41 PSQueueing, 42 PSQueueingR, 43 PSQueueingW, 44 PSWakeme, 45 PSBroken, /* not used */ 46 PSStopped, /* not used */ 47 PSRendezvous, 48 PSWaitrelease, 49 50 }; 51 52 typedef struct PTraceevent PTraceevent; 53 struct PTraceevent { 54 u32int pid; /* for the process */ 55 u32int etype; /* Event type */ 56 u32int machno; /* where the event happen */ 57 vlong time; /* time stamp */ 58 u64int arg; /* for this event type */ 59 }; 60