Merge tmacros.h PRIxxx constants from testsuites/ into <rtems/inttypes.h>

This completes the initial creation of rtems/inttypes.h based on all
existing PRIxxx definitions contained in RTEMS Project owned code.

closes #2983.
This commit is contained in:
Joel Sherrill
2017-04-14 15:18:56 -05:00
parent 54bdf0c7e5
commit d420b679af
3 changed files with 77 additions and 61 deletions

View File

@@ -238,6 +238,30 @@ RTEMS_CPUOPT([__RTEMS_ADA__],
[1],
[Define to 1 if ada/gnat bindings are built-in])
# These are used to provide <rtems/inttypes.h
AC_CHECK_SIZEOF([mode_t])
AC_CHECK_SIZEOF([off_t])
AC_CHECK_SIZEOF([time_t])
AC_CHECK_SIZEOF([size_t])
## Provide sizeof(mode_t) information via cpuopts.h
RTEMS_CPUOPT([__RTEMS_SIZEOF_MODE_T__],
[true],
[${ac_cv_sizeof_mode_t}],
[sizeof(mode_t)])
## Provide sizeof(off_t) information via cpuopts.h
RTEMS_CPUOPT([__RTEMS_SIZEOF_OFF_T__],
[true],
[${ac_cv_sizeof_off_t}],
[sizeof(off_t)])
## Provide sizeof(time_t) information via cpuopts.h
RTEMS_CPUOPT([__RTEMS_SIZEOF_TIME_T__],
[true],
[${ac_cv_sizeof_time_t}],
[sizeof(time_t)])
## Then we propagate a private copy of the value into cpuopts.h
## so it is always available to the RTEMS header files.
@@ -251,7 +275,7 @@ RTEMS_CPUOPT([__RTEMS_MINOR__],
[$rtems_minor],
[minor version portion of an RTEMS release])
RTEMS_CPUOPT([__RTEMS_REVISION__],
RTEMS_CPUOPT([__RTEMS_REVISION___],
[true],
[$rtems_revision],
[revision version portion of an RTEMS release])
@@ -278,16 +302,6 @@ RTEMS_CHECK_GCC_WEAK
AC_CHECK_DECLS([_POSIX_LOGIN_NAME_MAX],,,[#include <limits.h>])
AC_CHECK_DECLS([CHAR_BIT],,,[#include <limits.h>])
# FIXME: We should get rid of this.
# So far, only used in libfs/src/nfsclient/src/dirutils.c
AC_CHECK_SIZEOF([mode_t])
AC_CHECK_SIZEOF([off_t])
# FIXME: We should get rid of this. It's a cludge.
AC_CHECK_SIZEOF([time_t])
AC_CHECK_SIZEOF([size_t])
# FIXME: Mandatory in SUSv4, optional in SUSv3.
# Not implemented in GCC/newlib, so far.
AC_CHECK_DECLS([WORD_BIT],,,[#include <limits.h>])

View File

@@ -21,6 +21,7 @@
#define _RTEMS_INTTYPES_H
#include <inttypes.h>
#include <rtems/score/cpuopts.h>
#ifdef __cplusplus
extern "C" {
@@ -34,41 +35,82 @@ extern "C" {
*/
/** Helper macro to print "modet" in octal */
#if SIZEOF_MODE_T == 8
#if __RTEMS_SIZEOF_MODE_T__ == 8
#define PRIomode_t PRIo64
#elif SIZEOF_MODE_T == 4
#elif __RTEMS_SIZEOF_MODE_T__ == 4
#define PRIomode_t PRIo32
#else
#error "PRIomode_t: unsupport size of mode_t"
#error "PRIomode_t: unsupported size of mode_t"
#endif
/** Helper macro to print "off_t" in octal */
#if SIZEOF_OFF_T == 8
#if __RTEMS_SIZEOF_OFF_T__ == 8
#define PRIooff_t PRIo64
#elif SIZEOF_OFF_T == 4
#elif __RTEMS_SIZEOF_OFF_T__ == 4
#define PRIooff_t PRIo32
#else
#error "PRIooff_t: unsupported size of off_t"
#endif
/** Helper macro to print "off_t" in decimal */
#if SIZEOF_OFF_T == 8
#if __RTEMS_SIZEOF_OFF_T__ == 8
#define PRIdoff_t PRId64
#elif SIZEOF_OFF_T == 4
#elif __RTEMS_SIZEOF_OFF_T__ == 4
#define PRIdoff_t PRId32
#else
#error "PRIdoff_t: unsupported size of off_t"
#endif
/** Helper macro to print "time_t" in decimal */
#if SIZEOF_TIME_T == 8
#if __RTEMS_SIZEOF_TIME_T__ == 8
#define PRIdtime_t PRId64
#elif SIZEOF_TIME_T == 4
#elif __RTEMS_SIZEOF_TIME_T__ == 4
#define PRIdtime_t PRId32
#else
#error "PRIdtime_t: unsupported size of time_t"
#endif
/*
* Various inttypes.h-stype macros to assist printing
* certain system types on different targets.
*/
#if defined(RTEMS_USE_16_BIT_OBJECT)
#define PRIxrtems_id PRIx16
#else
#define PRIxrtems_id PRIx32
#endif
/* c.f. cpukit/score/include/rtems/score/priority.h */
#define PRIdPriority_Control PRIu64
#define PRIxPriority_Control PRIx64
/* rtems_task_priority is a typedef to Priority_Control */
#define PRIdrtems_task_priority PRIu32
#define PRIxrtems_task_priority PRIx32
/* c.f. cpukit/score/include/rtems/score/watchdog.h */
#define PRIdWatchdog_Interval PRIu32
/* rtems_interval is a typedef to Watchdog_Interval */
#define PRIdrtems_interval PRIdWatchdog_Interval
/* c.f. cpukit/score/include/rtems/score/thread.h */
#define PRIdThread_Entry_numeric_type PRIuPTR
/* rtems_task_argument is a typedef to Thread_Entry_numeric_type */
#define PRIdrtems_task_argument PRIdThread_Entry_numeric_type
/* rtems_event_set is a typedef to unit32_t */
#define PRIxrtems_event_set PRIx32
/* HACK: newlib defines pthread_t as a typedef to __uint32_t */
/* HACK: There is no portable way to print pthread_t's */
#define PRIxpthread_t PRIx32
/* rtems_signal_set is a typedef to uint32_t */
#define PRIxrtems_signal_set PRIx32
/* newlib's ino_t is a typedef to "unsigned long" */
#define PRIxino_t "lx"
/**@}*/
#ifdef __cplusplus

View File

@@ -18,6 +18,7 @@
#define __TMACROS_h
#include <inttypes.h>
#include <rtems/inttypes.h>
#include <bsp.h> /* includes <rtems.h> */
#include <ctype.h>
@@ -305,47 +306,6 @@ extern "C" {
} \
} while (0)
/*
* Various inttypes.h-stype macros to assist printing
* certain system types on different targets.
*/
#if defined(RTEMS_USE_16_BIT_OBJECT)
#define PRIxrtems_id PRIx16
#else
#define PRIxrtems_id PRIx32
#endif
/* c.f. cpukit/score/include/rtems/score/priority.h */
#define PRIdPriority_Control PRIu64
#define PRIxPriority_Control PRIx64
/* rtems_task_priority is a typedef to Priority_Control */
#define PRIdrtems_task_priority PRIu32
#define PRIxrtems_task_priority PRIx32
/* c.f. cpukit/score/include/rtems/score/watchdog.h */
#define PRIdWatchdog_Interval PRIu32
/* rtems_interval is a typedef to Watchdog_Interval */
#define PRIdrtems_interval PRIdWatchdog_Interval
/* c.f. cpukit/score/include/rtems/score/thread.h */
#define PRIdThread_Entry_numeric_type PRIuPTR
/* rtems_task_argument is a typedef to Thread_Entry_numeric_type */
#define PRIdrtems_task_argument PRIdThread_Entry_numeric_type
/* rtems_event_set is a typedef to unit32_t */
#define PRIxrtems_event_set PRIx32
/* HACK: newlib defines pthread_t as a typedef to __uint32_t */
/* HACK: There is no portable way to print pthread_t's */
#define PRIxpthread_t PRIx32
/* rtems_signal_set is a typedef to uint32_t */
#define PRIxrtems_signal_set PRIx32
/* newlib's ino_t is a typedef to "unsigned long" */
#define PRIxino_t "lx"
/**
* This assists in clearly disabling warnings on GCC in certain very
* specific cases.