]> Zhao Yanbai Git Server - minix.git/commitdiff
Various select() support flags, prototypes, definitions.
authorBen Gras <ben@minix3.org>
Fri, 17 Jun 2005 13:34:47 +0000 (13:34 +0000)
committerBen Gras <ben@minix3.org>
Fri, 17 Jun 2005 13:34:47 +0000 (13:34 +0000)
Major numbers for inet, tty, ctty.

Defined _MINIX_VERSION to check for major minix version in applications.

Prototype for (fake) readlink().

include/minix/com.h
include/minix/config.h
include/sys/select.h
include/timers.h
include/unistd.h

index 666610eaddc6c736a09585dd37c13655881554ab..aa0dbcae4c7cb04365e89728a64574087d429ddf 100755 (executable)
@@ -66,7 +66,8 @@
 #  define KSIG_PENDING (NOTIFICATION | 2)      /* signal(s) pending */
 #  define NEW_KMESS    (NOTIFICATION | 3)      /* new kernel message */
 #  define HARD_STOP    (NOTIFICATION | 4)      /* system shutdown */
-#define NR_NOTIFY_TYPES               5        /* nr of bits in mask */
+#  define DEV_SELECTED (NOTIFICATION | 5)      /* select() notification */
+#define NR_NOTIFY_TYPES               6        /* nr of bits in mask */
 
 /* Shorthands for message parameters passed with notifications. */
 #define NOTIFY_SOURCE  m_source
@@ -89,6 +90,7 @@
 #define DEV_GATHER      9      /* fcn code for reading into a vector */
 #define TTY_SETPGRP    10      /* fcn code for setpgroup */
 #define TTY_EXIT       11      /* a process group leader has exited */ 
+#define DEV_SELECT     12      /* request select() attention */
 #define SUSPEND                -998    /* used in interrupts when tty has no data */
 
 /* Field names for messages to block and character device drivers. */
 #define POSITION       m2_l1   /* file offset */
 #define ADDRESS        m2_p1   /* core buffer address */
 
+/* Field names for DEV_SELECT messages to device drivers. */
+#define DEVICE         m2_i1   /* minor device */
+#define DEV_SEL_OPS    m2_i2   /* which select operations are requested */
+#define DEV_SEL_WATCH  m2_i3   /* request notify if no operations are ready */
+
 /* Field names used in reply messages from tasks. */
 #define REP_PROC_NR    m2_i1   /* # of proc on whose behalf I/O was done */
 #define REP_STATUS     m2_i2   /* bytes transferred or error number */
 #  define URANDOM_DEV RANDOM_DEV 
 #  define ZERO_DEV    6                /* minor device for /dev/zero */
 
+#define TTY_MAJOR      4       /* major device no. for ttys */
+#define CTTY_MAJOR     5       /* major device no. for /dev/tty */
+
+#define INET_MAJOR     7       /* major device no. for inet */
+
 /* Full device numbers that are special to the boot monitor and FS. */
 #  define DEV_RAM      0x0100  /* device number of /dev/ram */
 #  define DEV_BOOT     0x0104  /* device number of /dev/boot */
 #define PZ_MEM_PTR     m1_p1   /* base */
 #define PZ_COUNT       m1_i1   /* count */
 
+/* Field names for SELECT (FS) */
+#define SEL_NFDS       m8_i1
+#define SEL_READFDS    m8_p1
+#define SEL_WRITEFDS   m8_p2
+#define SEL_ERRORFDS   m8_p3
+#define SEL_TIMEOUT    m8_p4
+
 /*===========================================================================*
  *                Miscellaneous messages, mainly used by IS                 *
  *===========================================================================*/
index 55c8bd94a63f2b7e8420263993f3e9dc68791ff1..17a92d22ba793984e8cab49338c83e830d53c823 100755 (executable)
@@ -5,6 +5,8 @@
 #define OS_RELEASE "3"
 #define OS_VERSION "0.6"
 
+#define _MINIX_VERSION 3
+
 /* This file sets configuration parameters for the MINIX kernel, FS, and PM.
  * It is divided up into two main sections.  The first section contains
  * user-settable parameters.  In the second section, various internal system
index ba9b226d5597e43a940d74d709952b05704b1313..7e6feacb2db6030b658e786ff7ceade3f7b8b096 100755 (executable)
@@ -27,10 +27,17 @@ typedef struct {
 _PROTOTYPE( int select, (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) );
 
 _PROTOTYPE( void FD_CLR, (int fd, fd_set *fdset));
-_PROTOTYPE( void FD_ISSET, (int fd, fd_set *fdset));
+_PROTOTYPE( int FD_ISSET, (int fd, fd_set *fdset));
 _PROTOTYPE( void FD_SET, (int fd, fd_set *fdset));
 _PROTOTYPE( void FD_ZERO, (fd_set *fdset));
 
+/* possible select() operation types; read, write, errors */
+/* (FS/driver internal use only) */
+#define SEL_RD         (1 << 0)
+#define SEL_WR         (1 << 1)
+#define SEL_ERR                (1 << 2)
+#define SEL_NOTIFY     (1 << 3) /* not a real select operation */
+
 #endif /* _POSIX_SOURCE */
 
 #endif /* _SYS_SELECT_H */
index 62d134ee523c85cc7635cc606301be0082e7702d..9a12b3d7848bdeac72bc304b4ab08c3af7721501 100644 (file)
@@ -51,10 +51,10 @@ typedef struct timer
 /* The following generic timer management functions are available. They
  * can be used to operate on the lists of timers.
  */
-_PROTOTYPE( void tmrs_clrtimer, (timer_t **tmrs, timer_t *tp)          );
-_PROTOTYPE( void tmrs_exptimers, (timer_t **tmrs, clock_t now)         );
-_PROTOTYPE( void tmrs_settimer, (timer_t **tmrs, timer_t *tp, 
-       clock_t exp_time, tmr_func_t watchdog)                          );
+_PROTOTYPE( clock_t tmrs_clrtimer, (timer_t **tmrs, timer_t *tp, clock_t *new_head)            );
+_PROTOTYPE( void tmrs_exptimers, (timer_t **tmrs, clock_t now, clock_t *new_head)              );
+_PROTOTYPE( clock_t tmrs_settimer, (timer_t **tmrs, timer_t *tp, 
+       clock_t exp_time, tmr_func_t watchdog, clock_t *new_head)                               );
 
 
 #endif /* _TIMERS_H */
index 870ee51e2c88f74a81638a97bf91e5c3065b076d..0630bbd265bdb559dc588a02003c74749de67fcd 100755 (executable)
@@ -166,6 +166,6 @@ _PROTOTYPE( int setgroups, (int ngroups, const gid_t *gidset)               );
 
 #endif
 
-_PROTOTYPE( int setcache, (int kb));
+_PROTOTYPE( int readlink, (const char *, char *, int));
 
 #endif /* _UNISTD_H */