protocol_jobmgr.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 bootstrap 400;

#include <mach/std_types.defs>
#include <mach/mach_types.defs>
#include "launchd_mig_types.defs"
import "bootstrap_public.h";
import "bootstrap_private.h";

userprefix vproc_mig_;
serverprefix job_mig_;

routine create_server(
		__bs_port	: job_t;
		__server_cmd	: cmd_t;
		__server_uid	: natural_t;
		__on_demand	: boolean_t;
	ServerAuditToken	__token	: audit_token_t;
	out	__server_port	: mach_port_make_send_t);

skip; /* Last used in 10.4. Was bootstrap_unprivileged() */

routine check_in(
			__bs_port	: job_t;
			__service_name	: name_t;
	ServerAuditToken	__token	: audit_token_t;
		out	__service_port	: mach_port_move_receive_t);

routine register(
		__bs_port	: job_t;
	ServerAuditToken	__token	: audit_token_t;
		__service_name	: name_t;
		__service_port	: mach_port_t);

routine look_up(
		__bs_port	: job_t;
	ServerAuditToken	__token	: audit_token_t;
		__service_name	: name_t;
	out	__service_port	: mach_port_send_t);

skip; /* last used in 10.4 */

routine parent(
		__bs_port	: job_t;
	out	__parent_port	: mach_port_send_t);

skip; /* last used in 10.4 */

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

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

routine create_service(
		__bs_port	: job_t;
		__service_name	: name_t;
	out	__service_port	: mach_port_t);

routine transfer_subset(
		__bs_port	: job_t;
	out	__bs_reqport	: mach_port_t;
	out	__bs_rcvright	: mach_port_move_receive_t;
	out	__service_names	: name_array_t, dealloc;
	out	__service_pids	: pointer_t, dealloc;
	out	__service_ports	: mach_port_array_t, dealloc);

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

routine spawn(
		__bs_port	: job_t;
	ServerAuditToken	__token	: audit_token_t;
		__chars		: _internal_string_t;
		__argc		: uint32_t;
		__envc		: uint32_t;
		__flags		: uint64_t;
		__umask		: uint16_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;
	ServerAuditToken	__token	: audit_token_t;
	out	__waitval	: integer_t);

routine uncork_fork(
		__bs_port	: job_t;
	ServerAuditToken	__token	: audit_token_t);

/* Essentially the inverse of bootstrap_unprivileged() */
routine get_self(
		__bs_port	: job_t;
	ServerAuditToken        __token : audit_token_t;
	out	__job_port	: mach_port_make_send_t);