ref: cce6dfb94a75af67751e2fab0d961a004e9e51d5
dir: /main.c/
#include <u.h>
#include <libc.h>
#include <thread.h>
#include "b.h"
static void
proc(void *)
{
threadexits(nil);
}
void
threadmain(int argc, char **argv)
{
B *group, *b;
uchar d[1];
char t[64];
int f;
ARGBEGIN{
}ARGEND
snprint(t, sizeof(t), "/proc/%d/ctl", getpid());
if((f = open(t, OWRITE)) < 0)
fprint(2, "%r\n");
else{
if(write(f, "wired 0\n", 8) != 8)
fprint(2, "failed to wire\n");
close(f);
}
b = group = malloc(32 * sizeof(*b));
f = open("/dev/null", OREAD);
benchinit(b, "read/1");
while(b->n > 0){
benchin(b);
read(f, d, 1);
benchout(b);
}
b++;
benchinit(b, "read/0");
while(b->n > 0){
benchin(b);
read(f, d, 0);
benchout(b);
}
close(f);
b++;
benchinit(b, "sin(n)");
while(b->n > 0){
benchin(b);
sin(b->n);
benchout(b);
}
b++;
benchinit(b, "cos(n)");
while(b->n > 0){
benchin(b);
cos(b->n);
benchout(b);
}
b++;
benchinit(b, "tan(n)");
while(b->n > 0){
benchin(b);
tan(b->n);
benchout(b);
}
b++;
benchinit(b, "sleep(0)");
while(b->n > 0){
benchin(b);
sleep(0);
benchout(b);
}
b++;
benchinit(b, "sleep(5)");
while(b->n > 0){
benchin(b);
sleep(5);
benchout(b);
}
b++;
benchinit(b, "sleep(10)");
while(b->n > 0){
benchin(b);
sleep(10);
benchout(b);
}
b++;
benchinit(b, "proccreate");
while(b->n > 0){
benchin(b);
proccreate(proc, (void*)b->n, 1024);
benchout(b);
}
b++;
benchprint(group, b-group, 1);
threadexitsall(nil);
}