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(
				j			: job_t;
				servercmd	: cmd_t;
				serveruid	: uid_t;
				ondemand	: boolean_t;
out				serverport	: mach_port_make_send_t
);

routine
reboot2(
				j			: job_t;
				flags		: uint64_t
);

routine
check_in2(
				j			: job_t;
				servicename	: name_t;
out				serviceport	: mach_port_move_receive_t;
out				instanceid	: uuid_t;
				flags		: uint64_t
);

routine
register2(
				j			: job_t;
				servicename	: name_t;
				serviceport	: mach_port_t;
				flags		: uint64_t
);

routine
look_up2(
				j			: job_t;
sreplyport		rp			: mach_port_make_send_once_t;
				servicename	: name_t;
out				serviceport	: mach_port_t;
UserAuditToken	servercreds	: audit_token_t;
				targetpid	: pid_t;
				instanceid	: uuid_t;
				flags		: uint64_t
);

routine
send_signal(
				j			: job_t;
sreplyport		rp			: mach_port_make_send_once_t;
				label		: name_t;
				sig			: integer_t
);

routine
parent(
				j			: job_t;
sreplyport		rp			: mach_port_make_send_once_t;
out				parentport	: mach_port_make_send_t
);

routine
post_fork_ping(
				j			: job_t;
				taskport	: task_t;
out				asport		: mach_port_t
);

routine
info(
				j			: job_t;
out				names		: name_array_t, dealloc;
out				jobs		: name_array_t, dealloc;
out				actives		: bootstrap_status_array_t, dealloc;
				flags		: uint64_t
);

routine
subset(
				j			: job_t;
				reqport		: mach_port_t;
out				subsetport	: mach_port_make_send_t
);

routine
setup_shmem(
				j			: job_t;
out				shmemport	: mach_port_move_send_t
);

routine
take_subset(
				j			: job_t;
out				reqport		: mach_port_move_send_t;
out				recvport	: mach_port_move_receive_t;
out				jobs		: pointer_t, dealloc;
out				ports		: mach_port_move_send_array_t, dealloc
);

routine
getsocket(
				j			: job_t;
out				sockpath	: name_t
);

skip; /* Formerly spawn. */

skip; /* Formerly wait. */

skip; /* Formerly uncork_fork. */

routine
swap_integer(
				j			: job_t;
				inkey		: vproc_gsk_t;
				outkey		: vproc_gsk_t;
				inval		: int64_t;
out				outval		: int64_t
);

routine
log(
				j			: job_t;
				pri			: integer_t;
				err			: integer_t;
				message		: logmsg_t
);

routine
lookup_per_user_context(
				j			: job_t;
				uid			: uid_t;
out				userbport	: mach_port_t
);

routine
move_subset(
				j			: job_t;
				targetport	: mach_port_t;
				session		: name_t;
				asport		: mach_port_t;
				flags		: uint64_t
);

routine
swap_complex(
				j			: job_t;
				inkey		: vproc_gsk_t;
				outkey		: vproc_gsk_t;
				inval		: pointer_t;
out				outval		: pointer_t, dealloc
);

routine
log_drain(
				j			: job_t;
sreplyport		rp			: mach_port_make_send_once_t;
out				outval		: pointer_t, dealloc
);

routine
log_forward(
				j			: job_t;
				inval		: pointer_t
);

routine
kickstart(
				j			: job_t;
				label		: name_t;
out				pid			: pid_t;
				flags		: natural_t
);

skip;

routine
lookup_children(
				j			: job_t;
out 			childports	: mach_port_move_send_array_t, dealloc;
out				childnames	: name_array_t, dealloc;
out				childprops	: bootstrap_property_array_t, dealloc
);

routine
switch_to_session(
				j			: job_t;
				reqport		: mach_port_t;
				session		: name_t;
				asport		: mach_port_t;
out				newbsport	: mach_port_make_send_t
);

routine
transaction_count_for_pid(
				j			: job_t;
				pid			: pid_t;
out				count		: integer_t;
out				condemned	: boolean_t
);
				
routine
pid_is_managed(
				j			: job_t;
				pid			: pid_t;
out				managed		: boolean_t
);

routine
port_for_label(
				j			: job_t;
				label		: name_t;
out				jport		: mach_port_make_send_t
);

routine
init_session(
				j			: job_t;
				session		: name_t;
				asport		: mach_port_t
);

routine
set_security_session(
				j			: job_t;
				uuid		: uuid_t;
				asport		: mach_port_t
);

skip; /* Formerly wait2. */

routine
event_source_check_in(
				j			: job_t;
				stream		: name_t;
				pingport	: mach_port_make_send_once_t;
out				events		: pointer_t, dealloc;
out				tokens		: event_token_array_t
);

routine
event_set_state(
				j			: job_t;
				stream		: name_t;
				token		: uint64_t;
				state		: boolean_t
);

routine
spawn2(
				j			: job_t;
sreplyport		rp			: mach_port_make_send_once_t;
				job			: pointer_t;
				asport		: mach_port_t;
out				outpid		: pid_t;
out				obsrvport	: mach_port_move_receive_t
);

routine
get_root_bootstrap(
				j			: job_t;
out				rootbs		: mach_port_move_send_t
);