#include <IOKit/IOLib.h>
#ifdef __cplusplus
#define logPrintf(x) \
do { \
kprintf x; \
} while (0)
#define verPrintf(x) logPrintf(x)
#define TEST_ASSERT(t, l, c) \
do { \
if ( !(c) ) { \
verPrintf(("TEST (%c) test %s failed\n", t, l)); \
res = false; \
} \
} while(0)
#define logSpace() do { } while(0)
#define checkPointSpace() ((void *) 0)
#define checkSpace(l, ckp, d) ((int) 1)
extern const int numStrCache;
extern const char *strCache[];
extern void testString();
extern void testSymbol();
extern void testData();
extern void testArray();
extern void testSet();
extern void testDictionary();
extern void testIterator();
extern void testWorkLoop();
#include <libkern/c++/OSObject.h>
class IOWorkLoop;
class IOCommandQueue;
class IOInterruptEventSource;
class TestDevice;
typedef void (*TestDeviceAction)(TestDevice *, int, void *);
class TestDevice : public OSObject
{
OSDeclareDefaultStructors(TestDevice)
IOWorkLoop *workLoop;
int intCount;
IOCommandQueue *commQ;
public:
IOInterruptEventSource *intES;
virtual bool init();
virtual void free();
void rawCommandOccurred
(void *field0, void *field1, void *field2, void *field3);
kern_return_t enqueueCommand(bool sleep,
TestDeviceAction act, int tag, void *dataP);
void interruptAction(IOInterruptEventSource *event, int count);
void producer1Action(int tag);
void producer2Action(int tag, void *inCount);
void alarm();
};
#endif