home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#)defs.h 2.5 92/01/10
- */
-
- typedef struct tcb /* Trace Control Block */ {
- short flags;
- #define TCB_STARTUP 01 /* We have just begun ptracing this process */
- #define TCB_INUSE 02 /* This table entry is in use */
- #define TCB_INSYSCALL 04 /* A system call is in progress */
- #define TCB_ATTACHED 010 /* Process is not our own child */
- #define TCB_EXITING 020 /* As far as we know, this process is exiting */
- #define TCB_SUSPENDED 040 /* Process has done a wait(4), that can
- not be allowed to complete just now */
- #define TCB_BPTSET 0100 /* "Breakpoint" set after fork(2) */
- #define TCB_SIGTRAPPED 0200 /* Process wanted to block SIGTRAP */
-
- #define entering(tcp) (!((tcp)->flags & TCB_INSYSCALL))
- #define exiting(tcp) ((tcp)->flags & TCB_INSYSCALL)
- #define syserror(tcp) ((tcp)->u_error != 0)
- #define waiting_parent(tcp) \
- (tcp->parent && \
- (tcp->parent->flags & TCB_SUSPENDED) && \
- (tcp->parent->waitpid <= 0 || tcp->parent->waitpid == tcp->pid))
-
- int pid; /* Process Id of this entry */
- int scno; /* System call number */
- int u_args[8]; /* System call arguments */
- int u_error; /* Error code */
- int u_rval; /* (first) return value */
- FILE *outf; /* Output file for this process */
- char *auxstr; /* Auxiliary info from syscall (see RVAL_STR) */
-
- /* Support for tracing forked processes */
- struct tcb *parent; /* Parent of this process */
- int nchildren; /* # of traced children */
- int waitpid; /* pid(s) this process is waiting for */
- /* (1st arg of wait4()) */
- int baddr; /* `Breakpoint' address */
- int inst[2]; /* Instructions on above */
- } Tcb;
- #define NULLTCB ((struct tcb *)0)
-
- typedef struct xlat {
- int val;
- char *str;
- } Xlat;
- extern char *xlookup();
-
- #define MAXPROC 16
- extern struct tcb tcbtab[];
- extern struct tcb *alloctcb();
- extern void droptcb();
-
- extern char *signals[];
- extern int debug, verbose, followfork, tflag, cflag;
- extern unsigned int max_str_len;
- extern int Nproc;
-
- extern void newoutf();
- extern void tprintf();
- extern int syscall();
- extern void printxval();
- extern int printargs();
- extern int addflags();
- extern int printflags();
- extern int umove();
- extern int umovestr();
- extern int printstr();
- extern void printtv();
- extern void printsock();
-
- /*
- * sys_* return values
- */
- /* Format of syscall return values */
- #define RVAL_DEC 0 /* decimal format */
- #define RVAL_HEX 1 /* hex format */
- #define RVAL_OCT 2 /* octal format */
- #define RVAL_UDEC 3 /* unsigned decimal format */
- #define RVAL_FMASK 07 /* mask for these values */
-
- #define RVAL_STR 010 /* Print `auxstr' field after return val */
- #define RVAL_NONE 020 /* Print nothing */
-
- #define DFLT_STR_LEN 32 /* default maximum # of bytes printed in
- `printstr', change with `-s' switch */
-
- /* macro's */
- #ifndef MAX
- #define MAX(a,b) (((a)>(b))?(a):(b))
- #endif
- #ifndef MIN
- #define MIN(a,b) (((a)<(b))?(a):(b))
- #endif
-
- /* get offset of field within a user struct */
- #define uoff(field) ((char *)&(((struct user *)0)->field) - \
- (char *)(struct user *)0)
- #define Xoff(X, field) ((char *)&(((struct X *)0)->field) - \
- (char *)(struct X *)0)
-