launch.h (15709B) - Raw
1 #ifndef __XPC_LAUNCH_H__ 2 #define __XPC_LAUNCH_H__ 3 4 /*! 5 * @header 6 * These interfaces were only ever documented for the purpose of allowing a 7 * launchd job to obtain file descriptors associated with the sockets it 8 * advertised in its launchd.plist(5). That functionality is now available in a 9 * much more straightforward fashion through the {@link launch_activate_socket} 10 * API. 11 * 12 * There are currently no replacements for other uses of the {@link launch_msg} 13 * API, including submitting, removing, starting, stopping and listing jobs. 14 */ 15 16 #include <os/base.h> 17 #include <Availability.h> 18 19 #include <mach/mach.h> 20 #include <stddef.h> 21 #include <stdbool.h> 22 #include <sys/cdefs.h> 23 24 #if __has_feature(assume_nonnull) 25 _Pragma("clang assume_nonnull begin") 26 #endif 27 __BEGIN_DECLS 28 29 #define LAUNCH_KEY_SUBMITJOB "SubmitJob" 30 #define LAUNCH_KEY_REMOVEJOB "RemoveJob" 31 #define LAUNCH_KEY_STARTJOB "StartJob" 32 #define LAUNCH_KEY_STOPJOB "StopJob" 33 #define LAUNCH_KEY_GETJOB "GetJob" 34 #define LAUNCH_KEY_GETJOBS "GetJobs" 35 #define LAUNCH_KEY_CHECKIN "CheckIn" 36 37 #define LAUNCH_JOBKEY_LABEL "Label" 38 #define LAUNCH_JOBKEY_DISABLED "Disabled" 39 #define LAUNCH_JOBKEY_USERNAME "UserName" 40 #define LAUNCH_JOBKEY_GROUPNAME "GroupName" 41 #define LAUNCH_JOBKEY_TIMEOUT "TimeOut" 42 #define LAUNCH_JOBKEY_EXITTIMEOUT "ExitTimeOut" 43 #define LAUNCH_JOBKEY_INITGROUPS "InitGroups" 44 #define LAUNCH_JOBKEY_SOCKETS "Sockets" 45 #define LAUNCH_JOBKEY_MACHSERVICES "MachServices" 46 #define LAUNCH_JOBKEY_MACHSERVICELOOKUPPOLICIES "MachServiceLookupPolicies" 47 #define LAUNCH_JOBKEY_INETDCOMPATIBILITY "inetdCompatibility" 48 #define LAUNCH_JOBKEY_ENABLEGLOBBING "EnableGlobbing" 49 #define LAUNCH_JOBKEY_PROGRAMARGUMENTS "ProgramArguments" 50 #define LAUNCH_JOBKEY_PROGRAM "Program" 51 #define LAUNCH_JOBKEY_ONDEMAND "OnDemand" 52 #define LAUNCH_JOBKEY_KEEPALIVE "KeepAlive" 53 #define LAUNCH_JOBKEY_LIMITLOADTOHOSTS "LimitLoadToHosts" 54 #define LAUNCH_JOBKEY_LIMITLOADFROMHOSTS "LimitLoadFromHosts" 55 #define LAUNCH_JOBKEY_LIMITLOADTOSESSIONTYPE "LimitLoadToSessionType" 56 #define LAUNCH_JOBKEY_LIMITLOADTOHARDWARE "LimitLoadToHardware" 57 #define LAUNCH_JOBKEY_LIMITLOADFROMHARDWARE "LimitLoadFromHardware" 58 #define LAUNCH_JOBKEY_RUNATLOAD "RunAtLoad" 59 #define LAUNCH_JOBKEY_ROOTDIRECTORY "RootDirectory" 60 #define LAUNCH_JOBKEY_WORKINGDIRECTORY "WorkingDirectory" 61 #define LAUNCH_JOBKEY_ENVIRONMENTVARIABLES "EnvironmentVariables" 62 #define LAUNCH_JOBKEY_USERENVIRONMENTVARIABLES "UserEnvironmentVariables" 63 #define LAUNCH_JOBKEY_UMASK "Umask" 64 #define LAUNCH_JOBKEY_NICE "Nice" 65 #define LAUNCH_JOBKEY_HOPEFULLYEXITSFIRST "HopefullyExitsFirst" 66 #define LAUNCH_JOBKEY_HOPEFULLYEXITSLAST "HopefullyExitsLast" 67 #define LAUNCH_JOBKEY_LOWPRIORITYIO "LowPriorityIO" 68 #define LAUNCH_JOBKEY_LOWPRIORITYBACKGROUNDIO "LowPriorityBackgroundIO" 69 #define LAUNCH_JOBKEY_MATERIALIZEDATALESSFILES "MaterializeDatalessFiles" 70 #define LAUNCH_JOBKEY_SESSIONCREATE "SessionCreate" 71 #define LAUNCH_JOBKEY_STARTONMOUNT "StartOnMount" 72 #define LAUNCH_JOBKEY_SOFTRESOURCELIMITS "SoftResourceLimits" 73 #define LAUNCH_JOBKEY_HARDRESOURCELIMITS "HardResourceLimits" 74 #define LAUNCH_JOBKEY_STANDARDINPATH "StandardInPath" 75 #define LAUNCH_JOBKEY_STANDARDOUTPATH "StandardOutPath" 76 #define LAUNCH_JOBKEY_STANDARDERRORPATH "StandardErrorPath" 77 #define LAUNCH_JOBKEY_DEBUG "Debug" 78 #define LAUNCH_JOBKEY_WAITFORDEBUGGER "WaitForDebugger" 79 #define LAUNCH_JOBKEY_QUEUEDIRECTORIES "QueueDirectories" 80 #define LAUNCH_JOBKEY_WATCHPATHS "WatchPaths" 81 #define LAUNCH_JOBKEY_STARTINTERVAL "StartInterval" 82 #define LAUNCH_JOBKEY_STARTCALENDARINTERVAL "StartCalendarInterval" 83 #define LAUNCH_JOBKEY_BONJOURFDS "BonjourFDs" 84 #define LAUNCH_JOBKEY_LASTEXITSTATUS "LastExitStatus" 85 #define LAUNCH_JOBKEY_PID "PID" 86 #define LAUNCH_JOBKEY_THROTTLEINTERVAL "ThrottleInterval" 87 #define LAUNCH_JOBKEY_LAUNCHONLYONCE "LaunchOnlyOnce" 88 #define LAUNCH_JOBKEY_ABANDONPROCESSGROUP "AbandonProcessGroup" 89 #define LAUNCH_JOBKEY_IGNOREPROCESSGROUPATSHUTDOWN \ 90 "IgnoreProcessGroupAtShutdown" 91 #define LAUNCH_JOBKEY_LEGACYTIMERS "LegacyTimers" 92 #define LAUNCH_JOBKEY_ENABLEPRESSUREDEXIT "EnablePressuredExit" 93 #define LAUNCH_JOBKEY_ENABLETRANSACTIONS "EnableTransactions" 94 #define LAUNCH_JOBKEY_DRAINMESSAGESONFAILEDINIT "DrainMessagesOnFailedInit" 95 #define LAUNCH_JOBKEY_POLICIES "Policies" 96 #define LAUNCH_JOBKEY_BUNDLEPROGRAM "BundleProgram" 97 #define LAUNCH_JOBKEY_ASSOCIATEDBUNDLEIDENTIFIERS "AssociatedBundleIdentifiers" 98 #define LAUNCH_JOBKEY_SPAWNCONSTRAINT "SpawnConstraint" 99 100 #define LAUNCH_JOBKEY_PUBLISHESEVENTS "PublishesEvents" 101 #define LAUNCH_KEY_PUBLISHESEVENTS_DOMAININTERNAL "DomainInternal" 102 103 #define LAUNCH_JOBPOLICY_DENYCREATINGOTHERJOBS "DenyCreatingOtherJobs" 104 105 #define LAUNCH_JOBINETDCOMPATIBILITY_WAIT "Wait" 106 #define LAUNCH_JOBINETDCOMPATIBILITY_INSTANCES "Instances" 107 108 #define LAUNCH_JOBKEY_MACH_RESETATCLOSE "ResetAtClose" 109 #define LAUNCH_JOBKEY_MACH_HIDEUNTILCHECKIN "HideUntilCheckIn" 110 111 #define LAUNCH_JOBKEY_KEEPALIVE_SUCCESSFULEXIT "SuccessfulExit" 112 #define LAUNCH_JOBKEY_KEEPALIVE_NETWORKSTATE "NetworkState" 113 #define LAUNCH_JOBKEY_KEEPALIVE_PATHSTATE "PathState" 114 #define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBACTIVE "OtherJobActive" 115 #define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBENABLED "OtherJobEnabled" 116 #define LAUNCH_JOBKEY_KEEPALIVE_AFTERINITIALDEMAND "AfterInitialDemand" 117 #define LAUNCH_JOBKEY_KEEPALIVE_CRASHED "Crashed" 118 119 #define LAUNCH_JOBKEY_LAUNCHEVENTS "LaunchEvents" 120 121 #define LAUNCH_JOBKEY_CAL_MINUTE "Minute" 122 #define LAUNCH_JOBKEY_CAL_HOUR "Hour" 123 #define LAUNCH_JOBKEY_CAL_DAY "Day" 124 #define LAUNCH_JOBKEY_CAL_WEEKDAY "Weekday" 125 #define LAUNCH_JOBKEY_CAL_MONTH "Month" 126 127 #define LAUNCH_JOBKEY_RESOURCELIMIT_CORE "Core" 128 #define LAUNCH_JOBKEY_RESOURCELIMIT_CPU "CPU" 129 #define LAUNCH_JOBKEY_RESOURCELIMIT_DATA "Data" 130 #define LAUNCH_JOBKEY_RESOURCELIMIT_FSIZE "FileSize" 131 #define LAUNCH_JOBKEY_RESOURCELIMIT_MEMLOCK "MemoryLock" 132 #define LAUNCH_JOBKEY_RESOURCELIMIT_NOFILE "NumberOfFiles" 133 #define LAUNCH_JOBKEY_RESOURCELIMIT_NPROC "NumberOfProcesses" 134 #define LAUNCH_JOBKEY_RESOURCELIMIT_RSS "ResidentSetSize" 135 #define LAUNCH_JOBKEY_RESOURCELIMIT_STACK "Stack" 136 137 #define LAUNCH_JOBKEY_DISABLED_MACHINETYPE "MachineType" 138 #define LAUNCH_JOBKEY_DISABLED_MODELNAME "ModelName" 139 140 #define LAUNCH_JOBKEY_DATASTORES "Datastores" 141 #define LAUNCH_JOBKEY_DATASTORES_SIZELIMIT "SizeLimit" 142 143 #define LAUNCH_JOBSOCKETKEY_TYPE "SockType" 144 #define LAUNCH_JOBSOCKETKEY_PASSIVE "SockPassive" 145 #define LAUNCH_JOBSOCKETKEY_BONJOUR "Bonjour" 146 #define LAUNCH_JOBSOCKETKEY_SECUREWITHKEY "SecureSocketWithKey" 147 #define LAUNCH_JOBSOCKETKEY_PATHNAME "SockPathName" 148 #define LAUNCH_JOBSOCKETKEY_PATHMODE "SockPathMode" 149 #define LAUNCH_JOBSOCKETKEY_PATHOWNER "SockPathOwner" 150 #define LAUNCH_JOBSOCKETKEY_PATHGROUP "SockPathGroup" 151 #define LAUNCH_JOBSOCKETKEY_NODENAME "SockNodeName" 152 #define LAUNCH_JOBSOCKETKEY_SERVICENAME "SockServiceName" 153 #define LAUNCH_JOBSOCKETKEY_FAMILY "SockFamily" 154 #define LAUNCH_JOBSOCKETKEY_PROTOCOL "SockProtocol" 155 #define LAUNCH_JOBSOCKETKEY_MULTICASTGROUP "MulticastGroup" 156 157 #define LAUNCH_JOBKEY_PROCESSTYPE "ProcessType" 158 #define LAUNCH_KEY_PROCESSTYPE_APP "App" 159 #define LAUNCH_KEY_PROCESSTYPE_STANDARD "Standard" 160 #define LAUNCH_KEY_PROCESSTYPE_BACKGROUND "Background" 161 #define LAUNCH_KEY_PROCESSTYPE_INTERACTIVE "Interactive" 162 #define LAUNCH_KEY_PROCESSTYPE_ADAPTIVE "Adaptive" 163 164 /*! 165 * @function launch_activate_socket 166 * 167 * @abstract 168 * Retrieves the file descriptors for sockets specified in the process' 169 * launchd.plist(5). 170 * 171 * @param name 172 * The name of the socket entry in the service's Sockets dictionary. 173 * 174 * @param fds 175 * On return, this parameter will be populated with an array of file 176 * descriptors. One socket can have many descriptors associated with it 177 * depending on the characteristics of the network interfaces on the system. 178 * The descriptors in this array are the results of calling getaddrinfo(3) with 179 * the parameters described in launchd.plist(5). 180 * 181 * The caller is responsible for calling free(3) on the returned pointer. 182 * 183 * @param cnt 184 * The number of file descriptor entries in the returned array. 185 * 186 * @result 187 * On success, zero is returned. Otherwise, an appropriate POSIX-domain is 188 * returned. Possible error codes are: 189 * 190 * ENOENT -> There was no socket of the specified name owned by the caller. 191 * ESRCH -> The caller is not a process managed by launchd. 192 * EALREADY -> The socket has already been activated by the caller. 193 */ 194 __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) 195 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3 196 int 197 launch_activate_socket(const char *name, 198 int * _Nonnull * _Nullable fds, size_t *cnt); 199 200 typedef struct _launch_data *launch_data_t; 201 typedef void (*launch_data_dict_iterator_t)(const launch_data_t lval, 202 const char *key, void * _Nullable ctx); 203 204 typedef enum { 205 LAUNCH_DATA_DICTIONARY = 1, 206 LAUNCH_DATA_ARRAY, 207 LAUNCH_DATA_FD, 208 LAUNCH_DATA_INTEGER, 209 LAUNCH_DATA_REAL, 210 LAUNCH_DATA_BOOL, 211 LAUNCH_DATA_STRING, 212 LAUNCH_DATA_OPAQUE, 213 LAUNCH_DATA_ERRNO, 214 LAUNCH_DATA_MACHPORT, 215 } launch_data_type_t; 216 217 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 218 OS_EXPORT OS_MALLOC OS_WARN_RESULT 219 launch_data_t 220 launch_data_alloc(launch_data_type_t type); 221 222 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 223 OS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1 224 launch_data_t 225 launch_data_copy(launch_data_t ld); 226 227 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 228 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 229 launch_data_type_t 230 launch_data_get_type(const launch_data_t ld); 231 232 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 233 OS_EXPORT OS_NONNULL1 234 void 235 launch_data_free(launch_data_t ld); 236 237 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 238 OS_EXPORT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3 239 bool 240 launch_data_dict_insert(launch_data_t ldict, const launch_data_t lval, 241 const char *key); 242 243 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 244 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2 245 launch_data_t _Nullable 246 launch_data_dict_lookup(const launch_data_t ldict, const char *key); 247 248 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 249 OS_EXPORT OS_NONNULL1 OS_NONNULL2 250 bool 251 launch_data_dict_remove(launch_data_t ldict, const char *key); 252 253 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 254 OS_EXPORT OS_NONNULL1 OS_NONNULL2 255 void 256 launch_data_dict_iterate(const launch_data_t ldict, 257 launch_data_dict_iterator_t iterator, void * _Nullable ctx); 258 259 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 260 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 261 size_t 262 launch_data_dict_get_count(const launch_data_t ldict); 263 264 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 265 OS_EXPORT OS_NONNULL1 OS_NONNULL2 266 bool 267 launch_data_array_set_index(launch_data_t larray, const launch_data_t lval, 268 size_t idx); 269 270 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 271 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 272 launch_data_t 273 launch_data_array_get_index(const launch_data_t larray, size_t idx); 274 275 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 276 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 277 size_t 278 launch_data_array_get_count(const launch_data_t larray); 279 280 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 281 OS_EXPORT OS_MALLOC OS_WARN_RESULT 282 launch_data_t 283 launch_data_new_fd(int fd); 284 285 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 286 OS_EXPORT OS_MALLOC OS_WARN_RESULT 287 launch_data_t 288 launch_data_new_machport(mach_port_t val); 289 290 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 291 OS_EXPORT OS_MALLOC OS_WARN_RESULT 292 launch_data_t 293 launch_data_new_integer(long long val); 294 295 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 296 OS_EXPORT OS_MALLOC OS_WARN_RESULT 297 launch_data_t 298 launch_data_new_bool(bool val); 299 300 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 301 OS_EXPORT OS_MALLOC OS_WARN_RESULT 302 launch_data_t 303 launch_data_new_real(double val); 304 305 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 306 OS_EXPORT OS_MALLOC OS_WARN_RESULT 307 launch_data_t 308 launch_data_new_string(const char *val); 309 310 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 311 OS_EXPORT OS_MALLOC OS_WARN_RESULT 312 launch_data_t 313 launch_data_new_opaque(const void *bytes, size_t sz); 314 315 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 316 OS_EXPORT OS_NONNULL1 317 bool 318 launch_data_set_fd(launch_data_t ld, int fd); 319 320 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 321 OS_EXPORT OS_NONNULL1 322 bool 323 launch_data_set_machport(launch_data_t ld, mach_port_t mp); 324 325 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 326 OS_EXPORT OS_NONNULL1 327 bool 328 launch_data_set_integer(launch_data_t ld, long long val); 329 330 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 331 OS_EXPORT OS_NONNULL1 332 bool 333 launch_data_set_bool(launch_data_t ld, bool val); 334 335 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 336 OS_EXPORT OS_NONNULL1 337 bool 338 launch_data_set_real(launch_data_t ld, double val); 339 340 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 341 OS_EXPORT OS_NONNULL1 342 bool 343 launch_data_set_string(launch_data_t ld, const char *val); 344 345 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 346 OS_EXPORT OS_NONNULL1 347 bool 348 launch_data_set_opaque(launch_data_t ld, const void *bytes, size_t sz); 349 350 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 351 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 352 int 353 launch_data_get_fd(const launch_data_t ld); 354 355 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 356 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 357 mach_port_t 358 launch_data_get_machport(const launch_data_t ld); 359 360 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 361 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 362 long long 363 launch_data_get_integer(const launch_data_t ld); 364 365 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 366 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 367 bool 368 launch_data_get_bool(const launch_data_t ld); 369 370 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 371 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 372 double 373 launch_data_get_real(const launch_data_t ld); 374 375 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 376 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 377 const char * 378 launch_data_get_string(const launch_data_t ld); 379 380 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 381 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 382 void * _Nullable 383 launch_data_get_opaque(const launch_data_t ld); 384 385 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 386 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 387 size_t 388 launch_data_get_opaque_size(const launch_data_t ld); 389 390 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 391 OS_EXPORT OS_WARN_RESULT OS_NONNULL1 392 int 393 launch_data_get_errno(const launch_data_t ld); 394 395 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 396 OS_EXPORT OS_WARN_RESULT 397 int 398 launch_get_fd(void); 399 400 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0) 401 OS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1 402 launch_data_t 403 launch_msg(const launch_data_t request); 404 405 __END_DECLS 406 #if __has_feature(assume_nonnull) 407 _Pragma("clang assume_nonnull end") 408 #endif 409 410 #endif // __XPC_LAUNCH_H__