mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-09 04:45:23 +01:00
Add mes and mescc-tools-extra
mescc-tools-extra contains two important tools: - cp - chmod mes first builds itself from a mes 0.21 seed as used by guix, and then builds a mes 0.22 and then mes 0.22 using that created mes 0.22. It does /not/ use bootstrap.sh as we don't have a proper shell at this point, it has been manually adapted for kaem.
This commit is contained in:
parent
2706e07556
commit
649d7b68dc
1029 changed files with 120985 additions and 18 deletions
393
sysa/mes-0.22/include/gnu/hurd-types.h
Normal file
393
sysa/mes-0.22/include/gnu/hurd-types.h
Normal file
|
|
@ -0,0 +1,393 @@
|
|||
/* C declarations for Hurd server interfaces
|
||||
Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002,
|
||||
2010 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
|
||||
|
||||
#ifndef _FILE_OFFSET_BITS
|
||||
#define _FILE_OFFSET_BITS 32
|
||||
#endif
|
||||
|
||||
#include <time.h> /* For struct timespec. */
|
||||
#include <mach/std_types.h> /* For mach_port_t et al. */
|
||||
#include <mach/message.h> /* For mach_msg_id_t et al. */
|
||||
#include <sys/types.h> /* For pid_t and uid_t. */
|
||||
|
||||
/* A string identifying this release of the GNU Hurd. Our
|
||||
interpretation of the term "release" is that it refers to a set of
|
||||
server interface definitions. A "version" in Posix terminology is
|
||||
a distribution of the Hurd; there may be more than one distribution
|
||||
without changing the release number. */
|
||||
#define HURD_RELEASE "0.0"
|
||||
|
||||
|
||||
/* Simple type declarations */
|
||||
|
||||
/* These types identify certain kinds of ports used by the Hurd. */
|
||||
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 pf_t; /* Protocol family */
|
||||
typedef mach_port_t addr_port_t;
|
||||
typedef mach_port_t startup_t;
|
||||
typedef mach_port_t fs_notify_t;
|
||||
typedef mach_port_t exec_startup_t;
|
||||
typedef mach_port_t interrupt_t;
|
||||
typedef mach_port_t proccoll_t;
|
||||
typedef mach_port_t ctty_t;
|
||||
|
||||
#include <errno.h> /* Defines `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 const char *const_data_t;
|
||||
typedef char string_t [1024];
|
||||
typedef int *intarray_t;
|
||||
typedef const int *const_intarray_t;
|
||||
typedef int *fd_mask_t;
|
||||
typedef const int *const_fd_mask_t;
|
||||
typedef mach_port_t *portarray_t;
|
||||
typedef const mach_port_t *const_portarray_t;
|
||||
typedef pid_t *pidarray_t;
|
||||
typedef const pid_t *const_pidarray_t;
|
||||
typedef uid_t *idarray_t;
|
||||
typedef const uid_t *const_idarray_t;
|
||||
#if 0
|
||||
typedef __loff_t *off_array_t;
|
||||
typedef const __loff_t *const_off_array_t;
|
||||
#endif
|
||||
typedef struct rusage rusage_t;
|
||||
typedef struct flock flock_t;
|
||||
typedef struct utsname utsname_t;
|
||||
#if _FILE_OFFSET_BITS == 64
|
||||
typedef struct stat io_statbuf_t;
|
||||
typedef struct statfs fsys_statfsbuf_t;
|
||||
#else
|
||||
typedef struct stat64 io_statbuf_t;
|
||||
typedef struct statfs64 fsys_statfsbuf_t;
|
||||
#endif
|
||||
typedef struct timespec timespec_t;
|
||||
|
||||
|
||||
/* Parameters and flags in RPC calls */
|
||||
|
||||
/* Many such parameters and flags are also defined in various libc
|
||||
headers. */
|
||||
|
||||
/* Bits for flags in fs.defs:file_exec_paths and exec.defs:exec_* calls: */
|
||||
#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. */
|
||||
#define EXEC_SIGTRAP 0x00000008 /* Simulate SIGTRAP on startup. */
|
||||
/* This flag is passed through by the exec server but not examined by it. */
|
||||
#define EXEC_STACK_ARGS 0x00000010 /* Use arguments from stack, not RPC. */
|
||||
|
||||
/* Bits for flags in fs.defs:file_set_translator call: */
|
||||
#define FS_TRANS_FORCE 0x00000001 /* Must use translator(no sht circuit) */
|
||||
#define FS_TRANS_EXCL 0x00000002 /* Don't do it if already translated. */
|
||||
#define FS_TRANS_SET 0x00000004 /* Set or clear translator */
|
||||
#define FS_TRANS_ORPHAN 0x00000008 /* Orphan the active translator. */
|
||||
|
||||
/* Values for retry field in fs.defs:dir_lookup call: */
|
||||
enum retry_type
|
||||
{
|
||||
FS_RETRY_NORMAL = 1, /* Retry normally if retry_name is not null. */
|
||||
FS_RETRY_REAUTH = 2, /* Retry after reauthenticating retry port.
|
||||
Even if the retry name is null, a retry
|
||||
is still necessary with this code after the
|
||||
reauthentication is complete. */
|
||||
FS_RETRY_MAGICAL = 3, /* Retry string is magical. */
|
||||
/* "tty" means controlling tty;
|
||||
|
||||
"fd/%u" means file descriptor N;
|
||||
|
||||
"machtype/..." means replace `machtype' with the numbers in decimal
|
||||
returned by the user's kernel as the cpu_type (N) and
|
||||
cpu_subtype (M) (producing N/M/...) and then retry
|
||||
as for FS_RETRY_NORMAL.
|
||||
|
||||
"/..." means retry "...", but starting from the users root directory.
|
||||
|
||||
"pid/..." means replace `pid' with the PID of the current process in %u
|
||||
format and then retry as for FS_RETRY_NORMAL.
|
||||
*/
|
||||
};
|
||||
typedef enum retry_type retry_type;
|
||||
|
||||
/* Types for fs_notify.defs:dir_changed call: */
|
||||
enum dir_changed_type
|
||||
{
|
||||
DIR_CHANGED_NULL, /* Always sent first for sync. */
|
||||
DIR_CHANGED_NEW, /* Specified name has been added. */
|
||||
DIR_CHANGED_UNLINK, /* Specified name has been removed. */
|
||||
DIR_CHANGED_RENUMBER, /* Name has been the target of rename. */
|
||||
};
|
||||
typedef enum dir_changed_type dir_changed_type_t;
|
||||
|
||||
/* Types for fs_notify.defs:file_changed call: */
|
||||
enum file_changed_type
|
||||
{
|
||||
FILE_CHANGED_NULL, /* Always sent first for sync. */
|
||||
FILE_CHANGED_WRITE, /* File data has been written. */
|
||||
FILE_CHANGED_EXTEND, /* File has grown. */
|
||||
FILE_CHANGED_TRUNCATE, /* File has been truncated. */
|
||||
FILE_CHANGED_META, /* Stat information has changed, and none
|
||||
of the previous three apply. Not sent
|
||||
for changes in node times. */
|
||||
};
|
||||
typedef enum file_changed_type file_changed_type_t;
|
||||
|
||||
/* Select types for io.defs:io_select call: */
|
||||
#define SELECT_READ 0x00000001
|
||||
#define SELECT_WRITE 0x00000002
|
||||
#define SELECT_URG 0x00000004
|
||||
|
||||
/* Flags for fsys.defs:fsys_goaway. Also, these flags are sent as the
|
||||
oldtrans_flags in fs.defs:file_set_translator to describe how to
|
||||
terminate the old 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-directory. */
|
||||
#define FSYS_GOAWAY_RECURSE 0x00000010 /* Shutdown children too. */
|
||||
|
||||
/* Types of ports the terminal driver can run on top of;
|
||||
used in term.defs:term_get_bottom_type. */
|
||||
enum term_bottom_type
|
||||
{
|
||||
TERM_ON_MACHDEV,
|
||||
TERM_ON_HURDIO,
|
||||
TERM_ON_MASTERPTY,
|
||||
};
|
||||
|
||||
/* Types of storage, as returned by file_get_storage_info.
|
||||
|
||||
STORAGE_DEVICE is a mach device_t (for random access devices)
|
||||
STORAGE_HURD_FILE is a hurd file_t (as if a file were mapped)
|
||||
STORAGE_TASK is a task_t (the storage is in the vm of the task)
|
||||
STORAGE_MEMORY is a memory object port
|
||||
STORAGE_ZERO is a fixed-size constant source of zeros
|
||||
STORAGE_INTERLEAVE is a set of other storage types interleaved at a fixed
|
||||
interval
|
||||
STORAGE_CONCAT is a set of other storage types concatenated end-to-end
|
||||
STORAGE_LAYER is a set of storage types, representing the same address
|
||||
range; all will be written too, and will be read in turn until one
|
||||
succeeds
|
||||
STORAGE_REMAP is a layer on top of another store that remaps its blocks
|
||||
STORAGE_COPY is a memory snapshot of another store
|
||||
STORAGE_NETWORK means that the file is stored elsewhere on the
|
||||
network; all the remaining fields contan type-specific information.
|
||||
STORAGE_OTHER means none of these apply; and should be used when no
|
||||
meaningful answer can be given
|
||||
|
||||
The vectors returned by file_get_storage_info encode each of the above
|
||||
(note that the first int is always the storage type). There are four:
|
||||
ports, ints, offsets (off_t), and data (char); each type of store uses the
|
||||
following entries in each vector:
|
||||
|
||||
-type- -ports- -ints- -offsets- -data- -kids-
|
||||
device DEVICE TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML -
|
||||
file FILE TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML -
|
||||
memory MEMOBJ TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML -
|
||||
task TASK TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML -
|
||||
(the data for the above is a name (incl '\0') and a misc data block)
|
||||
null - TY, FL SIZE - -
|
||||
(BS is 1)
|
||||
ileave - TY, FL, IL, NC - - NC
|
||||
(BS is the LCM of its children; SIZE is the minimum of theirs * IL)
|
||||
concat - TY, FL, NC - - NC
|
||||
(BS is the LCM of its children; SIZE is the sum of theirs)
|
||||
layer - TY, FL, NC - - NC
|
||||
(BS is the LCM of its children; SIZE is the minimum of theirs)
|
||||
remap - TY, FL, NR NR * (OFFS, LEN) - 1
|
||||
(BS and SIZE are that of the child)
|
||||
copy - TY, FL, SIZE - DATA -
|
||||
(DATA is preceded by padding to the next page boundary, and is
|
||||
SIZE bytes long itself)
|
||||
|
||||
For ileave, concat, and layer, the children are encoded following the parent.
|
||||
The first int must always be TY.
|
||||
|
||||
key: TY = type code, FL = flags, BS = block size, NR = num runs,
|
||||
NL = name len, ML = misc len, NC = num children,
|
||||
IL = interleave (bytes), SIZE = Size of storage (blocks),
|
||||
LEN = run length (blocks), OFFS = run offset (blocks),
|
||||
|
||||
The NR * (OFFS, LEN) offsets for some of the types is the set of block
|
||||
ranges in the underlying address space that, concatenated, make up the
|
||||
contents of the storage -- for instance, doing file_get_storage_info on a
|
||||
file may return storage of type STORAGE_DEVICE, and the accompanying block
|
||||
ranges are the set of blocks on the given device that correspond to that
|
||||
file. Any OFFS == -1 designates a hole in the address range. Note that
|
||||
the total size (SIZE) for these types is the sum of their LEN's.
|
||||
|
||||
The optional NAME returned by some types (if NL != 0) is a type specific
|
||||
name for the same object referenced by the port also returned. E.g.:
|
||||
device -- The mach device name
|
||||
file -- The file name (unreliable, as the root may not be the same)
|
||||
task -- The pid
|
||||
Unless it is MACH_PORT_NULL, the port should generally be used instead of
|
||||
trying to regenerate it from the associated name, which is intended more for
|
||||
printing messages, etc. */
|
||||
enum file_storage_class
|
||||
{
|
||||
STORAGE_OTHER,
|
||||
STORAGE_DEVICE,
|
||||
STORAGE_HURD_FILE,
|
||||
STORAGE_NETWORK,
|
||||
STORAGE_MEMORY,
|
||||
STORAGE_TASK,
|
||||
STORAGE_ZERO,
|
||||
STORAGE_CONCAT,
|
||||
STORAGE_INTERLEAVE,
|
||||
STORAGE_LAYER,
|
||||
STORAGE_REMAP,
|
||||
STORAGE_COPY,
|
||||
};
|
||||
|
||||
/* Flags for the flags word returned by some types . */
|
||||
#define STORAGE_MUTATED 0x00000001 /* data as stored is munged from file */
|
||||
|
||||
/* Data types */
|
||||
|
||||
#include <mach/task_info.h>
|
||||
#include <mach/thread_info.h>
|
||||
#ifndef THREAD_SCHED_INFO
|
||||
#include <mach/policy.h>
|
||||
#endif
|
||||
|
||||
/* Flags sent in proc_getprocinfo request. */
|
||||
#define PI_FETCH_TASKINFO 0x0001
|
||||
#define PI_FETCH_TASKEVENTS 0x0020
|
||||
#define PI_FETCH_THREADS 0x0002
|
||||
#define PI_FETCH_THREAD_BASIC 0x0004
|
||||
#define PI_FETCH_THREAD_SCHED 0x0008
|
||||
#define PI_FETCH_THREAD_WAITS 0x0010
|
||||
|
||||
struct procinfo
|
||||
{
|
||||
int state;
|
||||
uid_t owner;
|
||||
pid_t ppid;
|
||||
pid_t pgrp;
|
||||
pid_t session;
|
||||
pid_t logincollection;
|
||||
int exitstatus;
|
||||
int sigcode;
|
||||
|
||||
int nthreads; /* size of pi_threadinfos */
|
||||
|
||||
struct task_basic_info taskinfo;
|
||||
struct task_events_info taskevents;
|
||||
#ifdef TASK_SCHED_TIMESHARE_INFO
|
||||
struct policy_timeshare_base timeshare_base_info;
|
||||
#endif
|
||||
struct
|
||||
{
|
||||
int died; /* this thread died in the middle of call */
|
||||
mach_msg_id_t rpc_block; /* thread is blocked on this RPC */
|
||||
struct thread_basic_info pis_bi;
|
||||
#ifdef THREAD_SCHED_INFO
|
||||
struct thread_sched_info pis_si;
|
||||
#else
|
||||
struct policy_infos pis_pi;
|
||||
#endif
|
||||
} threadinfos[0];
|
||||
};
|
||||
typedef int *procinfo_t;
|
||||
typedef const int *const_procinfo_t;
|
||||
|
||||
/* Bits in struct procinfo state: */
|
||||
#define PI_STOPPED 0x00000001 /* Proc server thinks is stopped. */
|
||||
#define PI_EXECED 0x00000002 /* Has called proc_exec. */
|
||||
#define PI_WAITING 0x00000004 /* Process is waiting for child to exit */
|
||||
#define PI_ORPHAN 0x00000008 /* Process group is orphaned. */
|
||||
#define PI_NOMSG 0x00000010 /* Process has no message port. */
|
||||
#define PI_SESSLD 0x00000020 /* Session leader. */
|
||||
#define PI_NOTOWNED 0x0000040 /* Process has no owner. */
|
||||
#define PI_NOPARENT 0x0000080 /* Hasn't identified a parent. */
|
||||
#define PI_ZOMBIE 0x00000100 /* Has no associated task. */
|
||||
#define PI_TRACED 0x00000200 /* Process is being traced */
|
||||
#define PI_GETMSG 0x00000400 /* Process is blocked in proc_getmsgport. */
|
||||
#define PI_LOGINLD 0x00000800 /* Process is leader of login collection */
|
||||
|
||||
|
||||
/* Conventions */
|
||||
|
||||
|
||||
/* st_fstype in struct stat and fsys_stb_type in fsys_statfsbuf 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 */
|
||||
#define FSTYPE_SOCKET 0x00000015 /* io_t that isn't a file but a socket */
|
||||
#define FSTYPE_MISC 0x00000016 /* generic trivfs server */
|
||||
#define FSTYPE_EXT2FS 0x00000017 /* Linux filesystem by Remy Card */
|
||||
#define FSTYPE_HTTP 0x00000018 /* Transparent HTTP */
|
||||
#define FSTYPE_MEMFS 0x00000019 /* In-core filesystem */
|
||||
#define FSTYPE_ISO9660 0x0000001a /* ISO9660 */
|
||||
|
||||
/* Standard port assignments for file_exec_paths and exec_* */
|
||||
enum
|
||||
{
|
||||
INIT_PORT_CWDIR,
|
||||
INIT_PORT_CRDIR,
|
||||
INIT_PORT_AUTH,
|
||||
INIT_PORT_PROC,
|
||||
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_paths and exec_* */
|
||||
enum
|
||||
{
|
||||
INIT_UMASK,
|
||||
INIT_SIGMASK,
|
||||
INIT_SIGIGN,
|
||||
INIT_SIGPENDING,
|
||||
INIT_TRACEMASK,
|
||||
INIT_INT_MAX,
|
||||
};
|
||||
|
||||
#endif // _HURD_TYPES_H
|
||||
84
sysa/mes-0.22/include/gnu/hurd.h
Normal file
84
sysa/mes-0.22/include/gnu/hurd.h
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* GNU Mes --- Maxwell Equations of Software
|
||||
* Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
*
|
||||
* This file is part of GNU Mes.
|
||||
*
|
||||
* GNU Mes 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 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* GNU Mes 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MES_GNU_HURD_H
|
||||
#define __MES_GNU_HURD_H
|
||||
|
||||
#define _GNU_SOURCE 1
|
||||
#define __USE_GNU 1
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
#ifndef _LOFF_T
|
||||
#define _LOFF_T
|
||||
typedef off64_t loff_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <mach/mach_types.h>
|
||||
#include <mach/message.h>
|
||||
#include <mach/port.h>
|
||||
|
||||
struct hurd_startup_data
|
||||
{
|
||||
int flags;
|
||||
|
||||
mach_port_t *dtable;
|
||||
mach_msg_type_number_t dtable_count;
|
||||
|
||||
char *argp;
|
||||
int arg_size;
|
||||
|
||||
char *envp;
|
||||
int env_size;
|
||||
|
||||
mach_port_t *portarray;
|
||||
mach_msg_type_number_t portarray_count;
|
||||
|
||||
int *intarray;
|
||||
mach_msg_type_number_t intarray_count;
|
||||
|
||||
vm_address_t stack_base;
|
||||
vm_size_t stack_count;
|
||||
|
||||
vm_address_t phdr;
|
||||
vm_size_t phdr_count;
|
||||
|
||||
vm_address_t user_entry;
|
||||
};
|
||||
|
||||
#define _HURD_DTABLE_MAX 1024
|
||||
extern mach_port_t _hurd_dtable[_HURD_DTABLE_MAX];
|
||||
extern int _hurd_dtable_count;
|
||||
extern struct hurd_startup_data _hurd_startup_data;
|
||||
|
||||
#define _HURD_ARGV_MAX 1000
|
||||
#define _HURD_ENVV_MAX 1000
|
||||
extern size_t __argc;
|
||||
extern char *__argv[_HURD_ARGV_MAX];
|
||||
extern char *__envv[_HURD_ENVV_MAX];
|
||||
|
||||
mach_port_t fd_get (int filedes);
|
||||
error_t fd_write (mach_port_t port, void const *buffer, size_t *size, loff_t offset);
|
||||
error_t fd_read (mach_port_t port, void *buffer, size_t *size, loff_t offset);
|
||||
|
||||
#endif // __MES_GNU_HURD_H
|
||||
144
sysa/mes-0.22/include/gnu/syscall.h
Normal file
144
sysa/mes-0.22/include/gnu/syscall.h
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
/* -*-comment-start: "//";comment-end:""-*-
|
||||
* GNU Mes --- Maxwell Equations of Software
|
||||
* Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
*
|
||||
* This file is part of GNU Mes.
|
||||
*
|
||||
* GNU Mes 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 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* GNU Mes 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MES_GNU_SYSCALL_H
|
||||
#define __MES_GNU_SYSCALL_H
|
||||
|
||||
#define _GNU_SOURCE 1
|
||||
#define __USE_GNU 1
|
||||
|
||||
#include <mach/mach_types.h>
|
||||
#include <mach/port.h>
|
||||
#include <mach/message.h>
|
||||
#include <gnu/hurd.h>
|
||||
#include <gnu/hurd-types.h>
|
||||
|
||||
// mach/mach.defs
|
||||
enum
|
||||
{
|
||||
SYS__task_terminate = 2008,
|
||||
SYS__vm_allocate = 2021,
|
||||
SYS__vm_statistics = 2030,
|
||||
SYS__task_get_special_port = 2058,
|
||||
};
|
||||
|
||||
// hurd/fsys.defs
|
||||
enum
|
||||
{
|
||||
SYS__dir_lookup = 20018,
|
||||
};
|
||||
|
||||
// hurd/io.defs
|
||||
enum
|
||||
{
|
||||
SYS__io_write = 21000,
|
||||
SYS__io_read,
|
||||
};
|
||||
|
||||
// hurd/process.defs
|
||||
enum
|
||||
{
|
||||
SYS__proc_mark_exit = 24025,
|
||||
};
|
||||
|
||||
// hurd/startup.defs
|
||||
enum
|
||||
{
|
||||
SYS__exec_startup_get_info = 30500,
|
||||
};
|
||||
|
||||
extern mach_msg_type_t mach_msg_type_int32;
|
||||
extern mach_msg_type_t mach_msg_type_int64;
|
||||
extern mach_msg_type_long_t mach_msg_type_pointer;
|
||||
|
||||
struct mach_msg
|
||||
{
|
||||
mach_msg_header_t header;
|
||||
};
|
||||
|
||||
struct mach_msg_1
|
||||
{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_type_t type_one; int one;
|
||||
};
|
||||
|
||||
struct mach_msg_2
|
||||
{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_type_t type_one; int one;
|
||||
mach_msg_type_t type_two; int two;
|
||||
};
|
||||
|
||||
struct mach_msg_loff_int
|
||||
{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_type_t type_one; loff_t one;
|
||||
mach_msg_type_t type_two; int two;
|
||||
};
|
||||
|
||||
struct mach_msg_startup_info
|
||||
{
|
||||
mach_msg_header_t header;
|
||||
mach_msg_type_t RetCodeType;
|
||||
kern_return_t RetCode;
|
||||
mach_msg_type_t user_entryType;
|
||||
vm_address_t user_entry;
|
||||
mach_msg_type_t phdrType;
|
||||
vm_address_t phdr;
|
||||
mach_msg_type_t phdr_sizeType;
|
||||
vm_size_t phdr_size;
|
||||
mach_msg_type_t stack_baseType;
|
||||
vm_address_t stack_base;
|
||||
mach_msg_type_t stack_sizeType;
|
||||
vm_size_t stack_size;
|
||||
mach_msg_type_t flagsType;
|
||||
int flags;
|
||||
mach_msg_type_long_t argvType;
|
||||
char *argv;
|
||||
mach_msg_type_long_t envpType;
|
||||
char *envp;
|
||||
mach_msg_type_long_t dtableType;
|
||||
mach_port_t *dtable;
|
||||
mach_msg_type_long_t portarrayType;
|
||||
mach_port_t *portarray;
|
||||
mach_msg_type_long_t intarrayType;
|
||||
int *intarray;
|
||||
};
|
||||
|
||||
kern_return_t __syscall (mach_port_t port, int sys_call);
|
||||
kern_return_t __syscall2 (mach_port_t port, int sys_call, int one, int two);
|
||||
kern_return_t __syscall_get (mach_port_t port, int sys_call, mach_msg_header_t *message, size_t size);
|
||||
kern_return_t __syscall_put (mach_port_t port, int sys_call, mach_msg_header_t *message, size_t size);
|
||||
|
||||
// mach.defs
|
||||
kern_return_t __task_terminate (mach_port_t task);
|
||||
kern_return_t __task_get_special_port (mach_port_t task, int which, mach_port_t *port);
|
||||
kern_return_t __vm_allocate (mach_port_t task, vm_address_t *address, vm_size_t size, boolean_t anywhere);
|
||||
kern_return_t __vm_statistics (mach_port_t task, vm_statistics_data_t *vm_stats);
|
||||
|
||||
// process.defs
|
||||
kern_return_t __proc_mark_exit (mach_port_t process, int one, int two);
|
||||
kern_return_t __exec_startup_get_data (mach_port_t bootstrap, struct hurd_startup_data *data);
|
||||
|
||||
// io.c
|
||||
kern_return_t __io_write (io_t io_object, data_t data, mach_msg_type_number_t size, loff_t offset, vm_size_t *wrote);
|
||||
kern_return_t __io_read (io_t io, data_t *data, mach_msg_type_number_t *read, loff_t offset, vm_size_t size);
|
||||
|
||||
#endif // __MES_GNU_SYSCALL_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue