lib/libc/minimal: Refined handle duplicate time definitions
Follow the approach of newlib to use a file sys/_types.h to specify the underlying type for POSIX/libc types that must be provided in multiple headers. The identifier for this type is in the reserved namespace. Use this type rather than a specific standard type in all headers that need to provide the type under its public name. Remove the inclusion of <sys/types.h> from headers that should not bring in all symbols present in that header, replacing it with the standard boilerplate to expose the specific symbols that are required. Signed-off-by: Peter A. Bigot <pab@pabigot.com>
This commit is contained in:
parent
daf9f11024
commit
ef4cd6a1ab
5 changed files with 46 additions and 6 deletions
|
@ -7,7 +7,17 @@
|
||||||
#ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMESPEC_H_
|
#ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMESPEC_H_
|
||||||
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMESPEC_H_
|
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMESPEC_H_
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/_types.h>
|
||||||
|
|
||||||
|
#if !defined(__time_t_defined)
|
||||||
|
#define __time_t_defined
|
||||||
|
typedef _TIME_T_ time_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__suseconds_t_defined)
|
||||||
|
#define __suseconds_t_defined
|
||||||
|
typedef _SUSECONDS_T_ suseconds_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
struct timespec {
|
struct timespec {
|
||||||
time_t tv_sec;
|
time_t tv_sec;
|
||||||
|
|
|
@ -7,7 +7,17 @@
|
||||||
#ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMEVAL_H_
|
#ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMEVAL_H_
|
||||||
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMEVAL_H_
|
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS__TIMEVAL_H_
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/_types.h>
|
||||||
|
|
||||||
|
#if !defined(__time_t_defined)
|
||||||
|
#define __time_t_defined
|
||||||
|
typedef _TIME_T_ time_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__suseconds_t_defined)
|
||||||
|
#define __suseconds_t_defined
|
||||||
|
typedef _SUSECONDS_T_ suseconds_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
struct timeval {
|
struct timeval {
|
||||||
time_t tv_sec;
|
time_t tv_sec;
|
||||||
|
|
18
lib/libc/minimal/include/sys/_types.h
Normal file
18
lib/libc/minimal/include/sys/_types.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Peter Bigot Consulting, LLC
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Common header used to define underlying types for typedefs that
|
||||||
|
* must appear in multiple headers independently.
|
||||||
|
*/
|
||||||
|
#ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS_XTYPES_H_
|
||||||
|
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS_XTYPES_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
typedef int64_t _TIME_T_;
|
||||||
|
typedef int32_t _SUSECONDS_T_;
|
||||||
|
|
||||||
|
#endif /* ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS_XTYPES_H_ */
|
|
@ -9,6 +9,7 @@
|
||||||
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS_TYPES_H_
|
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_SYS_TYPES_H_
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <sys/_types.h>
|
||||||
|
|
||||||
typedef unsigned int mode_t;
|
typedef unsigned int mode_t;
|
||||||
|
|
||||||
|
@ -44,12 +45,12 @@ typedef int off_t;
|
||||||
|
|
||||||
#if !defined(__time_t_defined)
|
#if !defined(__time_t_defined)
|
||||||
#define __time_t_defined
|
#define __time_t_defined
|
||||||
typedef int64_t time_t;
|
typedef _TIME_T_ time_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__suseconds_t_defined)
|
#if !defined(__suseconds_t_defined)
|
||||||
#define __suseconds_t_defined
|
#define __suseconds_t_defined
|
||||||
typedef int32_t suseconds_t;
|
typedef _SUSECONDS_T_ suseconds_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__mem_word_t_defined)
|
#if !defined(__mem_word_t_defined)
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_TIME_H_
|
#define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_TIME_H_
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <sys/_types.h>
|
||||||
#include <bits/restrict.h>
|
#include <bits/restrict.h>
|
||||||
|
|
||||||
/* Minimal time.h to fulfill the requirements of certain libraries
|
/* Minimal time.h to fulfill the requirements of certain libraries
|
||||||
|
@ -33,12 +34,12 @@ struct tm {
|
||||||
|
|
||||||
#if !defined(__time_t_defined)
|
#if !defined(__time_t_defined)
|
||||||
#define __time_t_defined
|
#define __time_t_defined
|
||||||
typedef int64_t time_t;
|
typedef _TIME_T_ time_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__suseconds_t_defined)
|
#if !defined(__suseconds_t_defined)
|
||||||
#define __suseconds_t_defined
|
#define __suseconds_t_defined
|
||||||
typedef int32_t suseconds_t;
|
typedef _SUSECONDS_T_ suseconds_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/_timespec.h>
|
#include <sys/_timespec.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue