Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
[dragonfly.git] / test / interbench / interbench.h
1 /* Interbench.h */
2 #ifndef INTERBENCH_H
3 #define INTERBENCH_H
4
5 extern void *hackbench_thread(void *t);
6 extern void terminal_error(const char *name);
7 extern inline void post_sem(sem_t *s);
8 extern inline void wait_sem(sem_t *s);
9 extern inline int trywait_sem(sem_t *s);
10 extern inline ssize_t Read(int fd, void *buf, size_t count);
11
12 #define THREADS         13      /* The total number of different loads */
13
14 struct sems {
15         sem_t ready;
16         sem_t start;
17         sem_t stop;
18         sem_t complete;
19         sem_t stopchild;
20 };
21
22 struct tk_thread {
23         struct sems sem;
24         unsigned long sleep_interval;
25         unsigned long slept_interval;
26 };
27
28 struct data_table {
29         unsigned long long total_latency;
30         unsigned long long sum_latency_squared;
31         unsigned long max_latency;
32         unsigned long nr_samples;
33         unsigned long deadlines_met;
34         unsigned long missed_deadlines;
35         unsigned long long missed_burns;
36         unsigned long long achieved_burns;
37 };
38
39 struct thread {
40         void (*name)(struct thread *);
41         char *label;
42         int bench;              /* This thread is suitable for benchmarking */
43         int rtbench;            /* Suitable for real time benchmarking */
44         int load;               /* Suitable as a background load */
45         int rtload;             /* Suitable as a background load for rt benches */
46         int nodeadlines;        /* Deadlines_met are meaningless for this load */
47         unsigned long decasecond_deadlines;     /* Expected deadlines / 10s */
48         pthread_t pthread;
49         pthread_t tk_pthread;
50         struct sems sem;
51         struct data_table benchmarks[THREADS + 1], *dt;
52         struct tk_thread tkthread;
53         long threadno;
54 };
55 extern struct thread hackthread;
56 #endif