/* Definitions for generic IO interface
   Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation

This file is part of the GNU Hurd.

The GNU Hurd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

The GNU Hurd is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the GNU Hurd; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */

subsystem io_reply 21100;  /* much mach io.defs + 100 */

/* These functions are server reply stubs for the functions in io.defs;
   all the comments there apply exactly to here. */

#include <hurd/hurd_types.defs>

#ifdef IO_IMPORTS
IO_IMPORTS
#endif

type reply_port_t = polymorphic | MACH_MSG_TYPE_MAKE_SEND_ONCE 
	ctype: mach_port_t;

simpleroutine io_write_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	amount: int);

simpleroutine io_read_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	data: data_t);

simpleroutine io_seek_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	newp: off_t);

simpleroutine io_readable_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	amount: int);

simpleroutine io_set_all_openmodes_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_get_openmodes_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	bits: int);

simpleroutine io_set_some_openmodes_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_clear_some_openmodes_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_async_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	async_id_port: mach_port_send_t);

simpleroutine io_mod_owner_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_get_owner_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	owner: pid_t);

simpleroutine io_get_icky_async_id_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	id_port: mach_port_send_t);

simpleroutine io_select_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	select_result: int;
	id_tag: int);

simpleroutine io_stat_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	stat_info: io_statbuf_t);

skip;  /* io_reauthenticate has no reply */

simpleroutine io_restrict_auth_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	new_object: mach_port_send_t);

simpleroutine io_duplicate_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	newport: mach_port_send_t);

simpleroutine io_map_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	rdobject: mach_port_send_t;
	wrobject: mach_port_send_t);

simpleroutine io_map_cntl_reply (
	reply: reply_port_t;
	return_code: kern_return_t;
	memobj: mach_port_send_t);

simpleroutine io_get_conch_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_release_conch_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_eofnotify_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_prenotify_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_postnotify_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_readnotify_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_readsleep_reply (
	reply: reply_port_t;
	return_code: kern_return_t);

simpleroutine io_sigio_reply (
	reply: reply_port_t;
	return_code: kern_return_t);