]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Copyright (c) 2006-2007 Apple 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 | ||
21 | #ifndef __VPROC_INTERNAL_H__ | |
22 | #define __VPROC_INTERNAL_H__ | |
23 | ||
24 | #include <mach/mach.h> | |
25 | #include <sys/queue.h> | |
26 | #include <sys/time.h> | |
27 | #include <stdarg.h> | |
28 | #include <sys/syscall.h> | |
29 | #include <bsm/audit.h> | |
30 | #include "launch.h" | |
31 | #include "bootstrap_priv.h" | |
32 | #include "vproc.h" | |
33 | ||
34 | typedef char * _internal_string_t; | |
35 | typedef char * logmsg_t; | |
36 | typedef pid_t * pid_array_t; | |
37 | typedef mach_port_t vproc_mig_t; | |
38 | ||
39 | #if defined(job_MSG_COUNT) || defined (xpc_domain_MSG_COUNT) | |
40 | /* HACK */ | |
41 | #include "core.h" | |
42 | #endif | |
43 | ||
44 | #define VPROC_ERR_TRY_PER_USER 1099 | |
45 | ||
46 | #pragma GCC visibility push(default) | |
47 | ||
48 | vproc_err_t _vprocmgr_init(const char *session_type); | |
49 | vproc_err_t _vproc_post_fork_ping(void); | |
50 | ||
51 | #if !TARGET_OS_EMBEDDED | |
52 | #define _audit_session_self(v) (mach_port_t)syscall(SYS_audit_session_self) | |
53 | #define _audit_session_join(s) (au_asid_t)syscall(SYS_audit_session_join, session) | |
54 | #else | |
55 | #define _audit_session_self(v) MACH_PORT_NULL | |
56 | #define _audit_session_join(s) 0 | |
57 | #endif | |
58 | ||
59 | #define __LAUNCH_MACH_PORT_CONTEXT_T_DEFINED__ 0 | |
60 | ||
61 | #define SPAWN_HAS_PATH 0x0001 | |
62 | #define SPAWN_HAS_WDIR 0x0002 | |
63 | #define SPAWN_HAS_UMASK 0x0004 | |
64 | #define SPAWN_WANTS_WAIT4DEBUGGER 0x0008 | |
65 | ||
66 | kern_return_t | |
67 | _vproc_grab_subset(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright, launch_data_t *outval, | |
68 | mach_port_array_t *ports, mach_msg_type_number_t *portCnt); | |
69 | ||
70 | kern_return_t _vprocmgr_getsocket(name_t); | |
71 | ||
72 | struct logmsg_s { | |
73 | union { | |
74 | STAILQ_ENTRY(logmsg_s) sqe; | |
75 | uint64_t __pad; | |
76 | }; | |
77 | int64_t when; | |
78 | pid_t from_pid; | |
79 | pid_t about_pid; | |
80 | uid_t sender_uid; | |
81 | gid_t sender_gid; | |
82 | int err_num; | |
83 | int pri; | |
84 | union { | |
85 | const char *from_name; | |
86 | uint64_t from_name_offset; | |
87 | }; | |
88 | union { | |
89 | const char *about_name; | |
90 | uint64_t about_name_offset; | |
91 | }; | |
92 | union { | |
93 | const char *session_name; | |
94 | uint64_t session_name_offset; | |
95 | }; | |
96 | union { | |
97 | const char *msg; | |
98 | uint64_t msg_offset; | |
99 | }; | |
100 | uint64_t obj_sz; | |
101 | char data[0]; | |
102 | }; | |
103 | ||
104 | ||
105 | vproc_err_t _vprocmgr_log_forward(mach_port_t mp, void *data, size_t len); | |
106 | ||
107 | kern_return_t | |
108 | bootstrap_info(mach_port_t bp, | |
109 | name_array_t *service_names, | |
110 | mach_msg_type_number_t *service_namesCnt, | |
111 | name_array_t *service_jobs, | |
112 | mach_msg_type_number_t *service_jobsCnt, | |
113 | bootstrap_status_array_t *service_active, | |
114 | mach_msg_type_number_t *service_activeCnt, | |
115 | uint64_t flags); | |
116 | ||
117 | #pragma GCC visibility pop | |
118 | ||
119 | #endif /* __VPROC_INTERNAL_H__ */ |