workgroup_base.h (2569B) - Raw
1 #ifndef __OS_WORKGROUP_BASE__ 2 #define __OS_WORKGROUP_BASE__ 3 4 #ifndef __OS_WORKGROUP_INDIRECT__ 5 #error "Please #include <os/workgroup.h> instead of this file directly." 6 #endif 7 8 #include <sys/types.h> 9 #include <stddef.h> 10 #include <stdint.h> 11 #include <stdbool.h> 12 #include <string.h> 13 #include <stdlib.h> 14 15 #include <mach/port.h> 16 17 #include <Availability.h> 18 #include <os/base.h> 19 #include <os/object.h> 20 #include <os/clock.h> 21 22 #if __has_feature(assume_nonnull) 23 #define OS_WORKGROUP_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") 24 #define OS_WORKGROUP_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") 25 #else 26 #define OS_WORKGROUP_ASSUME_NONNULL_BEGIN 27 #define OS_WORKGROUP_ASSUME_NONNULL_END 28 #endif 29 #define OS_WORKGROUP_WARN_RESULT __attribute__((__warn_unused_result__)) 30 #define OS_WORKGROUP_EXPORT OS_EXPORT 31 #define OS_WORKGROUP_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED 32 #define OS_WORKGROUP_ASSUME_ABI_SINGLE_BEGIN OS_ASSUME_PTR_ABI_SINGLE_BEGIN 33 #define OS_WORKGROUP_ASSUME_ABI_SINGLE_END OS_ASSUME_PTR_ABI_SINGLE_END 34 #define OS_WORKGROUP_UNSAFE_INDEXABLE OS_UNSAFE_INDEXABLE 35 36 #define OS_WORKGROUP_DECL(name, swift_name) \ 37 OS_SWIFT_NAME(swift_name) \ 38 OS_OBJECT_SHOW_CLASS(name, OS_OBJECT_CLASS(object)) 39 40 #if OS_OBJECT_USE_OBJC 41 #define OS_WORKGROUP_SUBCLASS_DECL_PROTO(name, swift_name, ...) \ 42 OS_SWIFT_NAME(swift_name) \ 43 OS_OBJECT_DECL_PROTOCOL(name ## __VA_ARGS__ ) 44 #else 45 #define OS_WORKGROUP_SUBCLASS_DECL_PROTO(name, swift_name, ...) 46 #endif 47 48 #define OS_WORKGROUP_SUBCLASS_DECL(name, super, swift_name, ...) \ 49 OS_SWIFT_NAME(swift_name) \ 50 OS_OBJECT_SHOW_SUBCLASS(name, super, name, ## __VA_ARGS__) 51 52 #if defined(__LP64__) 53 #define __OS_WORKGROUP_ATTR_SIZE__ 60 54 #define __OS_WORKGROUP_INTERVAL_DATA_SIZE__ 56 55 #define __OS_WORKGROUP_JOIN_TOKEN_SIZE__ 36 56 #else 57 #define __OS_WORKGROUP_ATTR_SIZE__ 60 58 #define __OS_WORKGROUP_INTERVAL_DATA_SIZE__ 56 59 #define __OS_WORKGROUP_JOIN_TOKEN_SIZE__ 28 60 #endif 61 62 #define _OS_WORKGROUP_ATTR_SIG_DEFAULT_INIT 0x2FA863B4 63 #define _OS_WORKGROUP_ATTR_SIG_EMPTY_INIT 0x2FA863C4 64 65 OS_WORKGROUP_ASSUME_ABI_SINGLE_BEGIN 66 67 struct OS_REFINED_FOR_SWIFT os_workgroup_attr_opaque_s { 68 uint32_t sig; 69 char opaque[__OS_WORKGROUP_ATTR_SIZE__]; 70 }; 71 72 #define _OS_WORKGROUP_INTERVAL_DATA_SIG_INIT 0x52A74C4D 73 struct OS_REFINED_FOR_SWIFT os_workgroup_interval_data_opaque_s { 74 uint32_t sig; 75 char opaque[__OS_WORKGROUP_INTERVAL_DATA_SIZE__]; 76 }; 77 78 struct OS_REFINED_FOR_SWIFT os_workgroup_join_token_opaque_s { 79 uint32_t sig; 80 char opaque[__OS_WORKGROUP_JOIN_TOKEN_SIZE__]; 81 }; 82 83 OS_WORKGROUP_ASSUME_ABI_SINGLE_END 84 85 #endif /* __OS_WORKGROUP_BASE__ */