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