protocol_job.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 "libvproc_public.h";
import "libvproc_private.h";
import "libvproc_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_in(
			__bs_port	: job_t;
			__service_name	: name_t;
		out	__service_port	: mach_port_move_receive_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;
		__service_name	: name_t;
	out	__service_port	: mach_port_send_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;
	out	__parent_port	: mach_port_send_t);

routine post_fork_ping(
		__bs_port	: job_t;
		__task_port	: task_t);

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 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;
	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 set_service_policy(
		__bs_port	: job_t;
		__target_pid	: pid_t;
		__flags		: uint64_t;
		__service	: name_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);

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);