1 /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2 /* 3 * Standard definitions and types for NOLIBC 4 * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu> 5 */ 6 7 #ifndef _NOLIBC_STD_H 8 #define _NOLIBC_STD_H 9 10 /* Declare a few quite common macros and types that usually are in stdlib.h, 11 * stdint.h, ctype.h, unistd.h and a few other common locations. Please place 12 * integer type definitions and generic macros here, but avoid OS-specific and 13 * syscall-specific stuff, as this file is expected to be included very early. 14 */ 15 16 /* note: may already be defined */ 17 #ifndef NULL 18 #define NULL ((void *)0) 19 #endif 20 21 /* stdint types */ 22 typedef unsigned char uint8_t; 23 typedef signed char int8_t; 24 typedef unsigned short uint16_t; 25 typedef signed short int16_t; 26 typedef unsigned int uint32_t; 27 typedef signed int int32_t; 28 typedef unsigned long long uint64_t; 29 typedef signed long long int64_t; 30 typedef unsigned long size_t; 31 typedef signed long ssize_t; 32 typedef unsigned long uintptr_t; 33 typedef signed long intptr_t; 34 typedef signed long ptrdiff_t; 35 36 /* those are commonly provided by sys/types.h */ 37 typedef unsigned int dev_t; 38 typedef unsigned long ino_t; 39 typedef unsigned int mode_t; 40 typedef signed int pid_t; 41 typedef unsigned int uid_t; 42 typedef unsigned int gid_t; 43 typedef unsigned long nlink_t; 44 typedef signed long off_t; 45 typedef signed long blksize_t; 46 typedef signed long blkcnt_t; 47 typedef signed long time_t; 48 49 #endif /* _NOLIBC_STD_H */ 50