Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

time(3)

lseek(2)

TYPES(5)                             BSD                              TYPES(5)



NAME
     types - primitive system data types

SYNOPSIS
     #include <sys/types.h>

DESCRIPTION
     The data types defined in the include file are used in Domain/OS BSD
     system code; some data of these types are accessible to user code:

     /*
      * Basic system types and major/minor device constructing/busting macros.
      */

     /* major part of a device */
     #define  major(x)  ((int)(((unsigned)(x)>>9)&0x7FFFFF))

     /* minor part of a device */
     #define  minor(x)  ((int)((x)&0x1FF))

     /* make a device number */
     #define  makedev(x,y)      ((dev_t)(((x)<<9) | (y)))

     typedef  unsigned char     u_char;
     typedef  unsigned short    u_short;
     typedef  unsigned int      u_int;
     typedef  unsigned long     u_long;
     typedef  unsigned short    ushort;/* sys III compat */

     typedef  struct    _quad { long val[2]; } quad;
     typedef  long      daddr_t;
     typedef  char *    caddr_t;
     typedef  u_long    ino_t;
     typedef  long      swblk_t;
     typedef  long      size_t;
     typedef  long      time_t;
     typedef  long      dev_t;
     typedef  long      off_t;
     typedef ushort     uid_t;  /* user ID */
     typedef ushort     gid_t;  /* group ID */
     typedef ushort     oid_t;  /* organization ID */

     #define  NBBY      8       /* number of bits in a byte */
     /*
      * Select uses bit masks of file descriptors in longs.
      * These macros manipulate such bit fields (the file system macros use chars).
      * FD_SETSIZE may be defined by the user, but the default here
      * should be >= NOFILE (param.h).
      */

     #define  FD_SETSIZE        256

     typedef long       fd_mask;
     #define NFDBITS    (sizeof(fd_mask) * NBBY)/* bits per mask */
     #define  howmany(x, y)     (((x)+((y)-1))/(y))

     typedef  struct fd_set {
              fd_mask   fds_bits[howmany(FD_SETSIZE, NFDBITS)];
     } fd_set;

     #define  FD_SET(n, p)      ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
     #define  FD_CLR(n, p)      ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
     #define  FD_ISSET(n, p)    ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
     #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))

     The form daddr_t is used for disk addresses except in an inode on disk.
     Times are encoded in seconds since 00:00:00 GMT, January 1, 1970.  The
     major and minor parts of a device code specify kind and unit number of a
     device and are installation-dependent.  Offsets are measured in bytes
     from the beginning of a file.  The label_t variables are used to save the
     processor state while another process is running.

SEE ALSO
     time(3), lseek(2)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026