1 /* 2 * Copyright (c) 2023 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29 #pragma once 30 31 #if CONFIG_EXCLAVES 32 33 #if __has_include(<Tightbeam/tightbeam.h>) 34 35 #include <stdint.h> 36 37 #include <Tightbeam/tightbeam.h> 38 #include <Tightbeam/tightbeam_private.h> 39 40 #include "kern/exclaves.tightbeam.h" 41 42 __BEGIN_DECLS 43 44 /* Legacy upcall handlers */ 45 46 extern tb_error_t 47 exclaves_driverkit_upcall_legacy_irq_register(const uint64_t id, const int32_t index, 48 tb_error_t (^completion)(xnuupcalls_xnuupcalls_irq_register__result_s)); 49 50 extern tb_error_t 51 exclaves_driverkit_upcall_legacy_irq_remove(const uint64_t id, const int32_t index, 52 tb_error_t (^completion)(xnuupcalls_xnuupcalls_irq_remove__result_s)); 53 54 extern tb_error_t 55 exclaves_driverkit_upcall_legacy_irq_enable(const uint64_t id, const int32_t index, 56 tb_error_t (^completion)(xnuupcalls_xnuupcalls_irq_enable__result_s)); 57 58 extern tb_error_t 59 exclaves_driverkit_upcall_legacy_irq_disable(const uint64_t id, const int32_t index, 60 tb_error_t (^completion)(xnuupcalls_xnuupcalls_irq_disable__result_s)); 61 62 extern tb_error_t 63 exclaves_driverkit_upcall_legacy_timer_register(const uint64_t id, 64 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_register__result_s)); 65 66 extern tb_error_t 67 exclaves_driverkit_upcall_legacy_timer_remove(const uint64_t id, const uint32_t timer_id, 68 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_remove__result_s)); 69 70 extern tb_error_t 71 exclaves_driverkit_upcall_legacy_timer_enable(const uint64_t id, const uint32_t timer_id, 72 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_enable__result_s)); 73 74 extern tb_error_t 75 exclaves_driverkit_upcall_legacy_timer_disable(const uint64_t id, const uint32_t timer_id, 76 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_disable__result_s)); 77 78 extern tb_error_t 79 exclaves_driverkit_upcall_legacy_timer_set_timeout(const uint64_t id, 80 const uint32_t timer_id, 81 const struct xnuupcalls_drivertimerspecification_s *duration, 82 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_set_timeout__result_s)); 83 84 extern tb_error_t 85 exclaves_driverkit_upcall_legacy_timer_cancel_timeout(const uint64_t id, 86 const uint32_t timer_id, 87 tb_error_t (^completion)(xnuupcalls_xnuupcalls_timer_cancel_timeout__result_s)); 88 89 extern tb_error_t 90 exclaves_driverkit_upcall_legacy_lock_wl(const uint64_t id, 91 tb_error_t (^completion)(xnuupcalls_xnuupcalls_lock_wl__result_s)); 92 93 extern tb_error_t 94 exclaves_driverkit_upcall_legacy_unlock_wl(const uint64_t id, 95 tb_error_t (^completion)(xnuupcalls_xnuupcalls_unlock_wl__result_s)); 96 97 extern tb_error_t 98 exclaves_driverkit_upcall_legacy_async_notification_signal(const uint64_t id, 99 const uint32_t notificationID, 100 tb_error_t (^completion)(xnuupcalls_xnuupcalls_async_notification_signal__result_s)); 101 102 extern tb_error_t 103 exclaves_driverkit_upcall_legacy_mapper_activate(const uint64_t id, 104 const uint32_t mapperIndex, 105 tb_error_t (^completion)(xnuupcalls_xnuupcalls_mapper_activate__result_s)); 106 107 extern tb_error_t 108 exclaves_driverkit_upcall_legacy_mapper_deactivate(const uint64_t id, 109 const uint32_t mapperIndex, 110 tb_error_t (^completion)(xnuupcalls_xnuupcalls_mapper_deactivate__result_s)); 111 112 extern tb_error_t 113 exclaves_driverkit_upcall_legacy_notification_signal(const uint64_t id, 114 const uint32_t mask, 115 tb_error_t (^completion)(xnuupcalls_xnuupcalls_notification_signal__result_s)); 116 117 extern tb_error_t 118 exclaves_driverkit_upcall_legacy_ane_setpowerstate(const uint64_t id, 119 const uint32_t desiredState, 120 tb_error_t (^completion)(xnuupcalls_xnuupcalls_ane_setpowerstate__result_s)); 121 122 extern tb_error_t 123 exclaves_driverkit_upcall_legacy_ane_worksubmit(const uint64_t id, const uint64_t requestID, 124 const uint32_t taskDescriptorCount, const uint64_t submitTimestamp, 125 tb_error_t (^completion)(xnuupcalls_xnuupcalls_ane_worksubmit__result_s)); 126 127 extern tb_error_t 128 exclaves_driverkit_upcall_legacy_ane_workbegin(const uint64_t id, const uint64_t requestID, 129 const uint64_t beginTimestamp, 130 tb_error_t (^completion)(xnuupcalls_xnuupcalls_ane_workbegin__result_s)); 131 132 extern tb_error_t 133 exclaves_driverkit_upcall_legacy_ane_workend(const uint64_t id, const uint64_t requestID, 134 tb_error_t (^completion)(xnuupcalls_xnuupcalls_ane_workend__result_s)); 135 136 /* Upcall handlers */ 137 138 extern tb_error_t 139 exclaves_driverkit_upcall_irq_register(const uint64_t id, const int32_t index, 140 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_irqregister__result_s)); 141 142 extern tb_error_t 143 exclaves_driverkit_upcall_irq_remove(const uint64_t id, const int32_t index, 144 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_irqremove__result_s)); 145 146 extern tb_error_t 147 exclaves_driverkit_upcall_irq_enable(const uint64_t id, const int32_t index, 148 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_irqenable__result_s)); 149 150 extern tb_error_t 151 exclaves_driverkit_upcall_irq_disable(const uint64_t id, const int32_t index, 152 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_irqdisable__result_s)); 153 154 extern tb_error_t 155 exclaves_driverkit_upcall_timer_register(const uint64_t id, 156 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timerregister__result_s)); 157 158 extern tb_error_t 159 exclaves_driverkit_upcall_timer_remove(const uint64_t id, const uint32_t timer_id, 160 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timerremove__result_s)); 161 162 extern tb_error_t 163 exclaves_driverkit_upcall_timer_enable(const uint64_t id, const uint32_t timer_id, 164 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timerenable__result_s)); 165 166 extern tb_error_t 167 exclaves_driverkit_upcall_timer_disable(const uint64_t id, const uint32_t timer_id, 168 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timerdisable__result_s)); 169 170 extern tb_error_t 171 exclaves_driverkit_upcall_timer_set_timeout(const uint64_t id, 172 const uint32_t timer_id, 173 const struct xnuupcallsv2_drivertimerspecification_s *duration, 174 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timersettimeout__result_s)); 175 176 extern tb_error_t 177 exclaves_driverkit_upcall_timer_cancel_timeout(const uint64_t id, 178 const uint32_t timer_id, 179 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_timercanceltimeout__result_s)); 180 181 extern tb_error_t 182 exclaves_driverkit_upcall_lock_workloop(const uint64_t id, 183 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_lockworkloop__result_s)); 184 185 extern tb_error_t 186 exclaves_driverkit_upcall_unlock_workloop(const uint64_t id, 187 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_unlockworkloop__result_s)); 188 189 extern tb_error_t 190 exclaves_driverkit_upcall_async_notification_signal(const uint64_t id, 191 const uint32_t notificationID, 192 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_asyncnotificationsignal__result_s)); 193 194 extern tb_error_t 195 exclaves_driverkit_upcall_mapper_activate(const uint64_t id, 196 const uint32_t mapperIndex, 197 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_mapperactivate__result_s)); 198 199 extern tb_error_t 200 exclaves_driverkit_upcall_mapper_deactivate(const uint64_t id, 201 const uint32_t mapperIndex, 202 tb_error_t (^completion)(xnuupcallsv2_driverupcallsprivate_mapperdeactivate__result_s)); 203 204 extern tb_error_t 205 exclaves_driverkit_upcall_notification_signal(const uint64_t id, 206 const uint32_t mask, 207 tb_error_t (^completion)(xnuupcallsv2_notificationupcallsprivate_notificationsignal__result_s)); 208 209 extern tb_error_t 210 exclaves_driverkit_upcall_ane_setpowerstate(const uint64_t id, 211 const uint32_t desiredState, 212 tb_error_t (^completion)(xnuupcallsv2_aneupcallsprivate_anesetpowerstate__result_s)); 213 214 extern tb_error_t 215 exclaves_driverkit_upcall_ane_worksubmit(const uint64_t id, const uint64_t requestID, 216 const uint32_t taskDescriptorCount, const uint64_t submitTimestamp, 217 tb_error_t (^completion)(xnuupcallsv2_aneupcallsprivate_aneworksubmit__result_s)); 218 219 extern tb_error_t 220 exclaves_driverkit_upcall_ane_workbegin(const uint64_t id, const uint64_t requestID, 221 const uint64_t beginTimestamp, 222 tb_error_t (^completion)(xnuupcallsv2_aneupcallsprivate_aneworkbegin__result_s)); 223 224 extern tb_error_t 225 exclaves_driverkit_upcall_ane_workend(const uint64_t id, const uint64_t requestID, 226 tb_error_t (^completion)(xnuupcallsv2_aneupcallsprivate_aneworkend__result_s)); 227 228 extern kern_return_t 229 exclaves_driver_service_lookup(const char *service_name, uint64_t *endpoint); 230 231 __END_DECLS 232 233 #endif /* __has_include(<Tightbeam/tightbeam.h>) */ 234 235 #endif /* CONFIG_EXCLAVES */ 236