Files
Arquivotheca.Solaris-2.5/ucbhead/sys/types.h
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

311 lines
8.7 KiB
C
Executable File

/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "@(#)types.h 1.10 93/07/21 SMI" /* SVr4.0 1.5 */
/*******************************************************************
PROPRIETARY NOTICE (Combined)
This source code is unpublished proprietary information
constituting, or derived under license from AT&T's UNIX(r) System V.
In addition, portions of such source code were derived from Berkeley
4.3 BSD under license from the Regents of the University of
California.
Copyright Notice
Notice of copyright on this source code product does not indicate
publication.
(c) 1986,1987,1988,1989 Sun Microsystems, Inc
(c) 1983,1984,1985,1986,1987,1988,1989 AT&T.
All rights reserved.
********************************************************************/
#ifndef _SYS_TYPES_H
#define _SYS_TYPES_H
/* From SunOS types.h */
#ifdef mc68000
typedef struct _physadr { short r[1]; } *physadr;
typedef struct _label { int val[13]; } label_t;
#else
#ifdef i386
typedef struct _physadr { short r[1]; } *physadr;
typedef struct _label { int val[8]; } label_t;
#else
#ifdef sparc
typedef struct _physadr { int r[1]; } *physadr;
typedef struct _label { int val[2]; } label_t;
#else
typedef struct _physadr { int r[1]; } *physadr;
typedef struct _label { int val[10]; } label_t;
#endif
#endif
#endif
/* POSIX Extensions */
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
/* For BSD compatibility */
typedef char * addr_t; /* ?<core address> type */
typedef char * caddr_t; /* ?<core address> type */
typedef long daddr_t; /* <disk address> type */
typedef long off_t; /* ?<offset> type */
typedef short cnt_t; /* ?<count> type */
typedef ulong_t paddr_t; /* <physical address> type */
typedef uchar_t use_t; /* use count for swap. */
typedef short sysid_t;
typedef short index_t;
typedef long swblk_t;
typedef short lock_t; /* lock work for busy wait */
typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
typedef ulong_t l_dev_t;
/*
* The following type is for various kinds of identifiers. The
* actual type must be the same for all since some system calls
* (such as sigsend) take arguments that may be any of these
* types. The enumeration type idtype_t defined in sys/procset.h
* is used to indicate what type of id is being specified.
*/
/*
* The following protects users who use other than Sun compilers
* (eg, GNU C) that don't support long long, and need to include
* this header file.
*/
#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
#else
/* used to reserve space and generate alignment */
typedef union {
long l[2];
double d;
} longlong_t;
typedef union {
unsigned long l[2];
double d;
} u_longlong_t;
#endif /* __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) */
typedef longlong_t offset_t;
typedef longlong_t diskaddr_t;
/*
* Partial support for 64-bit file offset enclosed herein,
* specifically used to access devices greater than 2gb.
* However, support for devices greater than 2gb requires compiler
* support for long long.
* XXX These assume big-endian machines XXX
*/
typedef union lloff {
offset_t _f; /* Full 64 bit offset value */
struct {
long _u; /* upper 32 bits of offset value */
off_t _l; /* lower 32 bits of offset value */
} _p;
} lloff_t;
typedef union lldaddr {
diskaddr_t _f; /* Full 64 bit disk address value */
struct {
long _u; /* upper 32 bits of disk address value */
daddr_t _l; /* lower 32 bits of disk address value */
} _p;
} lldaddr_t;
typedef ulong_t k_fltset_t; /* kernel fault set type */
typedef long id_t; /* A process id, */
/* process group id, */
/* session id, */
/* scheduling class id, */
/* user id, or group id.*/
/* Typedefs for dev_t components */
typedef ulong_t major_t; /* major part of device number */
typedef ulong_t minor_t; /* minor part of device number */
typedef short pri_t;
/*
* For compatilbility reasons the following typedefs (prefixed o_)
* can't grow regardless of the EFT definition. Although,
* applications should not explicitly use these typedefs
* they may be included via a system header definition.
* WARNING: These typedefs may be removed in a future
* release.
* ex. the definitions in s5inode.h remain small
* to preserve compatibility in the S5
* file system type.
*/
typedef ushort_t o_mode_t; /* old file attribute type */
typedef short o_dev_t; /* old device type */
typedef ushort_t o_uid_t; /* old UID type */
typedef o_uid_t o_gid_t; /* old GID type */
typedef short o_nlink_t; /* old file link type */
typedef short o_pid_t; /* old process id type */
typedef ushort_t o_ino_t; /* old inode type */
/* POSIX and XOPEN Declarations */
typedef int key_t; /* IPC key type */
typedef ulong_t mode_t; /* file attribute type */
#ifndef _UID_T
#define _UID_T
typedef long uid_t; /* UID type */
#endif
typedef uid_t gid_t; /* GID type */
typedef ulong_t nlink_t; /* file link type */
typedef ulong_t dev_t; /* expanded device type */
typedef ulong_t ino_t; /* expanded inode type */
typedef long pid_t; /* process id type */
#ifndef _SIZE_T
#define _SIZE_T
typedef uint_t size_t; /* len param for string funcs */
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
typedef int ssize_t; /* used by functions which return a */
/* count of bytes or an error indication */
#endif
#ifndef _TIME_T
#define _TIME_T
typedef long time_t; /* time of day in seconds */
#endif /* END _TIME_T */
#ifndef _CLOCK_T
#define _CLOCK_T
typedef long clock_t; /* relative time in a specified resolution */
#endif /* ifndef _CLOCK_T */
#if (defined(_KERNEL) || !defined(_POSIX_SOURCE))
typedef unsigned char unchar;
typedef unsigned int uint;
typedef unsigned long ulong;
#if defined(_KERNEL)
#define SHRT_MIN -32768 /* min value of a "short int" */
#define SHRT_MAX 32767 /* max value of a "short int" */
#define USHRT_MAX 65535u /* max value of an "unsigned short int" */
#define INT_MIN (-2147483647-1) /* min value of an "int" */
#define INT_MAX 2147483647 /* max value of an "int" */
#define UINT_MAX 4294967295u /* max value of an "unsigned int" */
#define LONG_MIN (-2147483647-1) /* min value of a "long int" */
#define LONG_MAX 2147483647 /* max value of a "long int" */
#define ULONG_MAX 4294967295u /* max value of an "unsigned long int" */
#endif /* defined(_KERNEL) */
#define P_MYPID ((pid_t)0)
/*
* The following is the value of type id_t to use to indicate the
* caller's current id. See procset.h for the type idtype_t
* which defines which kind of id is being specified.
*/
#define P_MYID (-1)
#define NOPID (pid_t)(-1)
#ifndef NODEV
#define NODEV (dev_t)(-1)
#endif
/*
* A host identifier is used to uniquely define a particular node
* on an rfs network. Its type is as follows.
*/
typedef long hostid_t;
/*
* The following value of type hostid_t is used to indicate the
* current host. The actual hostid for each host is in the
* kernel global variable rfs_hostid.
*/
#define P_MYHOSTID (-1)
#endif /* END (defined(_KERNEL) || !defined(_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 III compat */
typedef struct _quad { long val[2]; } quad; /* used by UFS */
/*
* These were added to allow non-ANSI compilers to compile the system.
*/
#ifdef __STDC__
#ifndef _VOID
#define _VOID void
#endif
/* End of ANSI section */
#else
#ifndef _VOID
#define _VOID char
#endif
#ifndef const
#define const
#endif
#ifndef volatile
#define volatile
#endif
#endif /* of non-ANSI section */
/*
* Nested include for BSD/sockets source compatibility.
* (The select macros used to be defined here).
*/
#include <sys/select.h>
/*
* Nested include for BSD compatibility.
*/
#define AHZ 64
#include <sys/sysmacros.h>
#endif /* _SYS_TYPES_H */