/* Interface definitions for the exec servers. Copyright (C) 1991, 1992, 1993, 1994 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. */ /* Written by Michael I. Bushnell and Roland McGrath. */ subsystem exec 30000; #include routine exec_exec ( /* Better name, Roland?? No, it doesn't seem likely. */ execserver: mach_port_t; file: mach_port_send_t; oldtask: task_t; flags: int; argv: data_t, servercopy; envp: data_t, servercopy; dtable: portarray_t, servercopy; portarray: portarray_t, servercopy; intarray: intarray_t, servercopy; deallocnames: mach_port_name_array_t; destroynames: mach_port_name_array_t); /* This call is made by a new task to its bootstrap port to get its startup ports and information. */ routine exec_startup ( execserver: mach_port_t; /* These are the base address and size of the initial stack allocated by the exec server. The rest of the information is that passed by exec_exec. */ out stack_base: vm_address_t; out stack_size: vm_size_t; out flags: int; out argv: data_t, dealloc; out envp: data_t, dealloc; out dtable: portarray_t, dealloc; out portarray: portarray_t, dealloc; out intarray: intarray_t, dealloc); /* This call is made by the bootstrapping filesystem to give the execserver its auth handle. */ routine exec_init ( execserver: mach_port_t; auth_handle: auth_t; proc_server: mach_port_send_t); simpleroutine exec_setexecdata ( execserver: mach_port_t; ports: portarray_t, servercopy; ints: intarray_t, servercopy);