protocol_vproc.defs   [plain text]


/*
 * Copyright (c) 1999-2004 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_APACHE_LICENSE_HEADER_START@
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * @APPLE_APACHE_LICENSE_HEADER_END@
 */
/*
 * bootstrap -- fundamental service initiator and port server
 * Mike DeMoney, NeXT, Inc.
 * Copyright, 1990.  All rights reserved.
 */

subsystem protocol_vproc 400;

#include <mach/std_types.defs>
#include <mach/mach_types.defs>
#include "launchd_mig_types.defs"
import "vproc.h";
import "vproc_priv.h";
import "vproc_internal.h";

type mach_port_move_send_array_t = array[] of mach_port_move_send_t
		ctype: mach_port_array_t;

userprefix vproc_mig_;
serverprefix job_mig_;

routine create_server(
				__bs_port			: job_t;
				__server_cmd		: cmd_t;
				__server_uid		: uid_t;
				__on_demand			: boolean_t;
out				__server_port		: mach_port_make_send_t);

routine reboot2(
				__bs_port			: job_t;
				__flags				: uint64_t);

routine check_in2(
				__bs_port			: job_t;
				__service_name		: name_t;
out				__service_port		: mach_port_move_receive_t;
				__flags				: uint64_t);

routine register2(
				__bs_port			: job_t;
				__service_name		: name_t;
				__service_port		: mach_port_t;
				__flags				: uint64_t);

routine look_up2(
				__bs_port			: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
				__service_name		: name_t;
out				__service_port		: mach_port_t;
UserAuditToken	__server_cred		: audit_token_t;
				__target_pid		: pid_t;
				__flags				: uint64_t);

routine send_signal(
				__bs_port			: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
				__label				: name_t;
				__signal			: integer_t);

routine parent(
				__bs_port			: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
out				__parent_port		: mach_port_make_send_t);

routine post_fork_ping(
				__bs_port			: job_t;
				__task_port			: task_t;
out				__audit_session		: mach_port_t);

routine info(
				__bs_port			: job_t;
out				__service_names		: name_array_t, dealloc;
out				__service_jobs		: name_array_t, dealloc;
out				__service_active	: bootstrap_status_array_t, dealloc;
				__flags				: uint64_t);

routine subset(
				__bs_port			: job_t;
				__requestor_port	: mach_port_t;
out				__subset_port		: mach_port_make_send_t);

routine setup_shmem(
				__bs_port			: job_t;
out				__shmem_port		: mach_port_move_send_t);

routine take_subset(
				__bs_port			: job_t;
out				__bs_reqport		: mach_port_move_send_t;
out				__bs_rcvright		: mach_port_move_receive_t;
out				__outdata			: pointer_t, dealloc;
out				__service_ports		: mach_port_move_send_array_t, dealloc);

routine getsocket(
				__bs_port			: job_t;
out				__sockpath			: name_t);

routine spawn(
				__bs_port			: job_t;
				__indata			: pointer_t;
				__audit_session		: mach_port_t;
out				__pid				: pid_t;
out				__obsvr_port		: mach_port_make_send_t);

routine wait(
				__bs_port			: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
out				__waitval			: integer_t);

routine uncork_fork(
				__bs_port			: job_t);

routine swap_integer(
				__bs_port			: job_t;
				__inkey				: vproc_gsk_t;
				__outkey			: vproc_gsk_t;
				__inval				: int64_t;
out				__outval			: int64_t);

routine log(
				__bs_port			: job_t;
				__pri				: integer_t;
				__err				: integer_t;
				__msg				: logmsg_t);

routine lookup_per_user_context(
				__bs_port			: job_t;
				__wu				: uid_t;
out				__u_cont			: mach_port_t);

routine move_subset(
				__bs_port			: job_t;
				__target_port		: mach_port_t;
				__sessiontype		: name_t;
				__audit_session		: mach_port_t;
				__sessionflags		: uint64_t);

routine swap_complex(
				__bs_port			: job_t;
				__inkey				: vproc_gsk_t;
				__outkey			: vproc_gsk_t;
				__inval				: pointer_t;
out				__outval			: pointer_t, dealloc);

routine log_drain(
				__bs_port			: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
out				__outval			: pointer_t, dealloc);

routine log_forward(
				__bs_port			: job_t;
				__inval				: pointer_t);

routine kickstart(
				__bs_port			: job_t;
				__label				: name_t;
out				__pid				: pid_t;
out				__name_port			: mach_port_t;
out				__obsrvr_port		: mach_port_make_send_t;
				__flags				: natural_t);

routine embedded_wait(
				__bs_port			: job_t;
				__label				: name_t;
out				__waitval			: integer_t);

routine lookup_children(
				__bs_port			: job_t;
out 			__child_ports		: mach_port_move_send_array_t, dealloc;
out				__child_names		: name_array_t, dealloc;
out				__child_properties	: bootstrap_property_array_t, dealloc);

routine switch_to_session(
				__bs_port			: job_t;
				__req_port			: mach_port_t;
				__session_name		: name_t;
				__audit_session		: mach_port_t;
out				__new_bs_port		: mach_port_make_send_t);

routine transaction_count_for_pid(
				__bs_port			: job_t;
				__pid				: pid_t;
out				__cnt				: integer_t;
out				__condemend			: boolean_t);
				
routine pid_is_managed(
				__bs_port			: job_t;
				__pid				: pid_t;
out				__managed			: boolean_t);

routine port_for_label(
				__bs_port			: job_t;
				__label				: name_t;
out				__mp				: mach_port_make_send_t);

routine init_session(
				__bs_port			: job_t;
				__session_name		: name_t;
				__audit_session		: mach_port_t);

routine set_security_session(
				__bs_port			: job_t;
				__uuid				: uuid_t;
				__session			: mach_port_t);

routine wait2(
				__bs_port			: job_t;
				__target_port		: job_t;
sreplyport		__rport				: mach_port_make_send_once_t;
out				__waitval			: integer_t;
				__legacy			: boolean_t);