workqueue_private.h [plain text]
#ifndef __PTHREAD_WORKQUEUE_H__
#define __PTHREAD_WORKQUEUE_H__
#include <sys/cdefs.h>
#include <sys/event.h>
#include <Availability.h>
#include <pthread/pthread.h>
#include <pthread/qos.h>
#ifndef _PTHREAD_BUILDING_PTHREAD_
#include <pthread/qos_private.h>
#endif
#define PTHREAD_WORKQUEUE_SPI_VERSION 20160427
#define WORKQ_FEATURE_DISPATCHFUNC 0x01 // pthread_workqueue_setdispatch_np is supported (or not)
#define WORKQ_FEATURE_FINEPRIO 0x02 // fine grained pthread workq priorities
#define WORKQ_FEATURE_MAINTENANCE 0x10 // QOS class maintenance
#define WORKQ_FEATURE_KEVENT 0x40 // Support for direct kevent delivery
#define WORKQ_NUM_PRIOQUEUE 4
#define WORKQ_HIGH_PRIOQUEUE 0 // high priority queue
#define WORKQ_DEFAULT_PRIOQUEUE 1 // default priority queue
#define WORKQ_LOW_PRIOQUEUE 2 // low priority queue
#define WORKQ_BG_PRIOQUEUE 3 // background priority queue
#define WORKQ_NON_INTERACTIVE_PRIOQUEUE 128 // libdispatch SPI level
#define WORKQ_ADDTHREADS_OPTION_OVERCOMMIT 0x00000001
__BEGIN_DECLS
typedef void (*pthread_workqueue_function_t)(int queue_priority, int options, void *ctxt);
typedef void (*pthread_workqueue_function2_t)(pthread_priority_t priority);
#define WORKQ_KEVENT_EVENT_BUFFER_LEN 16
typedef void (*pthread_workqueue_function_kevent_t)(void **events, int *nevents);
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
int
_pthread_workqueue_init(pthread_workqueue_function2_t func, int offset, int flags);
__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
int
_pthread_workqueue_init_with_kevent(pthread_workqueue_function2_t queue_func, pthread_workqueue_function_kevent_t kevent_func, int offset, int flags);
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
int
__pthread_workqueue_setkill(int);
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int
pthread_workqueue_setdispatch_np(pthread_workqueue_function_t worker_func);
__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)
void
pthread_workqueue_setdispatchoffset_np(int offset);
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int
pthread_workqueue_addthreads_np(int queue_priority, int options, int numthreads);
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
int
_pthread_workqueue_supported(void);
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
int
_pthread_workqueue_addthreads(int numthreads, pthread_priority_t priority);
__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
int
_pthread_workqueue_set_event_manager_priority(pthread_priority_t priority);
__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
int
_pthread_qos_override_start_direct(mach_port_t thread, pthread_priority_t priority, void *resource);
__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
int
_pthread_qos_override_end_direct(mach_port_t thread, void *resource);
__OSX_DEPRECATED(10.10, 10.12, "use _pthread_qos_override_start_direct()")
__IOS_DEPRECATED(8.0, 10.0, "use _pthread_qos_override_start_direct()")
__TVOS_DEPRECATED(8.0, 10.0, "use _pthread_qos_override_start_direct()")
__WATCHOS_DEPRECATED(1.0, 3.0, "use _pthread_qos_override_start_direct()")
int
_pthread_override_qos_class_start_direct(mach_port_t thread, pthread_priority_t priority);
__OSX_DEPRECATED(10.10, 10.12, "use _pthread_qos_override_end_direct()")
__IOS_DEPRECATED(8.0, 10.0, "use _pthread_qos_override_end_direct()")
__TVOS_DEPRECATED(8.0, 10.0, "use _pthread_qos_override_end_direct()")
__WATCHOS_DEPRECATED(1.0, 3.0, "use _pthread_qos_override_end_direct()")
int
_pthread_override_qos_class_end_direct(mach_port_t thread);
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
int
_pthread_workqueue_override_start_direct(mach_port_t thread, pthread_priority_t priority);
__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
int
_pthread_workqueue_override_start_direct_check_owner(mach_port_t thread, pthread_priority_t priority, mach_port_t *ulock_addr);
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)
int
_pthread_workqueue_override_reset(void);
__OSX_AVAILABLE_STARTING(__MAC_10_10_2, __IPHONE_NA)
int
_pthread_workqueue_asynchronous_override_add(mach_port_t thread, pthread_priority_t priority, void *resource);
__OSX_AVAILABLE_STARTING(__MAC_10_10_2, __IPHONE_NA)
int
_pthread_workqueue_asynchronous_override_reset_self(void *resource);
__OSX_AVAILABLE_STARTING(__MAC_10_10_2, __IPHONE_NA)
int
_pthread_workqueue_asynchronous_override_reset_all_self(void);
__END_DECLS
#endif // __PTHREAD_WORKQUEUE_H__