Data Definitions for libc

This section defines global identifiers and their values that are associated with interfaces contained in libc. These definitions are organized into groups that correspond to system headers. This convention is used as a convenience for the reader, and does not imply the existence of these headers, or their content.

These definitions are intended to supplement those provided in the referenced underlying specifications.

This specification uses ISO/IEC 9899 C Language as the reference programming language, and data definitions are specified in ISO C format. The C language is used here as a convenient notation. Using a C language description of these data objects does not preclude their use by other programming languages.

errno.h


#define EDEADLOCK	EDEADLK

inttypes.h


typedef unsigned long long uint64_t;
typedef long long intmax_t;
typedef unsigned long long uintmax_t;
typedef unsigned int uintptr_t;

limits.h


#define ULONG_MAX	0xFFFFFFFFUL
#define LONG_MAX	2147483647

#define CHAR_MIN	0
#define CHAR_MAX	255

setjmp.h


typedef int __jmp_buf[14];

signal.h


#define __NUM_ACRS	16
#define __NUM_FPRS	16
#define __NUM_GPRS	16

typedef struct
{
  unsigned long mask;
  unsigned long addr;
}
__attribute__ ((aligned (8))) _psw_t;
typedef struct
{
  _psw_t psw;
  unsigned long gprs[__NUM_GPRS];
  unsigned int acrs[__NUM_ACRS];
}
_s390_regs_common;

struct sigaction
{
  union
  {
    sighandler_t _sa_handler;
    void (*_sa_sigaction) (int, siginfo_t *, void *);
  }
  __sigaction_handler;
  sigset_t sa_mask;
  unsigned long sa_flags;
  void (*sa_restorer) (void);
}
 ;
#define MINSIGSTKSZ	2048
#define SIGSTKSZ	8192

typedef struct
{
  unsigned int fpc;
  double fprs[__NUM_FPRS];
}
_s390_fp_regs;
typedef struct
{
  _s390_regs_common regs;
  _s390_fp_regs fpregs;
}
_sigregs;

struct sigcontext
{
  unsigned long oldmask[2];
  _sigregs *sregs;
}
 ;

stddef.h


typedef unsigned long size_t;
typedef int ptrdiff_t;

sys/ioctl.h


#define FIONREAD	0x541B
#define TIOCNOTTY	21538

sys/ipc.h


struct ipc_perm
{
  key_t __key;
  uid_t uid;
  gid_t gid;
  uid_t cuid;
  uid_t cgid;
  unsigned short mode;
  unsigned short __pad1;
  unsigned short __seq;
  unsigned short __pad2;
  unsigned long __unused1;
  unsigned long __unused2;
}
 ;

sys/mman.h


#define MCL_CURRENT	1
#define MCL_FUTURE	2

sys/msg.h


typedef unsigned long msglen_t;
typedef unsigned long msgqnum_t;

struct msqid_ds
{
  struct ipc_perm msg_perm;
  time_t msg_stime;
  unsigned long __unused1;
  time_t msg_rtime;
  unsigned long __unused2;
  time_t msg_ctime;
  unsigned long __unused3;
  unsigned long __msg_cbytes;
  msgqnum_t msg_qnum;
  msglen_t msg_qbytes;
  pid_t msg_lspid;
  pid_t msg_lrpid;
  unsigned long __unused4;
  unsigned long __unused5;
}
 ;

sys/sem.h


struct semid_ds
{
  struct ipc_perm sem_perm;
  time_t sem_otime;
  unsigned long __unused1;
  time_t sem_ctime;
  unsigned long __unused2;
  unsigned long sem_nsems;
  unsigned long __unused3;
  unsigned long __unused4;
}
 ;

sys/shm.h


#define SHMLBA	(__getpagesize())

typedef unsigned long shmatt_t;

struct shmid_ds
{
  struct ipc_perm shm_perm;
  size_t shm_segsz;
  time_t shm_atime;
  unsigned long __unused1;
  time_t shm_dtime;
  unsigned long __unused2;
  time_t shm_ctime;
  unsigned long __unused3;
  pid_t shm_cpid;
  pid_t shm_lpid;
  shmatt_t shm_nattch;
  unsigned long __unused4;
  unsigned long __unused5;
}
 ;

sys/socket.h


typedef uint32_t __ss_aligntype;

sys/stat.h


#define _STAT_VER	3

struct stat
{
  dev_t st_dev;
  unsigned int __pad1;
  ino_t st_ino;
  mode_t st_mode;
  nlink_t st_nlink;
  uid_t st_uid;
  gid_t st_gid;
  dev_t st_rdev;
  unsigned int __pad2;
  off_t st_size;
  blksize_t st_blksize;
  blkcnt_t st_blocks;
  struct timespec st_atim;
  struct timespec st_mtim;
  struct timespec st_ctim;
  unsigned long __unused4;
  unsigned long __unused5;
}
 ;
struct stat64
{
  dev_t st_dev;
  int __pad1;
  ino_t __st_ino;
  mode_t st_mode;
  nlink_t st_nlink;
  uid_t st_uid;
  gid_t st_gid;
  dev_t st_rdev;
  int __pad2;
  off64_t st_size;
  blksize_t st_blksize;
  blkcnt64_t st_blocks;
  struct timespec st_atim;
  struct timespec st_mtim;
  struct timespec st_ctim;
  ino64_t st_ino;
}
 ;

sys/statvfs.h


struct statvfs
{
  unsigned long f_bsize;
  unsigned long f_frsize;
  fsblkcnt_t f_blocks;
  fsblkcnt_t f_bfree;
  fsblkcnt_t f_bavail;
  fsfilcnt_t f_files;
  fsfilcnt_t f_ffree;
  fsfilcnt_t f_favail;
  unsigned long f_fsid;
  int __f_unused;
  unsigned long f_flag;
  unsigned long f_namemax;
  int __f_spare[6];
}
 ;
struct statvfs64
{
  unsigned long f_bsize;
  unsigned long f_frsize;
  fsblkcnt64_t f_blocks;
  fsblkcnt64_t f_bfree;
  fsblkcnt64_t f_bavail;
  fsfilcnt64_t f_files;
  fsfilcnt64_t f_ffree;
  fsfilcnt64_t f_favail;
  unsigned long f_fsid;
  int __f_unused;
  unsigned long f_flag;
  unsigned long f_namemax;
  int __f_spare[6];
}
 ;

sys/types.h


typedef long long int64_t;

typedef int32_t ssize_t;

termios.h


#define OLCUC	0000002
#define ONLCR	0000004
#define XCASE	0000004
#define NLDLY	0000400
#define CR1	0001000
#define IUCLC	0001000
#define CR2	0002000
#define CR3	0003000
#define CRDLY	0003000
#define TAB1	0004000
#define TAB2	0010000
#define TAB3	0014000
#define TABDLY	0014000
#define BS1	0020000
#define BSDLY	0020000
#define VT1	0040000
#define VTDLY	0040000
#define FF1	0100000
#define FFDLY	0100000

#define VSUSP	10
#define VEOL	11
#define VREPRINT	12
#define VDISCARD	13
#define VWERASE	14
#define VEOL2	16
#define VMIN	6
#define VSWTC	7
#define VSTART	8
#define VSTOP	9

#define IXON	0002000
#define IXOFF	0010000

#define CS6	0000020
#define CS7	0000040
#define CS8	0000060
#define CSIZE	0000060
#define CSTOPB	0000100
#define CREAD	0000200
#define PARENB	0000400
#define PARODD	0001000
#define HUPCL	0002000
#define CLOCAL	0004000
#define VTIME	5

#define ISIG	0000001
#define ICANON	0000002
#define ECHOE	0000020
#define ECHOK	0000040
#define ECHONL	0000100
#define NOFLSH	0000200
#define TOSTOP	0000400
#define ECHOCTL	0001000
#define ECHOPRT	0002000
#define ECHOKE	0004000
#define FLUSHO	0010000
#define PENDIN	0040000
#define IEXTEN	0100000

ucontext.h


#define NGREG	36

typedef union
{
  double d;
  float f;
}
fpreg_t;

typedef struct
{
  unsigned int fpc;
  fpreg_t fprs[16];
}
fpregset_t;

typedef struct
{
  _psw_t psw;
  unsigned long gregs[16];
  unsigned int aregs[16];
  fpregset_t fpregs;
}
mcontext_t;

typedef struct ucontext
{
  unsigned long uc_flags;
  struct ucontext *uc_link;
  stack_t uc_stack;
  mcontext_t uc_mcontext;
  sigset_t uc_sigmask;
}
ucontext_t;

unistd.h


typedef int intptr_t;

utmp.h


struct lastlog
{
  time_t ll_time;
  char ll_line[UT_LINESIZE];
  char ll_host[UT_HOSTSIZE];
}
 ;

struct utmp
{
  short ut_type;
  pid_t ut_pid;
  char ut_line[UT_LINESIZE];
  char ut_id[4];
  char ut_user[UT_NAMESIZE];
  char ut_host[UT_HOSTSIZE];
  struct exit_status ut_exit;
  long ut_session;
  struct timeval ut_tv;
  int32_t ut_addr_v6[4];
  char __unused[20];
}
 ;

utmpx.h


struct utmpx
{
  short ut_type;
  pid_t ut_pid;
  char ut_line[UT_LINESIZE];
  char ut_id[4];
  char ut_user[UT_NAMESIZE];
  char ut_host[UT_HOSTSIZE];
  struct exit_status ut_exit;
  long ut_session;
  struct timeval ut_tv;
  int32_t ut_addr_v6[4];
  char __unused[20];
}
 ;