Statistics
| Branch: | Revision:

root / synthbench / bonnie++ / .svn / text-base / forkit.h.svn-base @ 0:839f52ef7657

History | View | Annotate | Download (761 Bytes)

1
#ifndef FORKIT_H
2
#define FORKIT_H
3

    
4
#ifndef OS2
5
#include <poll.h>
6
#endif
7

    
8
#include "port.h"
9

    
10
class Fork;
11

    
12
typedef void *PVOID;
13

    
14
typedef void(* FUNCTION)(Fork *, PVOID, int);
15

    
16
typedef struct
17
{
18
  FILE_TYPE child_read, child_write;
19
  Fork *f;
20
  PVOID param;
21
  FUNCTION func;
22
  int threadNum;
23
} THREAD_DATA;
24

    
25
class Fork
26
{
27
public:
28
  Fork();
29
  void go(FUNCTION func, PVOID param, int num);
30

    
31

    
32
  int Read(PVOID buf, int size, int timeout = 60);
33
  int Write(PVOID buf, int size, int timeout = 60);
34

    
35
  void startit(THREAD_DATA *td); // free td when finished
36

    
37
  int wait();
38

    
39
  int getNumThreads() const { return m_numThreads; }
40

    
41
private:
42
#ifndef OS2
43
  pollfd m_readPoll;
44
  pollfd m_writePoll;
45
#endif
46
  FILE_TYPE m_read;
47
  FILE_TYPE m_write;
48
  int m_numThreads;
49
};
50

    
51
#endif
52