1 /*! 2 * @header 3 * Image4 object specifications. 4 */ 5 #ifndef __IMG4_OBJECT_H 6 #define __IMG4_OBJECT_H 7 8 #ifndef __IMG4_INDIRECT 9 #error "Please #include <img4/firmware.h> instead of this file directly" 10 #endif // __IMG4_INDIRECT 11 12 __BEGIN_DECLS 13 OS_ASSUME_NONNULL_BEGIN 14 OS_ASSUME_PTR_ABI_SINGLE_BEGIN 15 16 /*! 17 * @typedef img4_object_spec_t 18 * An opaque type which describes information about Image4 objects for use by 19 * the runtime. 20 */ 21 IMG4_API_AVAILABLE_20200508 22 typedef struct _img4_object_spec img4_object_spec_t; 23 24 /*! 25 * @const IMG4_FIRMWARE_SPEC 26 * The object specification for an {@link img4_firmware_t} object. 27 */ 28 #if !XNU_KERNEL_PRIVATE 29 IMG4_API_AVAILABLE_20200508 30 OS_EXPORT 31 const img4_object_spec_t _img4_firmware_spec; 32 #define IMG4_FIRMWARE_SPEC (&_img4_firmware_spec) 33 #else 34 #define IMG4_FIRMWARE_SPEC (img4if->i4if_v7.firmware_spec) 35 #endif 36 37 /*! 38 * @const IMG4_FIRMWARE_SIZE_RECOMMENDED 39 * A constant describing the recommended stack allocation required for a 40 * {@link img4_firmware_t} object. 41 */ 42 #define IMG4_FIRMWARE_SIZE_RECOMMENDED (1536u) 43 44 /*! 45 * @const IMG4_CHIP_SPEC 46 * The object specification for an {@link img4_chip_t} object. 47 */ 48 #if !XNU_KERNEL_PRIVATE 49 IMG4_API_AVAILABLE_20200508 50 OS_EXPORT 51 const img4_object_spec_t _img4_chip_spec; 52 #define IMG4_CHIP_SPEC (&_img4_chip_spec) 53 #else 54 #define IMG4_CHIP_SPEC (img4if->i4if_v7.chip_spec) 55 #endif 56 57 /*! 58 * @const IMG4_CHIP_SIZE_RECOMMENDED 59 * A constant describing the recommended stack allocation required for a 60 * {@link img4_chip_t} object. 61 */ 62 #define IMG4_CHIP_SIZE_RECOMMENDED (960u) 63 64 /*! 65 * @const IMG4_PMAP_DATA_SPEC 66 * The object specification for an {@link img4_pmap_data_t} object. 67 */ 68 #if !XNU_KERNEL_PRIVATE 69 IMG4_API_AVAILABLE_20210521 70 OS_EXPORT 71 const img4_object_spec_t _img4_pmap_data_spec; 72 #define IMG4_PMAP_DATA_SPEC (&_img4_pmap_data_spec) 73 #else 74 #define IMG4_PMAP_DATA_SPEC (img4if->i4if_v13.pmap_data_spec) 75 #endif 76 77 /*! 78 * @const IMG4_PMAP_DATA_SIZE_RECOMMENDED 79 * A constant describing the recommended stack allocation required for a 80 * {@link img4_pmap_data_t} object. 81 */ 82 #define IMG4_PMAP_DATA_SIZE_RECOMMENDED (5120u) 83 84 OS_ASSUME_PTR_ABI_SINGLE_END 85 OS_ASSUME_NONNULL_END 86 __END_DECLS 87 88 #endif // __IMG4_OBJECT_H 89