[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH] Fix selectively included type definitions
Hi Florian, That's certainly a cleaner patch, thanks a lot! I'll upstream this one, and mark "Add sys/types.h to the mman header" as superseded on patchwork. -- Felipe Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> On 26.03.19, 14:51, "Florian Schmidt" <Florian.Schmidt@xxxxxxxxx> wrote: The newlib glue code use code originally taken from musl. In musl, the way to selectively include certain data types from those defined in types.h is by the use of __NEED_* macros. Newlib uses a different approach: it provides all definitions as underscored variants via sys/_types.h, and the header files then typedef them over to the normal variants as needed, with preprocessor guards around each of them to provent duplications. Replace the __NEED macros (which are effectively noops, so none of those data types ever got properly defined in those headers) with the newlib _types solution. Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> --- include/dirent.h | 19 ++++++++++++++++--- include/sys/mman.h | 23 +++++++++++++++++++---- include/sys/resource.h | 11 +++++++++-- include/sys/statvfs.h | 14 +++++++++++--- 4 files changed, 55 insertions(+), 12 deletions(-) diff --git a/include/dirent.h b/include/dirent.h index 37589b4..8532930 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -31,10 +31,23 @@ extern "C" { #endif -#define __NEED_ino_t -#define __NEED_off_t +#include <sys/_types.h> + +#ifndef _INO_T_DECLARED +typedef __ino_t ino_t; +#define _INO_T_DECLARED +#endif + +#ifndef _OFF_T_DECLARED +typedef __off_t off_t; +#define _OFF_T_DECLARED +#endif + #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) -#define __NEED_size_t +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif #endif typedef struct __dirstream DIR; diff --git a/include/sys/mman.h b/include/sys/mman.h index 7abf57f..147ed5d 100644 --- a/include/sys/mman.h +++ b/include/sys/mman.h @@ -30,14 +30,29 @@ extern "C" { #endif +#include <sys/_types.h> #include <stddef.h> -#define __NEED_mode_t -#define __NEED_size_t -#define __NEED_off_t +#ifndef _OFF_T_DECLARED +typedef __off_t off_t; +#define _OFF_T_DECLARED +#endif + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +#ifndef _MODE_T_DECLARED +typedef __mode_t mode_t; +#define _MODE_T_DECLARED +#endif #if defined(_GNU_SOURCE) -#define __NEED_ssize_t +#ifndef _SSIZE_T_DECLARED +typedef __ssize_t ssize_t; +#define _SSIZE_T_DECLARED +#endif #endif #define MAP_FAILED ((void *) -1) diff --git a/include/sys/resource.h b/include/sys/resource.h index 5174b65..82eb631 100644 --- a/include/sys/resource.h +++ b/include/sys/resource.h @@ -31,12 +31,19 @@ extern "C" { #endif +#include <sys/_types.h> #include <sys/time.h> -#define __NEED_id_t +#ifndef _ID_T_DECLARED +typedef __id_t id_t; +#define _ID_T_DECLARED +#endif #ifdef _GNU_SOURCE -#define __NEED_pid_t +#ifndef _PID_T_DECLARED +typedef __pid_t pid_t; +#define _PID_T_DECLARED +#endif #endif typedef unsigned long long rlim_t; diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h index 0357eec..96ef851 100644 --- a/include/sys/statvfs.h +++ b/include/sys/statvfs.h @@ -31,10 +31,18 @@ extern "C" { #endif -#define __NEED_fsblkcnt_t -#define __NEED_fsfilcnt_t -#include <sys/types.h> #include <endian.h> +#include <sys/_types.h> + +#ifndef _FSBLKCNT_T_DECLARED +typedef __fsblkcnt_t fsblkcnt_t; +#define _FSBLKCNT_T_DECLARED +#endif + +#ifndef _FSFILCNT_T_DECLARED +typedef __fsfilcnt_t fsfilcnt_t; +#define _FSFILCNT_T_DECLARED +#endif struct statvfs { unsigned long f_bsize, f_frsize; -- 2.21.0 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |