]> Zhao Yanbai Git Server - minix.git/commitdiff
- VM_KERN_NOPAGEZERO feature is gone
authorBen Gras <ben@minix3.org>
Mon, 21 Sep 2009 14:23:10 +0000 (14:23 +0000)
committerBen Gras <ben@minix3.org>
Mon, 21 Sep 2009 14:23:10 +0000 (14:23 +0000)
- sys_getbiosbuffer feature is gone (from kernel; available from vm)
- bump version number because munmap() calls that newly compiled binaries
  will do trigger an ugly (but harmless) error message in older VM's
- some new VM calls and flags, the new IPC calls
- some new CR0 register bits
- added files for shared memory

25 files changed:
include/Makefile
include/errno.h
include/minix/callnr.h
include/minix/com.h
include/minix/config.h
include/minix/const.h
include/minix/crtso.h [new file with mode: 0755]
include/minix/debug.h [new file with mode: 0644]
include/minix/ds.h
include/minix/minlib.h
include/minix/rs.h
include/minix/syslib.h
include/minix/type.h
include/minix/vm.h
include/netinet/in.h
include/sys/ipc.h [new file with mode: 0644]
include/sys/mman.h
include/sys/sem.h [new file with mode: 0644]
include/sys/shm.h [new file with mode: 0644]
include/sys/signal.h [new file with mode: 0644]
include/sys/timeb.h [new file with mode: 0644]
include/sys/types.h
include/sys/vm_i386.h
include/syslog.h
include/unistd.h

index 5f71fc981755869e660483a45617c2dfded64e68..7ee12e6383fa1985f3ae82ed98f69a30fa6e786f 100644 (file)
@@ -8,11 +8,11 @@ all::
 clean::
 
 install::
-       -rm -rf $(INC)
-       mkdir -p $(INC)
-       cpdir . $(INC)
-       @chown -R bin $(INC)
-       @rm -f $(INC)/Makefile
+       #-rm -rf $(INC)
+       #mkdir -p $(INC)
+       #cpdir . $(INC)
+       #@chown -R bin $(INC)
+       #@rm -f $(INC)/Makefile
 
 gcc: install
        SHELL=/bin/sh; if [ -f $(MKHEADERS343) ] ; then sh -e $(MKHEADERS343) ; fi
index 12fa7b967160f50df85edef1f6090f2513a69771..0339d2f48a1bdcfb4e839f8f851ef960145ba814 100755 (executable)
@@ -75,6 +75,7 @@ extern int errno;               /* place where the error numbers go */
 #define ENOTEMPTY     (_SIGN 39)  /* directory not empty */
 #define ELOOP         (_SIGN 40)  /* too many levels of symlinks detected */
 #define ERESTART      (_SIGN 41)  /* driver restarted */
+#define EIDRM         (_SIGN 43)  /* Identifier removed */
 
 /* The following errors relate to networking. */
 #define EPACKSIZE     (_SIGN 50)  /* invalid packet size for some protocol */
index 1c91cce24831efca5bd313d7429068b1f6f46c6e..c37761681dcf3ac903a3aa60b6bf7c84ebfe3221 100755 (executable)
@@ -19,7 +19,7 @@
 #define BRK              17
 #define STAT             18 
 #define LSEEK            19
-#define GETPID           20
+#define MINIX_GETPID     20
 #define MOUNT            21 
 #define UMOUNT           22 
 #define SETUID           23
index 69f2c61bbe552ce73947c49c1e5e15cf9b15dbc0..202a79968eb7225b7b9472179353bb45de461458 100755 (executable)
 #  define SYS_GETINFO    (KERNEL_CALL + 26)    /* sys_getinfo() */
 #  define SYS_ABORT      (KERNEL_CALL + 27)    /* sys_abort() */
 #  define SYS_IOPENABLE  (KERNEL_CALL + 28)    /* sys_enable_iop() */
-#  define SYS_VM_SETBUF  (KERNEL_CALL + 29)    /* sys_vm_setbuf() */
 #  define SYS_SAFECOPYFROM (KERNEL_CALL + 31)  /* sys_safecopyfrom() */
 #  define SYS_SAFECOPYTO   (KERNEL_CALL + 32)  /* sys_safecopyto() */
 #  define SYS_VSAFECOPY  (KERNEL_CALL + 33)    /* sys_vsafecopy() */
                                 * and sys_fork
                                 */
 #define PR_FORK_FLAGS  m1_i3
+#define PR_FORK_MSGADDR m1_p1
 
 /* Field names for SYS_INT86 */
 #define INT86_REG86    m1_p1   /* pointer to registers */
 #define SVMCTL_MRG_LEN         m1_i1   /* MEMREQ_GET reply: length */
 #define SVMCTL_MRG_WRITE       m1_i2   /* MEMREQ_GET reply: writeflag */
 #define SVMCTL_MRG_EP          m1_i3   /* MEMREQ_GET reply: process */
+#define SVMCTL_MRG_REQUESTOR   m1_p2   /* MEMREQ_GET reply: requestor */
 
 /* Codes and field names for SYS_SYSCTL. */
 #define SYSCTL_CODE            m1_i1   /* SYSCTL_CODE_* below */
 #define VMCTL_MEMREQ_REPLY     15
 #define VMCTL_INCSP            16
 #define VMCTL_NOPAGEZERO       18
+#define VMCTL_I386_KERNELLIMIT 19
+#define VMCTL_I386_PAGEDIRS    20
+#define VMCTL_I386_FREEPDE     23
+#define VMCTL_ENABLE_PAGING    24
+#define VMCTL_I386_INVLPG      25
+#define VMCTL_FLUSHTLB         26
 
 /* Field names for SYS_VTIMER. */
 #define VT_WHICH       m2_i1   /* which timer to set/retrieve */
                                                 * arguments are passed in 
                                                 * a struct rs_start
                                                 */
+#define RS_LOOKUP      (DS_RQ_BASE + 8)        /* lookup server name */
 
 #  define RS_CMD_ADDR          m1_p1           /* command string */
 #  define RS_CMD_LEN           m1_i1           /* length of command */
 
 #  define RS_ENDPOINT          m1_i1           /* endpoint number in reply */
 
+#  define RS_NAME              m1_p1           /* name */
+#  define RS_NAME_LEN          m1_i1           /* namelen */
+
 /*===========================================================================*
  *                Messages for the Data Store Server                        *
  *===========================================================================*/
 #      define VMVC_FD                  m1_i1
 #      define VMVC_ENDPOINT            m1_i2
 
+/* PM field names */
+/* BRK */
+#define PMBRK_ADDR                             m1_p1
+
+/* TRACE */
+#define PMTRACE_ADDR                           m2_l1
+
+#define PM_ENDPT                               m1_i1
+#define PM_PENDPT                              m1_i2
+
 /*===========================================================================*
  *                Messages for VM server                                    *
  *===========================================================================*/
 #      define VMUP_EP                  m1_i1
 #      define VMUP_VADDR               m1_p1
 
-#define VM_UNMAP               (VM_RQ_BASE+17)
+#define VM_MUNMAP              (VM_RQ_BASE+17)
 #      define VMUM_ADDR                m1_p1
 #      define VMUM_LEN                 m1_i1
 
 #      define VMAM_BYTES               m1_p1
 #      define VMAM_MEMBASE             m1_i1
 
+#define VM_MUNMAP_TEXT         (VM_RQ_BASE+19)
+
 /* Calls from VFS. */
 #      define VMV_ENDPOINT             m1_i1   /* for all VM_VFS_REPLY_* */
 #define VM_VFS_REPLY_OPEN      (VM_RQ_BASE+30)
 #define VM_VFS_REPLY_MMAP      (VM_RQ_BASE+31)
 #define VM_VFS_REPLY_CLOSE     (VM_RQ_BASE+32)
 
+#define VM_REMAP               (VM_RQ_BASE+33)
+#      define VMRE_D                   m1_i1
+#      define VMRE_S                   m1_i2
+#      define VMRE_DA                  m1_p1
+#      define VMRE_SA                  m1_p2
+#      define VMRE_RETA                m1_p3
+#      define VMRE_SIZE                m1_i3
+
+#define VM_SHM_UNMAP           (VM_RQ_BASE+34)
+#      define VMUN_ENDPT               m2_i1
+#      define VMUN_ADDR                m2_l1
+
+#define VM_GETPHYS             (VM_RQ_BASE+35)
+#      define VMPHYS_ENDPT             m2_i1
+#      define VMPHYS_ADDR              m2_l1
+#      define VMPHYS_RETA              m2_l2
+
+#define VM_GETREF              (VM_RQ_BASE+36)
+#      define VMREFCNT_ENDPT           m2_i1
+#      define VMREFCNT_ADDR            m2_l1
+#      define VMREFCNT_RETC            m2_i2
+
+#define VM_RS_SET_PRIV         (VM_RQ_BASE+37)
+#      define VM_RS_NR                 m2_i1
+#      define VM_RS_BUF                m2_l1
+
+#define VM_QUERY_EXIT          (VM_RQ_BASE+38)
+#      define VM_QUERY_RET_PT  m2_i1
+#      define VM_QUERY_IS_MORE m2_i2
+
+#define VM_NOTIFY_SIG          (VM_RQ_BASE+39)
+#      define VM_NOTIFY_SIG_ENDPOINT   m1_i1
+#      define VM_NOTIFY_SIG_IPC        m1_i2
+
+#define VM_CTL                 (VM_RQ_BASE+40)
+#define VCTL_WHAT                      m1_i1
+#define VCTL_PARAM                     m1_i2
+
+/* VCTL_PARAMs */
+#define VCTLP_STATS_MEM                        1
+#define VCTLP_STATS_EP                 2
+
 /* Total. */
