+unsigned int semaphore_max;
+
+/* Forward declarations */
+
+
+kern_return_t
+semaphore_wait_trap_internal(
+ mach_port_name_t name,
+ void (*caller_cont)(kern_return_t));
+
+kern_return_t
+semaphore_wait_signal_trap_internal(
+ mach_port_name_t wait_name,
+ mach_port_name_t signal_name,
+ void (*caller_cont)(kern_return_t));
+
+kern_return_t
+semaphore_timedwait_trap_internal(
+ mach_port_name_t name,
+ unsigned int sec,
+ clock_res_t nsec,
+ void (*caller_cont)(kern_return_t));
+
+kern_return_t
+semaphore_timedwait_signal_trap_internal(
+ mach_port_name_t wait_name,
+ mach_port_name_t signal_name,
+ unsigned int sec,
+ clock_res_t nsec,
+ void (*caller_cont)(kern_return_t));
+
+kern_return_t
+semaphore_signal_internal_trap(mach_port_name_t sema_name);
+
+kern_return_t
+semaphore_signal_internal(
+ semaphore_t semaphore,
+ thread_t thread,
+ int options);
+
+kern_return_t
+semaphore_convert_wait_result(
+ int wait_result);
+
+void
+semaphore_wait_continue(void);
+
+static kern_return_t
+semaphore_wait_internal(
+ semaphore_t wait_semaphore,
+ semaphore_t signal_semaphore,
+ uint64_t deadline,
+ int option,
+ void (*caller_cont)(kern_return_t));
+
+static __inline__ uint64_t
+semaphore_deadline(
+ unsigned int sec,
+ clock_res_t nsec)
+{
+ uint64_t abstime;
+
+ nanoseconds_to_absolutetime((uint64_t)sec * NSEC_PER_SEC + nsec, &abstime);
+ clock_absolutetime_interval_to_deadline(abstime, &abstime);
+
+ return (abstime);
+}