7 #define ABSOLUTETIME_SCALAR_TYPE
9 #include "testthreadcall.h"
11 #include <kern/thread_call.h>
13 #define super IOService
14 OSDefineMetaClassAndStructors(testthreadcall
, super
);
18 static void thread_call_test_func(thread_call_param_t param0
,
19 thread_call_param_t param1
);
24 testthreadcall::start( IOService
* provider
)
29 IOLog("%s\n", __PRETTY_FUNCTION__
);
31 if (!super::start(provider
)) {
35 IOLog("Attempting thread_call_allocate\n");
36 tcall
= thread_call_allocate(thread_call_test_func
, this);
37 IOLog("thread_call_t %p\n", tcall
);
39 tlock
= IOSimpleLockAlloc();
40 IOLog("tlock %p\n", tlock
);
42 clock_interval_to_deadline(5, NSEC_PER_SEC
, &deadline
);
43 IOLog("%d sec deadline is %llu\n", 5, deadline
);
45 ret
= thread_call_enter_delayed(tcall
, deadline
);
50 static void thread_call_test_func(thread_call_param_t param0
,
51 thread_call_param_t param1
)
53 testthreadcall
*self
= (testthreadcall
*)param0
;
55 IOLog("thread_call_test_func %p %p\n", param0
, param1
);
57 IOSimpleLockLock(self
->tlock
);
58 IOSimpleLockUnlock(self
->tlock
);
61 IOSimpleLockLock(self
->tlock
);
63 IOSimpleLockUnlock(self
->tlock
);