-#define VM_NCALLS                              33
+#define VM_NCALLS                              41
+
+/*===========================================================================*
+ *                Messages for IPC server                                   *
+ *===========================================================================*/
+#define IPC_BASE       0xD00
+
+/* Shared Memory */
+#define IPC_SHMGET     (IPC_BASE+1)
+#      define SHMGET_KEY       m2_l1
+#      define SHMGET_SIZE      m2_l2
+#      define SHMGET_FLAG      m2_i1
+#      define SHMGET_RETID     m2_i2
+#define IPC_SHMAT      (IPC_BASE+2)
+#      define SHMAT_ID         m2_i1
+#      define SHMAT_ADDR       m2_l1
+#      define SHMAT_FLAG       m2_i2
+#      define SHMAT_RETADDR    m2_l2
+#define IPC_SHMDT      (IPC_BASE+3)
+#      define SHMDT_ADDR       m2_l1
+#define IPC_SHMCTL     (IPC_BASE+4)
+#      define SHMCTL_ID        m2_i1
+#      define SHMCTL_CMD       m2_i2
+#      define SHMCTL_BUF       m2_l1
+#      define SHMCTL_RET       m2_i3
+
+/* Semaphore */
+#define IPC_SEMGET     (IPC_BASE+5)
+#      define SEMGET_KEY       m2_l1
+#      define SEMGET_NR        m2_i1
+#      define SEMGET_FLAG      m2_i2
+#      define SEMGET_RETID     m2_i3
+#define IPC_SEMCTL     (IPC_BASE+6)
+#      define SEMCTL_ID        m2_i1
+#      define SEMCTL_NUM       m2_i2
+#      define SEMCTL_CMD       m2_i3
+#      define SEMCTL_OPT       m2_l1
+#define IPC_SEMOP      (IPC_BASE+7)
+#      define SEMOP_ID         m2_i1
+#      define SEMOP_OPS        m2_l1
+#      define SEMOP_SIZE       m2_i2
 
 #endif /* _MINIX_COM_H */ 
index c8ccdfea9dbc720f13ebe9c4e6d0bebe36052766..1b2d991b766d016e85c95e818984112159ff9095 100755 (executable)
@@ -3,7 +3,7 @@
 
 /* Minix release and version numbers. */
 #define OS_RELEASE "3"
-#define OS_VERSION "1.4"
+#define OS_VERSION "1.5"
 
 /* This file sets configuration parameters for the MINIX kernel, FS, and PM.
  * It is divided up into two main sections.  The first section contains
@@ -95,7 +95,4 @@
 #define SPROFILE          1    /* statistical profiling */
 #define CPROFILE          0    /* call profiling */
 
-/* Compile kernel so that first page of code and data can be unmapped. */
-#define VM_KERN_NOPAGEZERO      1       
-
 #endif /* _CONFIG_H */
index 153a40ca016b0030b49699ad3d621524f1f38608..e4ec34f18fb6a86c6cf7cf5f02f6d52da58cabb0 100755 (executable)
@@ -44,8 +44,6 @@
 
 #define PHYS_SEG      0x0400   /* flag indicating entire physical memory */
 
-#define GRANT_SEG     0x0800   /* flag indicating grant for umap */
-
 #define LOCAL_VM_SEG  0x1000   /* same as LOCAL_SEG, but with vm lookup */
 #define VM_D           (LOCAL_VM_SEG | D)
 #define VM_T           (LOCAL_VM_SEG | T)
diff --git a/include/minix/crtso.h b/include/minix/crtso.h
new file mode 100755 (executable)
index 0000000..c867641
--- /dev/null
@@ -0,0 +1,8 @@
+/* Prototypes for crtso.s. */
+
+#ifndef _MINIX_CRTSO_H
+#define _MINIX_CRTSO_H
+
+_PROTOTYPE( void _minix_unmapzero, (void));
+
+#endif
diff --git a/include/minix/debug.h b/include/minix/debug.h
new file mode 100644 (file)
index 0000000..808d735
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _MINIX_DEBUG_H
+#define _MINIX_DEBUG_H 1
+
+/* For reminders of things to be fixed. */
+#define FIXME(str) { static int fixme_warned = 0; \
+       if(!fixme_warned) { \
+               printf("FIXME: %s:%d: %s\n", __FILE__, __LINE__, str);\
+               fixme_warned = 1; \
+       } \
+}
+
+#endif /* _MINIX_DEBUG_H */
+
index fc04547b97d064dc9620fc8f1b8c9abd54987f55..f77c5aaa107610df4458abd5c0ede673943fc69d 100755 (executable)
@@ -34,5 +34,8 @@ _PROTOTYPE( int ds_retrieve_str, (char *name, char *val, size_t len));
 _PROTOTYPE( int ds_check_u32, (char *n, size_t namelen, u32_t *val));
 _PROTOTYPE( int ds_check_str, (char *n, size_t namelen, char *v, size_t vlen));
 
+/* lib/sysvipc/ds.c */
+_PROTOTYPE( int mini_ds_retrieve_u32, (char *name, u32_t *val)          );
+
 #endif /* _MINIX_DS_H */
 
index 79c4e7be4dfd8fcd8d6918d76d068f1af3f37f3f..dd3ca040cf6c24c70cb70051a6c05d3043a13885 100755 (executable)
@@ -15,7 +15,7 @@ _PROTOTYPE(void std_err, (char *_s));
 _PROTOTYPE(void prints, (const char *_s, ...));
 _PROTOTYPE(int fsversion, (char *_dev, char *_prog));
 _PROTOTYPE(int getprocessor, (void));
-_PROTOTYPE(int _cpuid, (u32_t eax_in, u32_t *eax, u32_t *ebx, u32_t *ecx, u32_t *edx));
+_PROTOTYPE(void _cpuid, (u32_t eax_in, u32_t *eax, u32_t *ebx, u32_t *ecx, u32_t *edx));
 _PROTOTYPE(int load_mtab, (char *_prog_name));
 _PROTOTYPE(int rewrite_mtab, (char *_prog_name));
 _PROTOTYPE(int get_mtab_entry, (char *_s1, char *_s2, char *_s3, char *_s4));
index 543f9a8cf3e8853b31b0234a2a23c71bc951484a..72fbcc3f198205fbcb8fbfac729a27f8615913e3 100644 (file)
@@ -4,6 +4,8 @@ minix/rs.h
 Interface to the reincarnation server
 */
 
+#include <minix/bitmap.h>
+
 #define RSS_NR_IRQ             16
 #define RSS_NR_IO              16
 #define RSS_NR_PCI_ID          16
@@ -35,6 +37,8 @@ struct rs_start
        size_t rss_labellen;
        char *rss_ipc;
        size_t rss_ipclen;
+#define RSS_VM_CALL_SIZE BITMAP_CHUNKS(VM_NCALLS)
+       bitchunk_t rss_vm[RSS_VM_CALL_SIZE];
 };
 
 #define RF_COPY                0x01    /* Copy the brinary into RS to make it possible
@@ -58,3 +62,5 @@ struct rs_pci
        struct { u32_t class; u32_t mask; } rsp_class[RSP_NR_CLASS];
 };
 
+_PROTOTYPE( int minix_rs_lookup, (const char *name, endpoint_t *value));
+
index 8e6b4415ea6ce78f9b9729059f48fa86915d3b57..d3f09667f4afd1e53c805b6bd354c214bdff63c1 100755 (executable)
@@ -35,7 +35,7 @@ _PROTOTYPE( int sys_enable_iop, (endpoint_t proc));
 _PROTOTYPE( int sys_exec, (endpoint_t proc, char *ptr,  
                                char *aout, vir_bytes initpc));
 _PROTOTYPE( int sys_fork, (endpoint_t parent, endpoint_t child, int *,
-       struct mem_map *ptr, u32_t vm));
+       struct mem_map *ptr, u32_t vm, vir_bytes *));
 _PROTOTYPE( int sys_newmap, (endpoint_t proc, struct mem_map *ptr));
 _PROTOTYPE( int sys_exit, (endpoint_t proc));
 _PROTOTYPE( int sys_trace, (int req, endpoint_t proc, long addr, long *data_p));
