typedef struct B B;typedef struct Bgr Bgr;typedef struct Cns Cns; enum { Kb = 1024ULL, Mb = 1024ULL*1024ULL, Gb = 1024ULL*1024ULL*1024ULL,}; struct Cns { uvlong c; uvlong ns;}; #pragma varargck type "σ" B*#pragma varargck type "τ" Cns struct B { uvlong n; uvlong tin; uvlong tout; uvlong step; uvlong t0; Cns tot, avg, med, min, max; Cns p[100]; uvlong *c; int nc, ic; char *name;}; struct Bgr { char *name; B **b; int nb;}; /* private */void benchstep(B *b);void tstart(uvlong *c);extern void (*tend)(uvlong *c); /* public */int benchwire(int cpu); Bgr *benchinitgr(Bgr *gr, char *name);B *benchadd(Bgr *gr, char *name);#define benchin(b) do{ tstart(&(b)->tin); }while(0)#define benchout(b) do{ tend(&(b)->tout); benchstep(b); }while(0)void benchprintgr(Bgr *gr, int fd);void benchfreegr(Bgr *gr);void bseparator(int fd); B *benchinit(B *b, char *name);void benchprint(B **b, int nb, int fd);
typedef struct B B;
typedef struct Bgr Bgr;
typedef struct Cns Cns;
enum {
Kb = 1024ULL,
Mb = 1024ULL*1024ULL,
Gb = 1024ULL*1024ULL*1024ULL,
};
struct Cns {
uvlong c;
uvlong ns;
};
#pragma varargck type "σ" B*
#pragma varargck type "τ" Cns
struct B {
uvlong n;
uvlong tin;
uvlong tout;
uvlong step;
uvlong t0;
Cns tot, avg, med, min, max;
Cns p[100];
uvlong *c;
int nc, ic;
char *name;
};
struct Bgr {
char *name;
B **b;
int nb;
};
/* private */
void benchstep(B *b);
void tstart(uvlong *c);
extern void (*tend)(uvlong *c);
/* public */
int benchwire(int cpu);
Bgr *benchinitgr(Bgr *gr, char *name);
B *benchadd(Bgr *gr, char *name);
#define benchin(b) do{ tstart(&(b)->tin); }while(0)
#define benchout(b) do{ tend(&(b)->tout); benchstep(b); }while(0)
void benchprintgr(Bgr *gr, int fd);
void benchfreegr(Bgr *gr);
void bseparator(int fd);
B *benchinit(B *b, char *name);
void benchprint(B **b, int nb, int fd);