+#if defined(__x86_64__)
+/*
+ * For backwards compatibility, kexts built against pre-Darwin 14 headers will bind at runtime to this function,
+ * which supports a NULL event,
+ */
+int IOLockSleep_legacy_x86_64( IOLock * lock, void *event, UInt32 interType) __asm("_IOLockSleep");
+int IOLockSleepDeadline_legacy_x86_64( IOLock * lock, void *event,
+ AbsoluteTime deadline, UInt32 interType) __asm("_IOLockSleepDeadline");
+void IOLockWakeup_legacy_x86_64(IOLock * lock, void *event, bool oneThread) __asm("_IOLockWakeup");
+
+int IOLockSleep_legacy_x86_64( IOLock * lock, void *event, UInt32 interType)
+{
+ if (event == NULL)
+ event = (void *)&IOLockSleep_NO_EVENT;
+
+ return IOLockSleep(lock, event, interType);
+}
+
+int IOLockSleepDeadline_legacy_x86_64( IOLock * lock, void *event,
+ AbsoluteTime deadline, UInt32 interType)
+{
+ if (event == NULL)
+ event = (void *)&IOLockSleep_NO_EVENT;
+
+ return IOLockSleepDeadline(lock, event, deadline, interType);
+}
+
+void IOLockWakeup_legacy_x86_64(IOLock * lock, void *event, bool oneThread)
+{
+ if (event == NULL)
+ event = (void *)&IOLockSleep_NO_EVENT;
+
+ IOLockWakeup(lock, event, oneThread);
+}
+#endif /* defined(__x86_64__) */
+