@@ -53,9 +53,8 @@ _PROTOTYPE( int sys_vmctl, (endpoint_t who, int param, u32_t value));
 _PROTOTYPE( int sys_vmctl_get_pagefault_i386, (endpoint_t *who, u32_t *cr2, u32_t *err));
 _PROTOTYPE( int sys_vmctl_get_cr3_i386, (endpoint_t who, u32_t *cr3)  );
 _PROTOTYPE( int sys_vmctl_get_memreq, (endpoint_t *who, vir_bytes *mem,
-        vir_bytes *len, int *wrflag) );
-
-
+        vir_bytes *len, int *wrflag, endpoint_t *) );
+_PROTOTYPE( int sys_vmctl_enable_paging, (struct mem_map *));
 
 _PROTOTYPE( int sys_readbios, (phys_bytes address, void *buf, size_t size));
 _PROTOTYPE( int sys_stime, (time_t boottime));
@@ -85,6 +84,7 @@ _PROTOTYPE(void *alloc_contig, (size_t len, int flags, phys_bytes *phys));
 #define AC_ALIGN4K     0x01
 #define AC_LOWER16M    0x02
 #define AC_ALIGN64K    0x04
+#define AC_LOWER1M     0x08
 
 /* Clock functionality: get system times, (un)schedule an alarm call, or
  * retrieve/set a process-virtual timer.
@@ -167,8 +167,6 @@ _PROTOTYPE(int sys_segctl, (int *index, u16_t *seg, vir_bytes *off,
 #define sys_getmonparams(v,vl) sys_getinfo(GET_MONPARAMS, v,vl, 0,0)
 #define sys_getschedinfo(v1,v2)        sys_getinfo(GET_SCHEDINFO, v1,0, v2,0)
 #define sys_getlocktimings(dst)        sys_getinfo(GET_LOCKTIMING, dst, 0,0,0)
-#define sys_getbiosbuffer(virp, sizep) \
-       sys_getinfo(GET_BIOSBUFFER, virp, sizeof(*virp), sizep, sizeof(*sizep))
 #define sys_getprivid(nr)      sys_getinfo(GET_PRIVID, 0, 0,0, nr)
 _PROTOTYPE(int sys_getinfo, (int request, void *val_ptr, int val_len,
                                 void *val_ptr2, int val_len2)          );
index 7d182348dc7e7727376933f4b3b9acdbdb361c8d..b14a98f13ba60d31f4600af16649fc4d882bc7de 100755 (executable)
@@ -66,7 +66,7 @@ typedef struct {
 } iovec_s_t;
 
 /* PM passes the address of a structure of this type to KERNEL when
- * sys_sendsig() is invoked as part of the signal catching mechanism.
+ * sys_sigsend() is invoked as part of the signal catching mechanism.
  * The structure contain all the information that KERNEL needs to build
  * the signal stack.
  */
@@ -97,9 +97,6 @@ struct kinfo {
   int nr_tasks;                        /* number of kernel tasks */
   char release[6];             /* kernel release number */
   char version[6];             /* kernel version number */
-#if DEBUG_LOCK_CHECK
-  int relocking;               /* interrupt locking depth (should be 0) */
-#endif
 };
 
 /* Load data accounted every this no. of seconds. */
@@ -178,6 +175,7 @@ struct kmessages {
   char km_buf[_KMESS_BUF_SIZE];          /* buffer for messages */
 };
 
+#include <minix/config.h>
 #include <ibm/interrupt.h>
 
 /* randomness struct: random sources after interrupts: */
index 5df0bb3d0d39283c5fe5121fe2a5cd49434d1ade..7ac40f9c5f0f90249026cb498b7c83d945bbe697 100755 (executable)
@@ -23,7 +23,10 @@ _PROTOTYPE( void *vm_map_phys, (endpoint_t who, void *physaddr, size_t len));
 _PROTOTYPE( int vm_unmap_phys, (endpoint_t who, void *vaddr, size_t len));
 
 _PROTOTYPE( int vm_allocmem, (phys_clicks memclicks, phys_clicks *retmembase));
