diff options
author | aiju <devnull@localhost> | 2018-11-10 13:46:16 +0000 |
---|---|---|
committer | aiju <devnull@localhost> | 2018-11-10 13:46:16 +0000 |
commit | e6d99771e5c1eef3f69fc847253d4709ffaa84be (patch) | |
tree | 16161401edc25c084ad24533519e094716965635 /sys/src/cmd/dtracy/dat.h | |
parent | 8c097ae84a500eae9c8e4ee21b7b3ea8f8d23259 (diff) |
adding dtracy (crude early version)
Diffstat (limited to 'sys/src/cmd/dtracy/dat.h')
-rw-r--r-- | sys/src/cmd/dtracy/dat.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/sys/src/cmd/dtracy/dat.h b/sys/src/cmd/dtracy/dat.h new file mode 100644 index 000000000..fc6737b4c --- /dev/null +++ b/sys/src/cmd/dtracy/dat.h @@ -0,0 +1,123 @@ +typedef struct Node Node; +typedef struct Symbol Symbol; +typedef struct SymTab SymTab; +typedef struct Clause Clause; +typedef struct Enab Enab; +typedef struct Stat Stat; +typedef struct Type Type; + +enum { + SYMHASH = 256, +}; + +struct Type { + enum { + TYPINVAL, + TYPINT, + TYPPTR, + TYPSTRING, + } type; + int size; + uchar sign; + Type *ref; + Type *typenext; +}; + +struct Symbol { + enum { + SYMNONE, + SYMVAR, + } type; + char *name; + int idx; + Symbol *next; + Type *typ; +}; + +struct SymTab { + Symbol *sym[SYMHASH]; +}; + +struct Node { + enum { + OINVAL, + OSYM, + ONUM, + OSTR, + OBIN, + OLNOT, + OTERN, + ORECORD, + OCAST, + } type; + enum { + OPINVAL, + OPADD, + OPSUB, + OPMUL, + OPDIV, + OPMOD, + OPAND, + OPOR, + OPXOR, + OPLSH, + OPRSH, + OPEQ, + OPNE, + OPLT, + OPLE, + OPLAND, + OPLOR, + OPXNOR, + } op; + Node *n1, *n2, *n3; + Symbol *sym; + char *str; + s64int num; + + /* used by elidecasts() */ + char databits; + enum {UPZX, UPSX} upper; + + int recsize; + + Type *typ; +}; + +struct Stat { + enum { + STATEXPR, + STATPRINT, + STATPRINTF, + } type; + Node *n; + int narg; + Node **arg; +}; + +struct Clause { + int id; + Stat *stats; + int nstats; + char **probs; + int nprob; + DTExpr *pred; +}; + +struct Enab { + int epid; + int reclen; + char *probe; + Clause *cl; + Enab *next; +}; + +extern int errors; + +#pragma varargck type "α" int +#pragma varargck type "t" int +#pragma varargck type "τ" Type * +#pragma varargck type "ε" Node * +#pragma varargck argpos error 1 + +extern int dflag; |