From d12f572aea610242406e0412cc28cdb426608b30 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Sat, 30 Oct 1993 01:46:03 +0000 Subject: Initial revision --- hurd/hurd_types.h | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 hurd/hurd_types.h (limited to 'hurd') diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h new file mode 100644 index 00000000..84b1e4b7 --- /dev/null +++ b/hurd/hurd_types.h @@ -0,0 +1,204 @@ +/* C declarations for Hurd server interfaces + Copyright (C) 1993 Free Software Foundation, Inc. + +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. */ + +#ifndef _HURD_TYPES_H +#define _HURD_TYPES_H + +#include /* For mach_port_t et al. */ +#include /* For pid_t and uid_t. */ + +typedef mach_port_t file_t; +typedef mach_port_t fsys_t; +typedef mach_port_t io_t; +typedef mach_port_t process_t; +typedef mach_port_t auth_t; +typedef mach_port_t socket_t; +typedef mach_port_t addr_port_t; +typedef mach_port_t startup_t; +typedef mach_port_t proccoll_t; + +typedef kern_return_t error_t; + +/* These names exist only because of MiG deficiencies. + You should not use them in C source; use the normal C types instead. */ +typedef char *data_t; +typedef char string_t [1024]; +typedef int *intarray_t; +typedef int *fd_mask_t; +typedef mach_port_t *portarray_t; +typedef pid_t *pidarray_t; +typedef uid_t *idarray_t; +typedef struct rusage rusage_t; + +#define INBAND_MAX_DATA 1024 + +typedef struct stat io_statbuf_t; + +/* stb_fstype is one of: */ +#define FSTYPE_UFS 0x00000000 /* 4.x BSD Fast File System */ +#define FSTYPE_NFS 0x00000001 /* Network File System ala Sun */ +#define FSTYPE_GFS 0x00000002 /* GNU file system */ +#define FSTYPE_LFS 0x00000003 /* Logging File System ala Sprite */ +#define FSTYPE_SYSV 0x00000004 /* Old U*x filesystem ala System V */ +#define FSTYPE_FTP 0x00000005 /* Transparent FTP */ +#define FSTYPE_TAR 0x00000006 /* Transparent TAR */ +#define FSTYPE_AR 0x00000007 /* Transparent AR */ +#define FSTYPE_CPIO 0x00000008 /* Transparent CPIO */ +#define FSTYPE_MSLOSS 0x00000009 /* MS-DOS */ +#define FSTYPE_CPM 0x0000000a /* CP/M */ +#define FSTYPE_HFS 0x0000000b /* Don't ask */ +#define FSTYPE_DTFS 0x0000000c /* used by desktop to provide more info */ +#define FSTYPE_GRFS 0x0000000d /* GNU Remote File System */ +#define FSTYPE_TERM 0x0000000e /* GNU Terminal driver */ +#define FSTYPE_DEV 0x0000000f /* GNU Special file server */ +#define FSTYPE_PROC 0x00000010 /* /proc filesystem ala Version 9 */ +#define FSTYPE_IFSOCK 0x00000011 /* PF_LOCAL socket naming point */ +#define FSTYPE_AFS 0x00000012 /* Andrew File System 3.xx */ +#define FSTYPE_DFS 0x00000013 /* Distributed File Sys (OSF) == AFS 4.xx */ +#define FSTYPE_PROC9 0x00000014 /* /proc filesystem ala Plan 9 */ + +/* Bits for flags in file_exec and exec_* calls are as follows: */ +#define EXEC_NEWTASK 0x00000001 /* create new task; kill old one */ +#define EXEC_SECURE 0x00000002 /* use secure values of portarray, etc. */ +#define EXEC_DEFAULTS 0x00000004 /* Use defaults for unspecified ports */ + +/* Standard port assignments for file_exec and exec_* */ +enum + { + INIT_PORT_CWDIR, + INIT_PORT_CRDIR, + INIT_PORT_AUTH, + INIT_PORT_PROC, + INIT_PORT_LOGINCOLL, + INIT_PORT_CTTYID, + /* If MACH_PORT_NULL is given for the bootstrap port, + the bootstrap port of the old task is used. */ + INIT_PORT_BOOTSTRAP, + INIT_PORT_MAX + }; + +/* Standard ints for file_exec and exec_* */ +enum + { + INIT_UMASK, + INIT_SIGMASK, + INIT_SIGIGN, + INIT_SIGPENDING, + INIT_INT_MAX, + }; + +/* Bits for flags in dir_pathtrans call are as follows: */ +#define FS_LOOKUP_READ 0x00000001 /* return read-validated port */ +#define FS_LOOKUP_WRITE 0x00000002 /* return write-validated port */ +#define FS_LOOKUP_EXEC 0x00000004 /* return exec-validated port */ +#define FS_LOOKUP_NDELAY 0x00000008 /* don't delay open */ +#define FS_LOOKUP_NOATIME 0x00000010 /* don't set atime (root/owner only) */ +#define FS_LOOKUP_CREATE 0x00000020 /* create if nonexistent */ +#define FS_LOOKUP_TRUNCATE 0x00000040 /* truncate atomically */ +#define FS_LOOKUP_EXCL 0x00000080 /* error if exists and CREATE */ +#define FS_LOOKUP_NOLINK 0x00000100 /* no name mappings on last name */ +#define FS_LOOKUP_NOTRANS 0x00000200 /* No translator on last name. */ + +/* Bits for flags in file_set_translator call are as follows: */ +#define FS_TRANS_FORCE 0x00000001 /* must use translator(no sht circuit) */ +#define FS_TRANS_EXCL 0x00000002 /* don't do it if already translated */ + +/* Values for retry field in dir_pathtrans */ +enum retry_type +{ + FS_RETRY_NONE, /* no retry necessary */ + FS_RETRY_NORMAL, /* retry normally */ + FS_RETRY_REAUTH, /* retry after reauthenticating retry port */ + FS_RETRY_MAGICAL, /* retry string is magical */ + /* "tty" means controlling tty; + "fd%u" means file descriptor N; + */ +}; +typedef enum retry_type retry_type; + +/* Select types for io_select */ +#define SELECT_READ 0x00000001 +#define SELECT_WRITE 0x00000002 +#define SELECT_URG 0x00000004 + +/* Flags for fsys_goaway and file_set_translator */ +#define FSYS_GOAWAY_NOWAIT 0x00000001 /* Return immediately */ +#define FSYS_GOAWAY_NOSYNC 0x00000002 /* Don't update physical media */ +#define FSYS_GOAWAY_FORCE 0x00000004 /* Go away despite current users */ +#define FSYS_GOAWAY_UNLINK 0x00000008 /* Go away only if non-dir */ + +/* This structure is known to be 19 ints long in hurd_types.defs */ +struct fsys_statfsbuf +{ + long fsys_stb_type; + long fsys_stb_bsize; + long fsys_stb_fsize; + long fsys_stb_blocks; + long fsys_stb_bfree; + long fsys_stb_bavail; + long fsys_stb_files; + long fsys_stb_ffree; + long fsys_stb_fsid_1; + long fsys_stb_fsid_2; + long fsys_stb_spare[9]; +}; +typedef struct fsys_statfsbuf fsys_statfsbuf_t; + +/* Possible types of version info for proc_version. */ +enum verstype +{ + SYSNAME, + RELEASE, + VERSION, + MACHINE, +}; + +struct procinfo +{ + int state; + uid_t owner; + pid_t ppid; + pid_t pgrp; + pid_t session; + + int nthreads; /* size of pi_threadinfos */ + + struct task_basic_info taskinfo; + struct + { + struct thread_basic_info pis_bi; + struct thread_sched_info pis_si; + } threadinfos[0]; +}; +typedef int *procinfo_t; + +/* Bits in state: */ +#define PI_STOPPED 0x00000001 /* Proc server thinks is stopped */ +#define PI_EXECED 0x00000002 /* Has called proc_exec */ +#define PI_ORPHAN 0x00000008 /* Process group is orphaned */ +#define PI_SESSLD 0x00000020 /* Session leader */ +#define PI_NOREG 0x00000040 /* Hasn't been registered */ +#define PI_NOPARENT 0x0000080 /* Hasn't identified a parent */ + +/* Types of ports the terminal driver can run on top of. */ +#define TERM_ON_MACHDEV 1 +#define TERM_ON_HURDIO 2 +#define TERM_ON_MASTERPTY 3 + +#endif -- cgit v1.2.3