-
+_PROTOTYPE( int vm_notify_sig, (endpoint_t ep, endpoint_t ipc_ep));
+_PROTOTYPE( int vm_ctl, (int what, int param));
+_PROTOTYPE( int vm_set_priv, (int procnr, void *buf));
+_PROTOTYPE( int vm_query_exit, (int *endpt));
 
 #endif /* _MINIX_VM_H */
 
index a219117193fdd4002ab40fc632d3d9ba154ca902..7d4ee8044d9f26735921db395807d617f7916394 100644 (file)
@@ -13,6 +13,7 @@ netinet/in.h
 /* Open Group Base Specifications Issue 6 (not complete) */
 #define    INADDR_ANY              (uint32_t)0x00000000
 #define    INADDR_BROADCAST        (uint32_t)0xFFFFFFFF
+#define    INADDR_LOOPBACK         (uint32_t)0x7F000001
 
 #define    IN_LOOPBACKNET          127
 
diff --git a/include/sys/ipc.h b/include/sys/ipc.h
new file mode 100644 (file)
index 0000000..d66ace3
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef _SYS_IPC_H
+#define _SYS_IPC_H
+
+/* For gid_t, uid_t */
+#include <sys/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'. */
+/* Create key if key does not exist. */
+#define IPC_CREAT      01000
+/* Fail if key exists. */
+#define IPC_EXCL       02000
+/* Return error on wait. */
+#define IPC_NOWAIT     04000
+
+/* Control commands for `msgctl', `semctl', and `shmctl'. */
+/* Remove identifier. */
+#define IPC_RMID       0
+/* Set `ipc_perm' options. */
+#define IPC_SET                1
+/* Get `ipc_perm' options. */
+#define IPC_STAT       2
+#define IPC_INFO       3       /* See ipcs. */
+
+/* Special key values. */
+/* Private key. */
+#define IPC_PRIVATE    ((key_t) 0)
+
+/* Data structure used to pass permission information to IPC operations. */
+struct ipc_perm
+{
+       key_t key;      /* Key. */
+       uid_t uid;              /* Owner's user ID. */
+       gid_t gid;              /* Owner's group ID. */
+       uid_t cuid;             /* Creator's user ID. */
+       gid_t cgid;             /* Creator's group ID. */
+       unsigned short int mode;        /* Reader/write permission. */
+       unsigned short int __seq;       /* Sequence number. */
+};
+
+_PROTOTYPE( key_t ftok, (const char *__path, int __id));
+
+#endif /* _SYS_IPC_H */
index 7209fc9be124451a570f80a60443833c0a02112e..68d06cb3ecaa0d217d3e2d17b8ba3c2fddeb6d47 100755 (executable)
 #define MAP_CONTIG     0x0010          /* contiguous in physical memory */
 #define MAP_LOWER16M   0x0020          /* physically below 16MB */
 #define MAP_ALIGN64K   0x0040          /* physically aligned at 64kB */
+#define MAP_LOWER1M    0x0080          /* physically below 16MB */
 
 /* mmap() error return */
 #define MAP_FAILED      ((void *)-1)
 
 _PROTOTYPE( void *mmap, (void *, size_t, int, int, int, off_t));
 _PROTOTYPE( int munmap, (void *, size_t));
+_PROTOTYPE( int munmap_text, (void *, size_t));
+_PROTOTYPE( void *vm_remap, (int d, int s, void *da, void *sa, size_t si));
+_PROTOTYPE( int vm_unmap, (int endpt, void *addr));
+_PROTOTYPE( unsigned long vm_getphys, (int endpt, void *addr));
+_PROTOTYPE( u8_t vm_getrefcount, (int endpt, void *addr));
 
 #endif /* _MMAN_H */
