types(5) FreeBSD 一般コマンドマニュアル

types

前のページ 上に戻る 次のページ

types




解説

     ファイル sys/types.h はカーネル内部で (ほとんどの物はシステム全体を通じ
     て) 用いられる、定義済みのデータ型を含みます。

     #ifndef _SYS_TYPES_H_
     #define _SYS_TYPES_H_

     /* 機種に依存するパラメータ。 */
     #include <sys/inttypes.h> /* <machine/ansi.h> をインクルードします */
     #include <machine/types.h>

     #ifndef _POSIX_SOURCE
     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 V との互換性 */
     typedef unsigned int    uint;           /* Sys V との互換性 */
     #endif

     typedef __uint8_t       u_int8_t;
     typedef __uint16_t      u_int16_t;
     typedef __uint32_t      u_int32_t;
     typedef __uint64_t      u_int64_t;

     typedef u_int64_t       u_quad_t;       /* 4 倍長語 */
     typedef int64_t         quad_t;
     typedef quad_t *        qaddr_t;

     typedef char *          caddr_t;        /* コアアドレス */
     typedef __const char *  c_caddr_t;      /* コアアドレスの const へのポインタ */
     typedef __volatile char *v_caddr_t;     /* コアアドレスの volatile へのポインタ */
     typedef int32_t         daddr_t;        /* ディスクアドレス */
     typedef u_int32_t       u_daddr_t;      /* 符号無しのディスク番号 */
     typedef u_int32_t       fixpt_t;        /* 固定小数点数 */
     typedef u_int32_t       fixpt_t;        /* 固定小数点数 */
     typedef u_int32_t       gid_t;          /* グループ ID */
     typedef u_int32_t       ino_t;          /* i ノード番号 */
     typedef long            key_t;          /* IPC キー (Sys V プロセス間通信用) */
     typedef u_int16_t       mode_t;         /* パーミッション */
     typedef u_int16_t       nlink_t;        /* リンクカウント */
     typedef _BSD_OFF_T_     off_t;          /* ファイルオフセット */
     typedef _BSD_PID_T_     pid_t;          /* プロセス ID */
     typedef quad_t          rlim_t;         /* リソースリミット */
     #ifdef __alpha__                /* XXX should be in <machine/types.h> */
     typedef int64_t         segsz_t;        /* セグメントサイズ */
     #else
     typedef int32_t         segsz_t;        /* セグメントサイズ */
     #endif
     typedef int32_t         swblk_t;        /* スワップオフセット */
     typedef int32_t         ufs_daddr_t;

     #else /* !_KERNEL */

     typedef u_int32_t       dev_t;          /* デバイス番号 */
     #define udev_t dev_t

     #ifndef _POSIX_SOURCE

     /*
      * minor() はインデックスの代わりにクッキーを与えます。この理由は、
      * ビット0-15 の意味の変更を避けるためと、ビット 16-31 をシフトする
      * ことに起因してこれを使わないデバイスにとっては時間と空間の無駄遣い
      * になることを避けるためです。
      */
     #define major(x)        ((int)(((u_int)(x) >> 8)&0xff)) /* メジャー番号 */
     #define minor(x)        ((int)((x)&0xffff00ff))         /* マイナ番号 */
     #define makedev(x,y)    ((dev_t)(((x) << 8) | (y)))     /* dev_t を生成する */

     #endif /* _POSIX_SOURCE */

     #endif /* !_KERNEL */

     #include <machine/endian.h>

     #ifdef  _BSD_CLOCK_T_
     typedef _BSD_CLOCK_T_   clock_t;
     #undef  _BSD_CLOCK_T_
     #endif

     #ifdef  _BSD_CLOCKID_T_
     typedef _BSD_CLOCKID_T_ clockid_t;
     #undef  _BSD_CLOCKID_T_
     #endif

     #ifdef  _BSD_SIZE_T_
     typedef _BSD_SIZE_T_    size_t;
     #undef  _BSD_SIZE_T_
     #endif

     #ifdef  _BSD_SSIZE_T_
     typedef _BSD_SSIZE_T_   ssize_t;
     #undef  _BSD_SSIZE_T_
     #endif

     #ifdef  _BSD_TIME_T_
     typedef _BSD_TIME_T_    time_t;
     #undef  _BSD_TIME_T_
     #endif

     #ifdef  _BSD_TIMER_T_
     typedef _BSD_TIMER_T_   timer_t;
     #undef  _BSD_TIMER_T_
     #endif

     typedef long    fd_mask;
     #define NFDBITS (sizeof(fd_mask) * NBBY)        /* マスクごとのビット */

     #ifndef howmany
     #define howmany(x, y)   (((x) + ((y) - 1)) / (y))
     #endif

     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_COPY(f, t)   bcopy(f, t, sizeof(*(f)))
     #define FD_ZERO(p)      bzero(p, sizeof(*(p)))

     /*
      * これらの宣言は別のところに属しますが、ここと <stdio.h> で繰り返して
      * います。壊れたプログラムが 64 ビットの off_t で動作するようにする
      * 機会を増すためです。
      */
     #ifndef _KERNEL
     __BEGIN_DECLS
     #ifndef _FTRUNCATE_DECLARED
     #define _FTRUNCATE_DECLARED
     int      ftruncate __P((int, off_t));
     #endif
     #ifndef _LSEEK_DECLARED
     #define _LSEEK_DECLARED
     off_t    lseek __P((int, off_t, int));
     #endif
     #ifndef _MMAP_DECLARED
     #define _MMAP_DECLARED
     void *   mmap __P((void *, size_t, int, int, int, off_t));
     #endif
     #ifndef _TRUNCATE_DECLARED
     #define _TRUNCATE_DECLARED
     int      truncate __P((const char *, off_t));
     #endif
     __END_DECLS
     #endif /* !_KERNEL */

     #endif /* !_POSIX_SOURCE */

     #endif /* !_SYS_TYPES_H_ */


関連項目

     gdb(1), lseek(2), time(3), fs(5)


ABELNET VPSサービス