summaryrefslogtreecommitdiff
path: root/sys/src/cmd/dtracy/dat.h
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2018-11-10 13:46:16 +0000
committeraiju <devnull@localhost>2018-11-10 13:46:16 +0000
commite6d99771e5c1eef3f69fc847253d4709ffaa84be (patch)
tree16161401edc25c084ad24533519e094716965635 /sys/src/cmd/dtracy/dat.h
parent8c097ae84a500eae9c8e4ee21b7b3ea8f8d23259 (diff)
adding dtracy (crude early version)
Diffstat (limited to 'sys/src/cmd/dtracy/dat.h')
-rw-r--r--sys/src/cmd/dtracy/dat.h123
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;