diff --git a/include/sys/sem.h b/include/sys/sem.h
new file mode 100644 (file)
index 0000000..a2d09af
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _SYS_SEM_H
+#define _SYS_SEM_H
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+
+#define SEMMNI 128
+#define SEMMSL 250
+#define SEMMNS (SEMMSL*SEMMNI)
+
+#define SEMOPM 32
+#define SEMVMX 32767
+
+/* Flags for `semop'.  */
+#define SEM_UNDO        0x1000          /* undo the operation on exit */
+
+/* Commands for `semctl'.  */
+#define GETPID          11              /* get sempid */
+#define GETVAL          12              /* get semval */
+#define GETALL          13              /* get all semval's */
+#define GETNCNT         14              /* get semncnt */
+#define GETZCNT         15              /* get semzcnt */
+#define SETVAL          16              /* set semval */
+#define SETALL          17              /* set all semval's */
+
+
+/* Data structure describing a set of semaphores.  */
+struct semid_ds
+{
+       struct ipc_perm sem_perm;             /* operation permission struct */
+       time_t sem_otime;                   /* last semop() time */
+       unsigned long int __unused1;
+       time_t sem_ctime;                   /* last time changed by semctl() */
+       unsigned long int __unused2;
+       unsigned long int sem_nsems;          /* number of semaphores in set */
+       unsigned long int __unused3;
+       unsigned long int __unused4;
+};
+
+/* Structure used for argument to `semop' to describe operations.  */
+struct sembuf
+{
+       unsigned short int sem_num;   /* semaphore number */
+       short int sem_op;             /* semaphore operation */
+       short int sem_flg;            /* operation flag */
+};
+
+
+/* Semaphore control operation.  */
+_PROTOTYPE( int semctl, (int __semid, int __semnum, int __cmd, ...));
+
+/* Get semaphore.  */
+_PROTOTYPE( int semget, (key_t __key, int __nsems, int __semflg));
+
+/* Operate on semaphore.  */
+_PROTOTYPE( int semop, (int __semid, struct sembuf *__sops, size_t __nsops));
+
+
+#ifdef __USE_MISC
+
+/* ipcs ctl cmds */
+# define SEM_STAT 18
+# define SEM_INFO 19
+
+struct  seminfo
+{
+       int semmap;
+       int semmni;
+       int semmns;
+       int semmnu;
+       int semmsl;
+       int semopm;
+       int semume;
+       int semusz;
+       int semvmx;
+       int semaem;
+};
+
+#endif /* __USE_MISC */
+
+#endif /* _SYS_SEM_H */
diff --git a/include/sys/shm.h b/include/sys/shm.h
new file mode 100644 (file)
index 0000000..78fcec1
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _SYS_SHM_H
+#define _SYS_SHM_H
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+
+#include <unistd.h>
+
+typedef unsigned long int shmatt_t;
+
+#define SHMLBA getpagesize()
+#define SHMMNI 4096
+#define SHMSEG 32              /* max shared segs per process */
+
+struct shmid_ds
+{
+       struct ipc_perm shm_perm;       /* Ownership and permissions */
+       size_t  shm_segsz;                      /* Size of segment (bytes) */
+       time_t  shm_atime;                      /* Last attach time */
+       time_t  shm_dtime;                      /* Last detach time */
+       time_t  shm_ctime;                      /* Last change time */
+       pid_t   shm_cpid;                       /* PID of creator */
+       pid_t   shm_lpid;                       /* PID of last shmat()/shmdt() */
+       shmatt_t        shm_nattch;             /* No. of current attaches */
+};
+
+/* Permission flag for shmget. */
+#define SHM_R  0400
+#define SHM_W  0200
+
+#define SHM_RDONLY 010000              /* attach read-only else read-write */
+#define SHM_RND    020000              /* round attach address to SHMLBA */
+
+/* shm_mode upper byte flags */
+#define SHM_DEST 01000                 /* segment will be destroyed on last detach */
+#define SHM_LOCKED 02000               /* segment will not be swapped */
+
+/* ipcs ctl commands */
+#define SHM_STAT       13
+#define SHM_INFO       14
+
+struct  shminfo
+{
+       unsigned long int shmmax;
+       unsigned long int shmmin;
+       unsigned long int shmmni;
+       unsigned long int shmseg;
+       unsigned long int shmall;
+};
+
+struct shm_info
+{
+       int used_ids;
+       unsigned long int shm_tot;  /* total allocated shm */
+       unsigned long int shm_rss;  /* total resident shm */
+       unsigned long int shm_swp;  /* total swapped shm */
+       unsigned long int swap_attempts;
+       unsigned long int swap_successes;
+};
+
+/* The following System V style IPC functions implement a shared memory
+ * facility.  The definition is found in XPG4.2.
+ */
+
+/* Shared memory control operation. */
+_PROTOTYPE( int shmctl, (int __shmid, int __cmd, struct shmid_ds *__buf));
+
+/* Get shared memory segment. */
+_PROTOTYPE( int shmget, (key_t __key, size_t __size, int __shmflg));
+
+/* Attach shared memory segment. */
+_PROTOTYPE( void *shmat, (int __shmid, const void *__shmaddr, int __shmflg));
+
+/* Deattach shared memory segment. */
+_PROTOTYPE( int shmdt, (const void *__shmaddr));
+
+#endif /* _SYS_SHM_H */
diff --git a/include/sys/signal.h b/include/sys/signal.h
new file mode 100644 (file)
index 0000000..4b80dde
--- /dev/null
@@ -0,0 +1,2 @@
+#include <signal.h>
+
diff --git a/include/sys/timeb.h b/include/sys/timeb.h
new file mode 100644 (file)
index 0000000..b78d109
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _SYS__TIMEB_H
+#define _SYS__TIMEB_H
+
+#include <time.h>
+
+struct timeb
+{
+       time_t time;                /* Seconds since epoch, as from `time'.  */
+       unsigned short int millitm; /* Additional milliseconds.  */
+       short int timezone;         /* Minutes west of GMT.  */
+       short int dstflag;          /* Nonzero if Daylight Savings Time used.  */
+};
+
+/* Fill in TIMEBUF with information about the current time.  */
+
+_PROTOTYPE( int ftime, (struct timeb *__timebuf));
+
+#endif /* _SYS__TIMEB_H */
index d959e13e76fb8194f74597196ad6e77aaf9ad486..8c3bcb3a264ae8e6f1cc0c4c0a47a60db8a352aa 100755 (executable)
@@ -43,6 +43,11 @@ typedef long clock_t;                   /* unit for system accounting */
 typedef unsigned long sigset_t;
 #endif
 
