/* * Copyright (c) 2014 Apple Inc. All rights reserved. * * @APPLE_APACHE_LICENSE_HEADER_START@ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @APPLE_APACHE_LICENSE_HEADER_END@ */ #ifndef __DISPATCH_LAYOUT_PRIVATE__ #define __DISPATCH_LAYOUT_PRIVATE__ #ifndef __DISPATCH_INDIRECT__ #error "Please #include instead of this file directly." #include // for HeaderDoc #endif __BEGIN_DECLS API_AVAILABLE(macos(10.6), ios(4.0)) DISPATCH_EXPORT const struct dispatch_queue_offsets_s { // always add new fields at the end const uint16_t dqo_version; const uint16_t dqo_label; const uint16_t dqo_label_size; const uint16_t dqo_flags; const uint16_t dqo_flags_size; const uint16_t dqo_serialnum; const uint16_t dqo_serialnum_size; const uint16_t dqo_width; const uint16_t dqo_width_size; const uint16_t dqo_running; const uint16_t dqo_running_size; // fields added in dqo_version 5: const uint16_t dqo_suspend_cnt; const uint16_t dqo_suspend_cnt_size; const uint16_t dqo_target_queue; const uint16_t dqo_target_queue_size; const uint16_t dqo_priority; const uint16_t dqo_priority_size; } dispatch_queue_offsets; #if DISPATCH_LAYOUT_SPI /*! * @group Data Structure Layout SPI * SPI intended for CoreSymbolication only */ API_AVAILABLE(macos(10.10), ios(8.0)) DISPATCH_EXPORT const struct dispatch_tsd_indexes_s { // always add new fields at the end const uint16_t dti_version; const uint16_t dti_queue_index; const uint16_t dti_voucher_index; const uint16_t dti_qos_class_index; /* version 3 */ const uint16_t dti_continuation_cache_index; } dispatch_tsd_indexes; #if TARGET_OS_MAC #include API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0)) DISPATCH_EXPORT const struct dispatch_allocator_layout_s { const uint16_t dal_version; /* version 1 */ /* Pointer to the allocator metadata address, points to NULL if unused */ void **const dal_allocator_zone; /* Magical "isa" for allocations that are on freelists */ void *const *const dal_deferred_free_isa; /* Size of allocations made in the magazine */ const uint16_t dal_allocation_size; /* fields used by the enumerator */ const uint16_t dal_magazine_size; const uint16_t dal_first_allocation_offset; const uint16_t dal_allocation_isa_offset; /* Enumerates allocated continuations */ kern_return_t (*dal_enumerator)(task_t remote_task, const struct dispatch_allocator_layout_s *remote_allocator_layout, vm_address_t zone_address, memory_reader_t reader, void (^recorder)(vm_address_t dc_address, void *dc_mem, size_t size, bool *stop)); } dispatch_allocator_layout; #endif // TARGET_OS_MAC #endif // DISPATCH_LAYOUT_SPI __END_DECLS #endif // __DISPATCH_LAYOUT_PRIVATE__