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