xref: /NextBSD/lib/liblaunch/vproc_internal.h (revision 33da5adc555b3bc29986eeadca03829e4ad06b1e)
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__ */
120