Initial version.
This commit is contained in:
151
src/nxt_types.h
Normal file
151
src/nxt_types.h
Normal file
@@ -0,0 +1,151 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) Igor Sysoev
|
||||
* Copyright (C) NGINX, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _NXT_TYPES_H_INCLUDED_
|
||||
#define _NXT_TYPES_H_INCLUDED_
|
||||
|
||||
|
||||
/*
|
||||
* nxt_int_t corresponds to the most efficient integer type,
|
||||
* an architecture word. It is usually the long type,
|
||||
* but on Win64 the long is int32_t, so pointer size suits better.
|
||||
* nxt_int_t must be no less than int32_t.
|
||||
*/
|
||||
|
||||
#if (__amd64__)
|
||||
/*
|
||||
* AMD64 64-bit multiplication and division operations
|
||||
* are slower and 64-bit instructions are longer.
|
||||
*/
|
||||
#define NXT_INT_T_SIZE 4
|
||||
typedef int nxt_int_t;
|
||||
typedef u_int nxt_uint_t;
|
||||
|
||||
#else
|
||||
#define NXT_INT_T_SIZE NXT_PTR_SIZE
|
||||
typedef intptr_t nxt_int_t;
|
||||
typedef uintptr_t nxt_uint_t;
|
||||
#endif
|
||||
|
||||
|
||||
typedef nxt_uint_t nxt_bool_t;
|
||||
|
||||
|
||||
/*
|
||||
* nxt_off_t corresponds to OS's off_t, a file offset type.
|
||||
* Although Linux, Solaris, and HP-UX define both off_t and off64_t,
|
||||
* setting _FILE_OFFSET_BITS to 64 defines off_t as off64_t.
|
||||
*/
|
||||
typedef off_t nxt_off_t;
|
||||
|
||||
|
||||
/*
|
||||
* nxt_time_t corresponds to OS's time_t, time in seconds. nxt_time_t is
|
||||
* a signed integer. OS's time_t may be an integer or real-floating type,
|
||||
* though it is usually a signed 32-bit or 64-bit integer depending on
|
||||
* platform bit count. There are however exceptions, e.g., time_t is:
|
||||
* 32-bit on 64-bit NetBSD prior to 6.0 version;
|
||||
* 64-bit on 32-bit NetBSD 6.0;
|
||||
* 32-bit on 64-bit OpenBSD;
|
||||
* 64-bit in Linux x32 ABI;
|
||||
* 64-bit in 32-bit Visual Studio C++ 2005.
|
||||
*/
|
||||
#if (NXT_QNX)
|
||||
/*
|
||||
* QNX defines time_t as uint32_t.
|
||||
* Y2038 fix: "typedef int64_t nxt_time_t".
|
||||
*/
|
||||
typedef int32_t nxt_time_t;
|
||||
|
||||
#else
|
||||
/* Y2038, if time_t is 32-bit integer. */
|
||||
typedef time_t nxt_time_t;
|
||||
#endif
|
||||
|
||||
|
||||
#if (NXT_PTR_SIZE == 8)
|
||||
#define NXT_64BIT 1
|
||||
#define NXT_32BIT 0
|
||||
|
||||
#else
|
||||
#define NXT_64BIT 0
|
||||
#define NXT_32BIT 1
|
||||
#endif
|
||||
|
||||
|
||||
#define NXT_INT64_T_LEN (sizeof("-9223372036854775808") - 1)
|
||||
#define NXT_INT32_T_LEN (sizeof("-2147483648") - 1)
|
||||
|
||||
#define NXT_INT64_T_HEXLEN (sizeof("fffffffffffffffff") - 1)
|
||||
#define NXT_INT32_T_HEXLEN (sizeof("ffffffff") - 1)
|
||||
|
||||
#define NXT_INT64_T_MAX 0x7fffffffffffffffLL
|
||||
#define NXT_INT32_T_MAX 0x7fffffff
|
||||
|
||||
|
||||
#if (NXT_INT_T_SIZE == 8)
|
||||
#define NXT_INT_T_LEN NXT_INT64_T_LEN
|
||||
#define NXT_INT_T_HEXLEN NXT_INT64_T_HEXLEN
|
||||
#define NXT_INT_T_MAX NXT_INT64_T_MAX
|
||||
|
||||
#else
|
||||
#define NXT_INT_T_LEN NXT_INT32_T_LEN
|
||||
#define NXT_INT_T_HEXLEN NXT_INT32_T_HEXLEN
|
||||
#define NXT_INT_T_MAX NXT_INT32_T_MAX
|
||||
#endif
|
||||
|
||||
|
||||
#if (NXT_64BIT)
|
||||
#define NXT_ATOMIC_T_LEN NXT_INT64_T_LEN
|
||||
#define NXT_ATOMIC_T_HEXLEN NXT_INT64_T_HEXLEN
|
||||
#define NXT_ATOMIC_T_MAX NXT_INT64_T_MAX
|
||||
|
||||
#else
|
||||
#define NXT_ATOMIC_T_LEN NXT_INT32_T_LEN
|
||||
#define NXT_ATOMIC_T_HEXLEN NXT_INT32_T_HEXLEN
|
||||
#define NXT_ATOMIC_T_MAX NXT_INT32_T_MAX
|
||||
#endif
|
||||
|
||||
|
||||
#if (NXT_OFF_T_SIZE == 8)
|
||||
typedef uint64_t nxt_uoff_t;
|
||||
#define NXT_OFF_T_LEN NXT_INT64_T_LEN
|
||||
#define NXT_OFF_T_HEXLEN NXT_INT64_T_HEXLEN
|
||||
#define NXT_OFF_T_MAX NXT_INT64_T_MAX
|
||||
|
||||
#else
|
||||
typedef uint32_t nxt_uoff_t;
|
||||
#define NXT_OFF_T_LEN NXT_INT32_T_LEN
|
||||
#define NXT_OFF_T_HEXLEN NXT_INT32_T_HEXLEN
|
||||
#define NXT_OFF_T_MAX NXT_INT32_T_MAX
|
||||
#endif
|
||||
|
||||
|
||||
#if (NXT_SIZE_T_SIZE == 8)
|
||||
#define NXT_SIZE_T_LEN NXT_INT64_T_LEN
|
||||
#define NXT_SIZE_T_HEXLEN NXT_INT64_T_HEXLEN
|
||||
#define NXT_SIZE_T_MAX NXT_INT64_T_MAX
|
||||
|
||||
#else
|
||||
#define NXT_SIZE_T_LEN NXT_INT32_T_LEN
|
||||
#define NXT_SIZE_T_HEXLEN NXT_INT32_T_HEXLEN
|
||||
#define NXT_SIZE_T_MAX NXT_INT32_T_MAX
|
||||
#endif
|
||||
|
||||
|
||||
#if (NXT_TIME_T_SIZE == 8)
|
||||
#define NXT_TIME_T_LEN NXT_INT64_T_LEN
|
||||
#define NXT_TIME_T_HEXLEN NXT_INT64_T_HEXLEN
|
||||
#define NXT_TIME_T_MAX NXT_INT64_T_MAX
|
||||
|
||||
#else
|
||||
#define NXT_TIME_T_LEN NXT_INT32_T_LEN
|
||||
#define NXT_TIME_T_HEXLEN NXT_INT32_T_HEXLEN
|
||||
#define NXT_TIME_T_MAX NXT_INT32_T_MAX
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _NXT_TYPES_H_INCLUDED_ */
|
||||
Reference in New Issue
Block a user