]> git.saurik.com Git - apple/launchd.git/blob - launchd/src/launch_priv.h
ee34c836a108608b6184003ad7c07b5f3e16fc72
[apple/launchd.git] / launchd / src / launch_priv.h
1 /*
2 * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_APACHE_LICENSE_HEADER_START@
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 * @APPLE_APACHE_LICENSE_HEADER_END@
19 */
20 #ifndef _LAUNCH_PRIV_H_
21 #define _LAUNCH_PRIV_H_
22
23 #include <mach/mach.h>
24 #include <sys/types.h>
25 #include <launch.h>
26 #include <unistd.h>
27 #include <paths.h>
28 #include <uuid/uuid.h>
29
30 #pragma GCC visibility push(default)
31
32 __BEGIN_DECLS
33
34 #define LAUNCH_KEY_SETUSERENVIRONMENT "SetUserEnvironment"
35 #define LAUNCH_KEY_UNSETUSERENVIRONMENT "UnsetUserEnvironment"
36 #define LAUNCH_KEY_SHUTDOWN "Shutdown"
37 #define LAUNCH_KEY_SINGLEUSER "SingleUser"
38 #define LAUNCH_KEY_GETRESOURCELIMITS "GetResourceLimits"
39 #define LAUNCH_KEY_SETRESOURCELIMITS "SetResourceLimits"
40 #define LAUNCH_KEY_GETRUSAGESELF "GetResourceUsageSelf"
41 #define LAUNCH_KEY_GETRUSAGECHILDREN "GetResourceUsageChildren"
42 #define LAUNCH_KEY_SETPRIORITYLIST "SetPriorityList"
43
44 #define LAUNCHD_SOCKET_ENV "LAUNCHD_SOCKET"
45 #define LAUNCHD_SOCK_PREFIX _PATH_VARTMP "launchd"
46 #define LAUNCHD_TRUSTED_FD_ENV "__LAUNCHD_FD"
47 #define LAUNCHD_ASYNC_MSG_KEY "_AsyncMessage"
48 #define LAUNCH_KEY_BATCHCONTROL "BatchControl"
49 #define LAUNCH_KEY_BATCHQUERY "BatchQuery"
50 #define LAUNCHD_DO_APPLE_INTERNAL_LOGGING "__DoAppleInternalLogging__"
51
52 #define LAUNCH_JOBKEY_TRANSACTIONCOUNT "TransactionCount"
53 #define LAUNCH_JOBKEY_QUARANTINEDATA "QuarantineData"
54 #define LAUNCH_JOBKEY_SANDBOXPROFILE "SandboxProfile"
55 #define LAUNCH_JOBKEY_SANDBOXFLAGS "SandboxFlags"
56 #define LAUNCH_JOBKEY_SANDBOX_NAMED "Named"
57 #define LAUNCH_JOBKEY_JETSAMPROPERTIES "JetsamProperties"
58 #define LAUNCH_JOBKEY_JETSAMPRIORITY "JetsamPriority"
59 #define LAUNCH_JOBKEY_JETSAMMEMORYLIMIT "JetsamMemoryLimit"
60 #define LAUNCH_JOBKEY_SECURITYSESSIONUUID "SecuritySessionUUID"
61 #define LAUNCH_JOBKEY_DISABLEASLR "DisableASLR"
62 #define LAUNCH_JOBKEY_XPCDOMAIN "XPCDomain"
63 #define LAUNCH_JOBKEY_POSIXSPAWNTYPE "POSIXSpawnType"
64
65 #define LAUNCH_KEY_JETSAMLABEL "JetsamLabel"
66 #define LAUNCH_KEY_JETSAMFRONTMOST "JetsamFrontmost"
67 #define LAUNCH_KEY_JETSAMPRIORITY LAUNCH_JOBKEY_JETSAMPRIORITY
68 #define LAUNCH_KEY_JETSAMMEMORYLIMIT LAUNCH_JOBKEY_JETSAMMEMORYLIMIT
69
70 #define LAUNCH_KEY_POSIXSPAWNTYPE_TALAPP "TALApp"
71 #define LAUNCH_KEY_POSIXSPAWNTYPE_WIDGET "Widget"
72 #define LAUNCH_KEY_POSIXSPAWNTYPE_IOSAPP "iOSApp"
73
74 #define LAUNCH_JOBKEY_EMBEDDEDPRIVILEGEDISPENSATION "EmbeddedPrivilegeDispensation"
75 #define LAUNCH_JOBKEY_EMBEDDEDMAINTHREADPRIORITY "EmbeddedMainThreadPriority"
76
77 #define LAUNCH_JOBKEY_ENTERKERNELDEBUGGERBEFOREKILL "EnterKernelDebuggerBeforeKill"
78 #define LAUNCH_JOBKEY_PERJOBMACHSERVICES "PerJobMachServices"
79 #define LAUNCH_JOBKEY_SERVICEIPC "ServiceIPC"
80 #define LAUNCH_JOBKEY_BINARYORDERPREFERENCE "BinaryOrderPreference"
81 #define LAUNCH_JOBKEY_MACHEXCEPTIONHANDLER "MachExceptionHandler"
82 #define LAUNCH_JOBKEY_MULTIPLEINSTANCES "MultipleInstances"
83 #define LAUNCH_JOBKEY_EVENTMONITOR "EventMonitor"
84 #define LAUNCH_JOBKEY_SHUTDOWNMONITOR "ShutdownMonitor"
85 #define LAUNCH_JOBKEY_BEGINTRANSACTIONATSHUTDOWN "BeginTransactionAtShutdown"
86 #define LAUNCH_JOBKEY_XPCDOMAINBOOTSTRAPPER "XPCDomainBootstrapper"
87
88 #define LAUNCH_JOBKEY_MACH_KUNCSERVER "kUNCServer"
89 #define LAUNCH_JOBKEY_MACH_EXCEPTIONSERVER "ExceptionServer"
90 #define LAUNCH_JOBKEY_MACH_TASKSPECIALPORT "TaskSpecialPort"
91 #define LAUNCH_JOBKEY_MACH_HOSTSPECIALPORT "HostSpecialPort"
92 #define LAUNCH_JOBKEY_MACH_ENTERKERNELDEBUGGERONCLOSE "EnterKernelDebuggerOnClose"
93
94 #define LAUNCH_ENV_INSTANCEID "LaunchInstanceID"
95
96 /* For LoginWindow.
97 *
98 * After this call, the task's bootstrap port is set to the per session launchd.
99 *
100 * This returns 1 on success (it used to return otherwise), and -1 on failure.
101 */
102 #define LOAD_ONLY_SAFEMODE_LAUNCHAGENTS 1 << 0
103 #define LAUNCH_GLOBAL_ON_DEMAND 1 << 1
104 pid_t create_and_switch_to_per_session_launchd(const char * /* loginname */, int flags, ...);
105
106 /* Also for LoginWindow.
107 *
108 * This is will load jobs at the LoginWindow prompt.
109 */
110 void load_launchd_jobs_at_loginwindow_prompt(int flags, ...);
111
112 /* For CoreProcesses
113 */
114
115 #define SPAWN_VIA_LAUNCHD_STOPPED 0x0001
116 #define SPAWN_VIA_LAUNCHD_TALAPP 0x0002
117 #define SPAWN_VIA_LAUNCHD_WIDGET 0x0004
118 #define SPAWN_VIA_LAUNCHD_DISABLE_ASLR 0x0008
119
120 struct spawn_via_launchd_attr {
121 uint64_t spawn_flags;
122 const char * spawn_path;
123 const char * spawn_chdir;
124 const char *const * spawn_env;
125 const mode_t * spawn_umask;
126 mach_port_t * spawn_observer_port;
127 const cpu_type_t * spawn_binpref;
128 size_t spawn_binpref_cnt;
129 void * spawn_quarantine;
130 const char * spawn_seatbelt_profile;
131 const uint64_t * spawn_seatbelt_flags;
132 };
133
134 #define spawn_via_launchd(a, b, c) _spawn_via_launchd(a, b, c, 3)
135 pid_t _spawn_via_launchd(
136 const char *label,
137 const char *const *argv,
138 const struct spawn_via_launchd_attr *spawn_attrs,
139 int struct_version);
140
141 int launch_wait(mach_port_t port);
142
143 kern_return_t mpm_wait(mach_port_t ajob, int *wstatus);
144
145 kern_return_t mpm_uncork_fork(mach_port_t ajob);
146
147 __END_DECLS
148
149 #pragma GCC visibility pop
150
151
152 #endif