+#ifndef _KEY_T
+#define _KEY_T
+typedef long key_t;
+#endif
+
 /* Open Group Base Specifications Issue 6 (not complete) */
 typedef long useconds_t;       /* Time in microseconds */
 
index 152cd49e0c10b2fdce895df3f77aa9a91aede5c0..12ea709ccb39cd90e82ec7519a0edb686f9a660a 100644 (file)
@@ -16,6 +16,7 @@ sys/vm_i386.h
 #define I386_VM_ACC    0x020   /* Accessed */
 #define I386_VM_ADDR_MASK 0xFFFFF000 /* physical address */
 #define I386_VM_ADDR_MASK_4MB 0xFFC00000 /* physical address */
+#define I386_VM_OFFSET_MASK_4MB 0x003FFFFF /* physical address */
 
 /* Page directory specific flags. */
 #define I386_VM_BIGPAGE        0x080   /* 4MB page */
@@ -37,6 +38,12 @@ sys/vm_i386.h
 #define I386_VM_PFA_SHIFT      22      /* Page frame address shift */
 
 /* CR0 bits */
+#define I386_CR0_PE            0x00000001      /* Protected mode  */
+#define I386_CR0_MP            0x00000002      /* Monitor Coprocessor  */
+#define I386_CR0_EM            0x00000004      /* Emulate  */
+#define I386_CR0_TS            0x00000008      /* Task Switched  */
+#define I386_CR0_ET            0x00000010      /* Extension Type  */
+#define I386_CR0_WP            0x00010000      /* Enable paging */
 #define I386_CR0_PG            0x80000000      /* Enable paging */
 
 /* some CR4 bits */
index f5f0071e8d1a91d30d681800179e3123f4711f48..051984993fa60aa5699aee85ea6ca8bcaf878b02 100644 (file)
@@ -89,6 +89,7 @@
 #define        LOG_CONS        0x02    /* log on the console if errors in sending */
 #define        LOG_ODELAY      0x04    /* delay open until first syslog() (default) */
 #define        LOG_NDELAY      0x08    /* don't delay open */
+#define        LOG_NOWAIT      0x10    /* don't wait for console forks: DEPRECATED */
 #define        LOG_PERROR      0x20    /* log to stderr as well */
 
 void closelog(void);
index 01346a0ce8fc6f49d6defc018c945bd27bcfa65a..50c4cf3e49db30c5ffef5d288fa719a48d3bb455 100755 (executable)
@@ -121,6 +121,8 @@ _PROTOTYPE( char *getlogin, (void)                                  );
 _PROTOTYPE( pid_t getpgrp, (void)                                      );
 _PROTOTYPE( pid_t getpid, (void)                                       );
 _PROTOTYPE( pid_t getnpid, (int proc_nr)                               );
+_PROTOTYPE( uid_t getnuid, (int proc_nr)                               );
+_PROTOTYPE( gid_t getngid, (int proc_nr)                               );
 _PROTOTYPE( pid_t getppid, (void)                                      );
 _PROTOTYPE( uid_t getuid, (void)                                       );
 _PROTOTYPE( int isatty, (int _fd)                                      );