aboutsummaryrefslogtreecommitdiffstats
path: root/tools/include/nolibc/nolibc.h
diff options
context:
space:
mode:
authorWilly Tarreau <w@1wt.eu>2022-02-07 17:23:15 +0100
committerPaul E. McKenney <paulmck@kernel.org>2022-04-20 17:05:33 -0700
commit967cce191f50090d5cbd3841ee2bbb7835afeae2 (patch)
treed3ba18552f94d51995b95f61a3b247be9a0acbaa /tools/include/nolibc/nolibc.h
parenttools/nolibc: guard the main file against multiple inclusion (diff)
downloadlinux-stable-967cce191f50090d5cbd3841ee2bbb7835afeae2.tar.xz
linux-stable-967cce191f50090d5cbd3841ee2bbb7835afeae2.zip
tools/nolibc/std: move the standard type definitions to std.h
The ordering of includes and definitions for now is a bit of a mess, as for example asm/signal.h is included after int definitions, but plenty of structures are defined later as they rely on other includes. Let's move the standard type definitions to a dedicated file that is included first. We also move NULL there. This way all other includes are aware of it, and we can bring asm/signal.h back to the top of the file. Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/include/nolibc/nolibc.h')
-rw-r--r--tools/include/nolibc/nolibc.h42
1 files changed, 5 insertions, 37 deletions
diff --git a/tools/include/nolibc/nolibc.h b/tools/include/nolibc/nolibc.h
index 4660637d9b17..186a78c25326 100644
--- a/tools/include/nolibc/nolibc.h
+++ b/tools/include/nolibc/nolibc.h
@@ -83,7 +83,12 @@
#ifndef _NOLIBC_H
#define _NOLIBC_H
+/* standard type definitions */
+#include "std.h"
+
+/* system includes */
#include <asm/unistd.h>
+#include <asm/signal.h> // for SIGCHLD
#include <asm/ioctls.h>
#include <asm/errno.h>
#include <linux/fs.h>
@@ -106,40 +111,6 @@ static int errno;
*/
#define MAX_ERRNO 4095
-/* Declare a few quite common macros and types that usually are in stdlib.h,
- * stdint.h, ctype.h, unistd.h and a few other common locations.
- */
-
-#define NULL ((void *)0)
-
-/* stdint types */
-typedef unsigned char uint8_t;
-typedef signed char int8_t;
-typedef unsigned short uint16_t;
-typedef signed short int16_t;
-typedef unsigned int uint32_t;
-typedef signed int int32_t;
-typedef unsigned long long uint64_t;
-typedef signed long long int64_t;
-typedef unsigned long size_t;
-typedef signed long ssize_t;
-typedef unsigned long uintptr_t;
-typedef signed long intptr_t;
-typedef signed long ptrdiff_t;
-
-/* for stat() */
-typedef unsigned int dev_t;
-typedef unsigned long ino_t;
-typedef unsigned int mode_t;
-typedef signed int pid_t;
-typedef unsigned int uid_t;
-typedef unsigned int gid_t;
-typedef unsigned long nlink_t;
-typedef signed long off_t;
-typedef signed long blksize_t;
-typedef signed long blkcnt_t;
-typedef signed long time_t;
-
/* for poll() */
struct pollfd {
int fd;
@@ -248,9 +219,6 @@ struct stat {
#define WEXITSTATUS(status) (((status) & 0xff00) >> 8)
#define WIFEXITED(status) (((status) & 0x7f) == 0)
-/* for SIGCHLD */
-#include <asm/signal.h>
-
/* Below comes the architecture-specific code. For each architecture, we have
* the syscall declarations and the _start code definition. This is the only
* global part. On all architectures the kernel puts everything in the stack