(linenum→info "unix/slp.c:2238")

glibc/2.7/hurd/hurdstartup.h

    1: /* Data from initial program startup for running under the GNU Hurd.
    2:    Copyright (C) 1995,97,2002 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #ifndef _HURDSTARTUP_H
   21: #define _HURDSTARTUP_H 1
   22: 
   23: # include <stdint.h>
   24: 
   25: /* Interesting data saved from the exec_startup reply.
   26:    The DATA argument to *MAIN (see below) points to:
   27: 
   28:     int argc;
   29:     char *argv[argc];
   30:     char *argv_terminator = NULL;
   31:     char *envp[?];
   32:     char *envp_terminator = NULL;
   33:     struct hurd_startup_data data;
   34: 
   35: */
   36: 
   37: struct hurd_startup_data
   38:   {
   39:     int flags;
   40:     mach_port_t *dtable;
   41:     mach_msg_type_number_t dtablesize;
   42:     mach_port_t *portarray;
   43:     mach_msg_type_number_t portarraysize;
   44:     int *intarray;
   45:     mach_msg_type_number_t intarraysize;
   46:     vm_address_t stack_base;
   47:     vm_size_t stack_size;
   48:     vm_address_t phdr;
   49:     vm_size_t phdrsz;
   50:     vm_address_t user_entry;
   51:   };
   52: 
   53: 
   54: /* Initialize Mach RPCs; do initial handshake with the exec server (or
   55:    extract the arguments from the stack in the case of the bootstrap task);
   56:    finally, call *MAIN with the information gleaned.  That function is not
   57:    expected to return.  ARGPTR should be the address of the first argument
   58:    of the entry point function that is called with the stack exactly as the
   59:    exec server or kernel sets it.  */
   60: 
   61: extern void _hurd_startup (void **argptr, void (*main) (intptr_t *data));
   62: 
   63: 
   64: #endif  /* hurdstartup.h */
Syntax (Markdown)