]>
git.saurik.com Git - apple/launchd.git/blob - launchd/src/launch_priv.h
9382370df2c1ffc2900acd043d170ced4ea6c357
2 * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
4 * @APPLE_APACHE_LICENSE_HEADER_START@
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * @APPLE_APACHE_LICENSE_HEADER_END@
20 #ifndef _LAUNCH_PRIV_H_
21 #define _LAUNCH_PRIV_H_
23 #include <mach/mach.h>
24 #include <sys/types.h>
28 #include <uuid/uuid.h>
30 #pragma GCC visibility push(default)
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"
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__"
52 #define LAUNCH_KEY_JETSAMLABEL "JetsamLabel"
53 #define LAUNCH_KEY_JETSAMFRONTMOST "JetsamFrontmost"
54 #define LAUNCH_KEY_JETSAMPRIORITY "JetsamPriority"
56 #define LAUNCH_JOBKEY_TRANSACTIONCOUNT "TransactionCount"
57 #define LAUNCH_JOBKEY_QUARANTINEDATA "QuarantineData"
58 #define LAUNCH_JOBKEY_SANDBOXPROFILE "SandboxProfile"
59 #define LAUNCH_JOBKEY_SANDBOXFLAGS "SandboxFlags"
60 #define LAUNCH_JOBKEY_SANDBOX_NAMED "Named"
61 #define LAUNCH_JOBKEY_JETSAMPRIORITY "JetsamPriority"
62 #define LAUNCH_JOBKEY_SECURITYSESSIONUUID "SecuritySessionUUID"
64 #define LAUNCH_JOBKEY_EMBEDDEDPRIVILEGEDISPENSATION "EmbeddedPrivilegeDispensation"
65 #define LAUNCH_JOBKEY_EMBEDDEDMAINTHREADPRIORITY "EmbeddedMainThreadPriority"
67 #define LAUNCH_JOBKEY_ENTERKERNELDEBUGGERBEFOREKILL "EnterKernelDebuggerBeforeKill"
68 #define LAUNCH_JOBKEY_PERJOBMACHSERVICES "PerJobMachServices"
69 #define LAUNCH_JOBKEY_SERVICEIPC "ServiceIPC"
70 #define LAUNCH_JOBKEY_BINARYORDERPREFERENCE "BinaryOrderPreference"
71 #define LAUNCH_JOBKEY_MACHEXCEPTIONHANDLER "MachExceptionHandler"
73 #define LAUNCH_JOBKEY_MACH_KUNCSERVER "kUNCServer"
74 #define LAUNCH_JOBKEY_MACH_EXCEPTIONSERVER "ExceptionServer"
75 #define LAUNCH_JOBKEY_MACH_TASKSPECIALPORT "TaskSpecialPort"
76 #define LAUNCH_JOBKEY_MACH_HOSTSPECIALPORT "HostSpecialPort"
77 #define LAUNCH_JOBKEY_MACH_ENTERKERNELDEBUGGERONCLOSE "EnterKernelDebuggerOnClose"
79 typedef struct _launch
*launch_t
;
81 launch_t
launchd_fdopen(int, int);
82 int launchd_getfd(launch_t
);
83 void launchd_close(launch_t
, __typeof__(close
) closefunc
);
85 launch_data_t
launch_data_new_errno(int);
86 bool launch_data_set_errno(launch_data_t
, int);
88 int launchd_msg_send(launch_t
, launch_data_t
);
89 int launchd_msg_recv(launch_t
, void (*)(launch_data_t
, void *), void *);
93 * After this call, the task's bootstrap port is set to the per session launchd.
95 * This returns 1 on success (it used to return otherwise), and -1 on failure.
97 #define LOAD_ONLY_SAFEMODE_LAUNCHAGENTS 1 << 0
98 #define LAUNCH_GLOBAL_ON_DEMAND 1 << 1
99 pid_t
create_and_switch_to_per_session_launchd(const char * /* loginname */, int flags
, ...);
101 /* Also for LoginWindow.
103 * This is will load jobs at the LoginWindow prompt.
105 void load_launchd_jobs_at_loginwindow_prompt(int flags
, ...);
108 /* batch jobs will be implicity re-enabled when the last application who
109 * disabled them exits.
111 * This API is really a hack to work around the lack of real-time APIs
114 void launchd_batch_enable(bool);
115 bool launchd_batch_query(void);
120 #define SPAWN_VIA_LAUNCHD_STOPPED 0x0001
122 struct spawn_via_launchd_attr
{
123 uint64_t spawn_flags
;
124 const char * spawn_path
;
125 const char * spawn_chdir
;
126 const char *const * spawn_env
;
127 const mode_t
* spawn_umask
;
128 mach_port_t
* spawn_observer_port
;
129 const cpu_type_t
* spawn_binpref
;
130 size_t spawn_binpref_cnt
;
131 void * spawn_quarantine
;
132 const char * spawn_seatbelt_profile
;
133 const uint64_t * spawn_seatbelt_flags
;
136 #define spawn_via_launchd(a, b, c) _spawn_via_launchd(a, b, c, 2)
137 pid_t
_spawn_via_launchd(
139 const char *const *argv
,
140 const struct spawn_via_launchd_attr
*spawn_attrs
,
143 kern_return_t
mpm_wait(mach_port_t ajob
, int *wstatus
);
145 kern_return_t
mpm_uncork_fork(mach_port_t ajob
);
150 #pragma GCC visibility pop