+ /*!
+ @function thread_call_allocate_with_options
+ @abstract Allocate a thread call to execute with a specified priority.
+ @discussion Identical to thread_call_allocate, except that priority
+ and options are specified by caller.
+ @param func Callback to invoke when thread call is scheduled.
+ @param param0 First argument to pass to callback.
+ @param pri Priority of item.
+ @param options Options for item.
+ @result Thread call which can be passed to thread_call_enter variants.
+ */
+extern thread_call_t thread_call_allocate_with_options(
+ thread_call_func_t func,
+ thread_call_param_t param0,
+ thread_call_priority_t pri,
+ thread_call_options_t options);
+
+#ifdef KERNEL_PRIVATE
+ /*!
+ @function thread_call_allocate_with_qos
+ @abstract Allocate a thread call to execute with a specified QoS.
+ @discussion Identical to thread_call_allocate_with_options, except it uses the QoS namespace.
+ Private interface for pthread kext.
+ @param func Callback to invoke when thread call is scheduled.
+ @param param0 First argument to pass to callback.
+ @param qos_tier QoS tier to execute callback at (as in THREAD_QOS_POLICY)
+ @param options flags from thread_call_options_t to influence the thread call behavior
+ @result Thread call which can be passed to thread_call_enter variants.
+ */
+extern thread_call_t
+thread_call_allocate_with_qos(thread_call_func_t func,
+ thread_call_param_t param0,
+ int qos_tier,
+ thread_call_options_t options);
+
+/*!
+ @function thread_call_wait_once
+ @abstract Wait for a THREAD_CALL_OPTIONS_ONCE call to finish executing if it is executing
+ @discussion Only works on THREAD_CALL_OPTIONS_ONCE calls
+ @param call The thread call to wait for
+ @result True if it waited, false if it did not wait
+ */
+extern boolean_t
+thread_call_wait_once(thread_call_t call);
+#endif /* KERNEL_PRIVATE */
+