X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/c910b4d9d2451126ae3917b931cd4390c11e1d52..b7266188b87f3620ec3f9f717e57194a7dd989fe:/iokit/Kernel/IOTimerEventSource.cpp diff --git a/iokit/Kernel/IOTimerEventSource.cpp b/iokit/Kernel/IOTimerEventSource.cpp index d32a17887..ed45f6ab9 100644 --- a/iokit/Kernel/IOTimerEventSource.cpp +++ b/iokit/Kernel/IOTimerEventSource.cpp @@ -89,7 +89,7 @@ void IOTimerEventSource::timeout(void *self) if (doit && me->enabled && AbsoluteTime_to_scalar(&me->abstime)) { IOTimeStampConstant(IODBG_TIMES(IOTIMES_ACTION), - (unsigned int) doit, (unsigned int) me->owner); + (uintptr_t) doit, (uintptr_t) me->owner); (*doit)(me->owner, me); } wl->openGate(); @@ -97,9 +97,12 @@ void IOTimerEventSource::timeout(void *self) } } -void IOTimerEventSource::timeoutAndRelease(void * self, void * count) +void IOTimerEventSource::timeoutAndRelease(void * self, void * c) { IOTimerEventSource *me = (IOTimerEventSource *) self; + /* The second parameter (a pointer) gets abused to carry an SInt32, so on LP64, "count" + must be cast to "long" before, in order to tell GCC we're not truncating a pointer. */ + SInt32 count = (SInt32) (long) c; if (me->enabled && me->action) { @@ -110,10 +113,10 @@ void IOTimerEventSource::timeoutAndRelease(void * self, void * count) Action doit; wl->closeGate(); doit = (Action) me->action; - if (doit && (me->reserved->calloutGeneration == (SInt32) count)) + if (doit && (me->reserved->calloutGeneration == count)) { IOTimeStampConstant(IODBG_TIMES(IOTIMES_ACTION), - (unsigned int) doit, (unsigned int) me->owner); + (uintptr_t) doit, (uintptr_t) me->owner); (*doit)(me->owner, me); } wl->openGate(); @@ -227,6 +230,7 @@ IOReturn IOTimerEventSource::setTimeout(UInt32 interval, UInt32 scale_factor) return wakeAtTime(end); } +#if !defined(__LP64__) IOReturn IOTimerEventSource::setTimeout(mach_timespec_t interval) { AbsoluteTime end, nsecs; @@ -239,6 +243,7 @@ IOReturn IOTimerEventSource::setTimeout(mach_timespec_t interval) return wakeAtTime(end); } +#endif IOReturn IOTimerEventSource::setTimeout(AbsoluteTime interval) { @@ -273,6 +278,7 @@ IOReturn IOTimerEventSource::wakeAtTime(UInt32 inAbstime, UInt32 scale_factor) return wakeAtTime(end); } +#if !defined(__LP64__) IOReturn IOTimerEventSource::wakeAtTime(mach_timespec_t inAbstime) { AbsoluteTime end, nsecs; @@ -285,6 +291,7 @@ IOReturn IOTimerEventSource::wakeAtTime(mach_timespec_t inAbstime) return wakeAtTime(end); } +#endif void IOTimerEventSource::setWorkLoop(IOWorkLoop *inWorkLoop) {