Implementation details for RDM
Collaboration diagram for Implementation details for RDM:

Macros

#define RDM_ALLOCA_HAVE_ALLOCA
#define RDM_ALLOCA_HAVE_MALLOC_H_WITH_ALLOCA
#define RDM_ALLOCA_HAVE_VARIABLE_SIZE_ARRAY
#define RDM_ALLOCA_USES_MAX_SIZES
#define RDM_ASSERT_INFINITE_LOOP
#define RDM_ATOMIC_INTEGRITY
#define RDM_ATOMIC_NO
#define RDM_ATOMIC_UNIX
#define RDM_ATOMIC_WINDOWS
#define RDM_COLLATE_HAVE_XLOCALE_H
#define RDM_COLLATE_NO
#define RDM_COLLATE_REENTRANT
#define RDM_COLLATE_UNIX
#define RDM_COLLATE_WINDOWS
#define RDM_CONVERT_NO_PREPRO
#define RDM_CPP_HAVE_STD_STRING
#define RDM_DAEMON_NO
#define RDM_DAEMON_UNIX
#define RDM_ENV_HAVE_GETIFADDRS
#define RDM_ENV_NO
#define RDM_ENV_LINUX
#define RDM_ENV_OSX
#define RDM_ENV_UNIX
#define RDM_ENV_VXWORKS
#define RDM_ENV_VXWORKS_RTP
#define RDM_ENV_WINDOWS
#define RDM_EXPANDABLE_NO_FLEXIBLE_ARRAY_MEMBER
#define RDM_FEATURES_GNU_SOURCE
#define RDM_FEATURES_POSIX_C_SOURCE
#define RDM_FEATURES_REENTRANT
#define RDM_FEATURES_RW_MULTI_THREAD
#define RDM_FEATURES__EXTENSIONS__
#define RDM_FILE_HAVE_DIR_SYNC
#define RDM_FILE_HAVE_FALLOCATE
#define RDM_FILE_HAVE_FLOCK
#define RDM_FILE_HAVE_FILE_ID
#define RDM_FILE_HAVE_LOCKF
#define RDM_FILE_HAVE_MADVISE
#define RDM_FILE_HAVE_MMAP
#define RDM_FILE_HAVE_POSIX_FADVISE
#define RDM_FILE_HAVE_PREAD
#define RDM_FILE_LOCK_NO
#define RDM_FILE_NO
#define RDM_FILE_MKDIR_WITH_ONE_PARAMETER
#define RDM_FILE_RED
#define RDM_FILE_STDIO
#define RDM_FILE_SET_ECHO_NO
#define RDM_FILE_UNIX
#define RDM_FILE_WINDOWS
#define RDM_FLOAT_BITMASKS_FOR_ISFINITE_AND_ISN
#define RDM_FLOAT_HAVE_FLOORF
#define RDM_FLOAT_HAVE_ISFINITE
#define RDM_LOGGING
#define RDM_LOGGING_NO
#define RDM_MATH_GCC_BUILTIN
#define RDM_MATH_CONST_VALUES_H
#define RDM_MATH_CONST_FLOAT_H
#define RDM_MEM_ALIGN_4K
#define RDM_MEM_MALLOC
#define RDM_MEM_MMAP
#define RDM_MEM_VXWORKS
#define RDM_MEM_NO
#define RDM_MEM_STATIC_SIZE
#define RDM_MEM_VIRTUAL_ALLOC
#define RDM_ODBC_UNICODE
#define RDM_SIGNAL_NO
#define RDM_STARTUP_WITH_10_ARGS
#define RDM_STR_HAVE_UNDERSCORE_SPRINTF_L
#define RDM_STR_ASSUME_SPRINTF_IS_SAFE
#define RDM_STR_HAVE_STRCASECMP
#define RDM_STR_HAVE_UNDERSCORE_STRICMP
#define RDM_STR_HAVE_UNDERSCORE_STRICMP_L
#define RDM_STR_HAVE_STRCASESTR
#define RDM_STR_HAVE_STRNCMP
#define RDM_STR_HAVE_STRTOK_R
#define RDM_STR_HAVE_STRTOK_S
#define RDM_STR_HAVE_ATOF
#define RDM_STR_HAVE_STRTOD
#define RDM_STR_HAVE_STRTOF
#define RDM_STR_HAVE_STRTOD_L
#define RDM_STR_HAVE_UNDERSCORE_STRTOD_L
#define RDM_STR_HAVE_STRTOLL
#define RDM_STR_HAVE_STRTOLL_L
#define RDM_STR_HAVE_UNDERSCORE_STRTOLL_L
#define RDM_STR_HAVE_UNDERSCORE_STRUPR
#define RDM_STR_HAVE_UNDERSCORE_STRUPR_L
#define RDM_TAG_HAVE_FFSLL
#define RDM_TRANSPORT_HAVE_TCP
#define RDM_TRANSPORT_HAVE_TCP
#define RDM_TRANSPORT_TCP_ACCEPT_NO_DELAY
#define RDM_TRANSPORT_TCP_CONNECT_NO_DELAY
#define RDM_TRANSPORT_TCP_DONT_USE_KEEPALIVES
#define RDM_TRANSPORT_TCP_HAVE_MSG_NOSIGNAL
#define RDM_TRANSPORT_TCP_HAVE_POLL
#define RDM_TRANSPORT_TCP_HAVE_QOS
#define RDM_TRANSPORT_TCP_LOCALHOST "127.0.0.1"
#define RDM_TRANSPORT_TCP_NO_IPV6
#define RDM_TRANSPORT_HAVE_SHARED_MEMORY
#define RDM_THREAD_BASE_PRIORITY
#define RDM_THREAD_CALL_PTHREAD_SELF_ON_STARTUP
#define RDM_THREAD_FREE_RTOS
#define RDM_THREAD_INC_PRIORITY
#define RDM_THREAD_INTEGRITY
#define RDM_THREAD_NO
#define RDM_THREAD_PTHREAD
#define RDM_THREAD_VXWORKS
#define RDM_THREAD_WINDOWS
#define RDM_TIME_FREE_RTOS
#define RDM_TIME_HAVE_CLOCK_GETTIME
#define RDM_TIME_HAVE_TIME64_T
#define RDM_TIME_NO
#define RDM_TIME_UNIX
#define RDM_TIME_WINDOWS
#define RDM_UNIX
#define RDM_VARARGS_HAVE_VA_COPY
#define RDM_VSNPRINTF

Detailed Description

The defined here are for the most part only applicable when compiling using an RDM source package or an engineering build.

Regarding an object package this is provided here for your information.

Some defined have information about certain safety issues such as thread safeness, reentrancy, and locale dependencies.

Macro Definition Documentation

RDM_ALLOCA_HAVE_ALLOCA

#define RDM_ALLOCA_HAVE_ALLOCA

#include <pspplatos.h>

Have alloca (may be defined on some OS)

RDM_ALLOCA_HAVE_MALLOC_H_WITH_ALLOCA

#define RDM_ALLOCA_HAVE_MALLOC_H_WITH_ALLOCA

#include <pspplatos.h>

Have malloc.h that declares alloca (may be defined on some OS)

RDM_ALLOCA_HAVE_VARIABLE_SIZE_ARRAY

#define RDM_ALLOCA_HAVE_VARIABLE_SIZE_ARRAY

#include <pspplatos.h>

Have variable size arrays (may be defined on some OS)

RDM_ALLOCA_USES_MAX_SIZES

#define RDM_ALLOCA_USES_MAX_SIZES

#include <pspplatos.h>

Use the maximum sizes instead of actual size

Use the maximum sizes instead of actual size when dynamically allocating memory on the system stack. Consider using the other metods to save space since many platorms may have a limited stack size.

RDM_ASSERT_INFINITE_LOOP

#define RDM_ASSERT_INFINITE_LOOP

#include <pspplatos.h>

Implement assert using an infinite loop (may be defined on some OS)

RDM_ATOMIC_INTEGRITY

#define RDM_ATOMIC_INTEGRITY

#include <pspplatos.h>

Atomic integer implementation for Integrity (may be defined on some OS)

RDM_ATOMIC_NO

#define RDM_ATOMIC_NO

#include <pspplatos.h>

No atomic integer implementation (may be defined on some OS)

RDM_ATOMIC_UNIX

#define RDM_ATOMIC_UNIX

#include <pspplatos.h>

Atomic integer implementation for Unix (may be defined on some OS)

RDM_ATOMIC_WINDOWS

#define RDM_ATOMIC_WINDOWS

#include <pspplatos.h>

Atomic integer implementation for Windows (may be defined on some OS)

RDM_COLLATE_HAVE_XLOCALE_H

#define RDM_COLLATE_HAVE_XLOCALE_H

#include <pspplatos.h>

Get collate functinality from xlocale.h instead of locale.h

RDM_COLLATE_NO

#define RDM_COLLATE_NO

#include <pspplatos.h>

No implementation for string collate (may be defined on some OS)

RDM_COLLATE_REENTRANT

#define RDM_COLLATE_REENTRANT

#include <pspplatos.h>

Have reentrant versions of collate (may be defined on some OS)

RDM_COLLATE_UNIX

#define RDM_COLLATE_UNIX

#include <pspplatos.h>

Unix implementation for string collate (may be defined on some OS)

RDM_COLLATE_WINDOWS

#define RDM_COLLATE_WINDOWS

#include <pspplatos.h>

Windows implementation for string collate (may be defined on some OS)

RDM_CONVERT_NO_PREPRO

#define RDM_CONVERT_NO_PREPRO

#include <pspplatos.h>

Do not invode the C preprocessor for input file to rdm-convert (may be defined on some OS)

RDM_CPP_HAVE_STD_STRING

#define RDM_CPP_HAVE_STD_STRING

#include <pspplatos.h>

Have C++ standard String class (may be defined on some OS)

RDM_DAEMON_NO

#define RDM_DAEMON_NO

#include <pspplatos.h>

No Daemon implementation (may be defined on some OS)

RDM_DAEMON_UNIX

#define RDM_DAEMON_UNIX

#include <pspplatos.h>

Daemon implementation for Unix (may be defined on some OS)

RDM_ENV_HAVE_GETIFADDRS

#define RDM_ENV_HAVE_GETIFADDRS

#include <pspplatos.h>

Have getifaddrs (may be defined on some OS)

RDM_ENV_LINUX

#define RDM_ENV_LINUX

#include <pspplatos.h>

Envirionment implementation for Linux (may be defined on some OS)

RDM_ENV_NO

#define RDM_ENV_NO

#include <pspplatos.h>

No environment implementation (may be defined on some OS)

RDM_ENV_OSX

#define RDM_ENV_OSX

#include <pspplatos.h>

Envirionment implementation for macOS (may be defined on some OS)

RDM_ENV_UNIX

#define RDM_ENV_UNIX

#include <pspplatos.h>

Envirionment implementation for Unix (may be defined on some OS)

RDM_ENV_VXWORKS

#define RDM_ENV_VXWORKS

#include <pspplatos.h>

Envirionment implementation for Vxworks Kernel modules (may be defined on some OS)

RDM_ENV_VXWORKS_RTP

#define RDM_ENV_VXWORKS_RTP

#include <pspplatos.h>

Envirionment implementation for Vxworks RTP (may be defined on some OS)

RDM_ENV_WINDOWS

#define RDM_ENV_WINDOWS

#include <pspplatos.h>

Envirionment implementation for Windows (may be defined on some OS)

RDM_EXPANDABLE_NO_FLEXIBLE_ARRAY_MEMBER

#define RDM_EXPANDABLE_NO_FLEXIBLE_ARRAY_MEMBER

#include <pspplatos.h>

No support for flexible array members (last element of a sruct without specified array length)

RDM_FEATURES__EXTENSIONS__

#define RDM_FEATURES__EXTENSIONS__

#include <pspplatos.h>

Define EXTENSIONS (may be defined on some OS)

RDM_FEATURES_GNU_SOURCE

#define RDM_FEATURES_GNU_SOURCE

#include <pspplatos.h>

Define _GNU_SOURCE (may be defined on some OS)

RDM_FEATURES_POSIX_C_SOURCE

#define RDM_FEATURES_POSIX_C_SOURCE

#include <pspplatos.h>

Define _POSIX_C_SOURCE to the specified value (may be defined on some OS)

RDM_FEATURES_REENTRANT

#define RDM_FEATURES_REENTRANT

#include <pspplatos.h>

Define _REENTRANT (may be defined on some OS)

RDM_FEATURES_RW_MULTI_THREAD

#define RDM_FEATURES_RW_MULTI_THREAD

#include <pspplatos.h>

Define RW_MULTI_THREAD (may be defined on some OS)

RDM_FILE_HAVE_DIR_SYNC

#define RDM_FILE_HAVE_DIR_SYNC

#include <pspplatos.h>

Have the capability of syncing a directory (may be defined on some OS)

RDM_FILE_HAVE_FALLOCATE

#define RDM_FILE_HAVE_FALLOCATE

#include <pspplatos.h>

Have fallocate for punching holes in files (may be defined on some OS)

RDM_FILE_HAVE_FILE_ID

#define RDM_FILE_HAVE_FILE_ID

#include <pspplatos.h>

We have an implementation to get a unique ID for a file

This will only be defined for flavors of Unix, Linux, and Windows.

On Unix and Linux the device and inode numbers will be used as returned from fstat.

On Windows the volume serial number and the file index will be used as returned by GetFileInformationByHandle. This is not guaranteed to be unique with the ReFS file system and some 3rd party file systems and defragmentation tools.

RDM_FILE_HAVE_FLOCK

#define RDM_FILE_HAVE_FLOCK

#include <pspplatos.h>

Have flock for doing file locking (may be defined on some OS)

RDM_FILE_HAVE_LOCKF

#define RDM_FILE_HAVE_LOCKF

#include <pspplatos.h>

Have lockf for doing file locking (may be defined on some OS)

RDM_FILE_HAVE_MADVISE

#define RDM_FILE_HAVE_MADVISE

#include <pspplatos.h>

Have madvise

Have the capability of advising the kernal about memory access patterns (may be defined on some OS). This setting may improve overall system performance. We advise the kernal that memory mapped database file pages are references in random order.

RDM_FILE_HAVE_MMAP

#define RDM_FILE_HAVE_MMAP

#include <pspplatos.h>

Have the capability of memory mapping files using mmap on Unix or CreateFileMappingA/MapViewOfFile on Windows

RDM_FILE_HAVE_POSIX_FADVISE

#define RDM_FILE_HAVE_POSIX_FADVISE

#include <pspplatos.h>

Have posix_fadvise for paging out pages in the file cache (may be defined on some OS)

RDM_FILE_HAVE_PREAD

#define RDM_FILE_HAVE_PREAD

#include <pspplatos.h>

Have pread and pwrite (may be defined on some OS) or ReadFile and WriteFile on Windows (which have the same capabilities as the Unix functions)

RDM_FILE_LOCK_NO

#define RDM_FILE_LOCK_NO

#include <pspplatos.h>

No file locking (may be defined on some OS)

RDM_FILE_MKDIR_WITH_ONE_PARAMETER

#define RDM_FILE_MKDIR_WITH_ONE_PARAMETER

#include <pspplatos.h>

Function mkdir does only take one parameter

Note
mkdir may only take one argument on some versions of VxWorks with kernel modules

RDM_FILE_NO

#define RDM_FILE_NO

#include <pspplatos.h>

No file system implementation for unbuffered read and write and other file operations (may be defined on some OS)

RDM_FILE_RED

#define RDM_FILE_RED

#include <pspplatos.h>

Reliance Edge file system from Datalight

RDM_FILE_SET_ECHO_NO

#define RDM_FILE_SET_ECHO_NO

#include <pspplatos.h>

Set echo mode to a terminal is not implemented (may be defined on some OS)

RDM_FILE_STDIO

#define RDM_FILE_STDIO

#include <pspplatos.h>

Reading and writing of buffered files using stdio. No other file operations (may be defined on some OS)

RDM_FILE_UNIX

#define RDM_FILE_UNIX

#include <pspplatos.h>

Unix file system implementation for unbuffered read and write and other file operations (may be defined on some OS)

RDM_FILE_WINDOWS

#define RDM_FILE_WINDOWS

#include <pspplatos.h>

Windows file system implementation for unbuffered read and write and other file operations (may be defined on some OS)

RDM_FLOAT_BITMASKS_FOR_ISFINITE_AND_ISN

#define RDM_FLOAT_BITMASKS_FOR_ISFINITE_AND_ISN

#include <pspplatos.h>

Use bitmasks for determining IEEE-754 INF and NAN (may be defined on some OS)

RDM_FLOAT_HAVE_FLOORF

#define RDM_FLOAT_HAVE_FLOORF

#include <pspplatos.h>

Have floorf and ceilf (may be defined on some OS)

RDM_FLOAT_HAVE_ISFINITE

#define RDM_FLOAT_HAVE_ISFINITE

#include <pspplatos.h>

Have isfinite and isnan (may be defined on some OS)

RDM_LOGGING

#define RDM_LOGGING

#include <pspplatos.h>

A platform independent logging implementation (may be defined on some OS)

RDM_LOGGING_NO

#define RDM_LOGGING_NO

#include <pspplatos.h>

No logging implementation (may be defined on some OS)

RDM_MATH_CONST_FLOAT_H

#define RDM_MATH_CONST_FLOAT_H

#include <pspplatos.h>

Get floatingoint constants from float.h

RDM_MATH_CONST_VALUES_H

#define RDM_MATH_CONST_VALUES_H

#include <pspplatos.h>

Get floatingoint constants from values.h

RDM_MATH_GCC_BUILTIN

#define RDM_MATH_GCC_BUILTIN

#include <pspplatos.h>

Use GCC builtin for floatingoint constants

RDM_MEM_ALIGN_4K

#define RDM_MEM_ALIGN_4K

#include <pspplatos.h>

Dynamic memory allocated is 4K aligned (may be defined on some OS)

RDM_MEM_MALLOC

#define RDM_MEM_MALLOC

#include <pspplatos.h>

Dynamic memory allocation using malloc and request large blocks (may be defined on some OS)

RDM_MEM_MMAP

#define RDM_MEM_MMAP

#include <pspplatos.h>

Dynamic memory allocation using mmap on Unix and request large blocks (may be defined on some OS)

RDM_MEM_NO

#define RDM_MEM_NO

#include <pspplatos.h>

No dynamic memory allocation (may be defined on some OS)

RDM_MEM_STATIC_SIZE

#define RDM_MEM_STATIC_SIZE

#include <pspplatos.h>

Use a buffer of this size when allocating memory statically (may be defined on some OS)

RDM_MEM_VIRTUAL_ALLOC

#define RDM_MEM_VIRTUAL_ALLOC

#include <pspplatos.h>

Dynamic memory allocation using virtual_alloc on Windows and request large blocks (may be defined on some OS)

RDM_MEM_VXWORKS

#define RDM_MEM_VXWORKS

#include <pspplatos.h>

Dynamic memory allocation using memalign/free on VxWorks and request large blocks (may be defined on some OS)

RDM_ODBC_UNICODE

#define RDM_ODBC_UNICODE

#include <pspplatos.h>

ODBC driver support for Unicode

The ODBC driver include Unicode versions of all functions that accept pointers to character strings or SQLPOINTER in their arguments. The Unicode functions have a suffix of W. (May be defined on some OS).

RDM_SIGNAL_NO

#define RDM_SIGNAL_NO

#include <pspplatos.h>

No capability to handle signals

Note
This is defined where signals are not handled.

RDM_STARTUP_WITH_10_ARGS

#define RDM_STARTUP_WITH_10_ARGS

#include <pspplatos.h>

Use a startup function with 10 string arguments

We use this with VxWorks kernel modules for the application to be started directly from the VxWorks command prompt or the debugger.

RDM_STR_ASSUME_SPRINTF_IS_SAFE

#define RDM_STR_ASSUME_SPRINTF_IS_SAFE

#include <pspplatos.h>

Assume sprintf is safe for floating point numbers (may be defined on some OS)

Note
This assumes that sprintf is safe for converting floating point numbers to a string. This may not always be the case. Consider using RDM_STR_HAVE_UNDERSCORE_SPRINTF_L or none at all.

RDM_STR_HAVE_ATOF

#define RDM_STR_HAVE_ATOF

#include <pspplatos.h>

Have atof (may be defined on some OS)

Note
atof is not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_STRTOD_L instead

RDM_STR_HAVE_STRCASECMP

#define RDM_STR_HAVE_STRCASECMP

#include <pspplatos.h>

Have strcasecmp and strncasecmp (may be defined on some OS)

Note
strcasecmp and strncasecmp are not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_UNDERSCORE_STRICMP_L or none at all.

RDM_STR_HAVE_STRCASESTR

#define RDM_STR_HAVE_STRCASESTR

#include <pspplatos.h>

Have strcasestr (may be defined on some OS)

Note
strcasestr is not reentrant nor safe in an environment where the application sets the global locale. Consider not defining this at all.

RDM_STR_HAVE_STRNCMP

#define RDM_STR_HAVE_STRNCMP

#include <pspplatos.h>

Have strncmp (may be defined on some OS)

RDM_STR_HAVE_STRTOD

#define RDM_STR_HAVE_STRTOD

#include <pspplatos.h>

Have strtod (may be defined on some OS)

Note
strtod and strtof are not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_STRTOD_L or RDM_STR_HAVE_UNDERSCORE_STRTOD_L

RDM_STR_HAVE_STRTOD_L

#define RDM_STR_HAVE_STRTOD_L

#include <pspplatos.h>

Have strtof_l and strtod_l (may be defined on some OS)

Note
This uses strtof_l and strtod_l with a C locale instead of strtof and strtod as a safe replacement

RDM_STR_HAVE_STRTOF

#define RDM_STR_HAVE_STRTOF

#include <pspplatos.h>

Have strtof (may be defined on some OS)

Note
strtod and strtof are not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_STRTOD_L or RDM_STR_HAVE_UNDERSCORE_STRTOD_L

RDM_STR_HAVE_STRTOK_R

#define RDM_STR_HAVE_STRTOK_R

#include <pspplatos.h>

Use strtok_r implementation

Note
strtok will be used if RDM_THREAD_NO is defined and neither RDM_STR_HAVE_STRTOK_S nor RDM_STR_HAVE_STRTOK_R is defined. Use of strtok from more than one thread without proper protection is not safe.

RDM_STR_HAVE_STRTOK_S

#define RDM_STR_HAVE_STRTOK_S

#include <pspplatos.h>

Use strtok_s implementation

Note
strtok will be used if RDM_THREAD_NO is defined and neither RDM_STR_HAVE_STRTOK_S nor RDM_STR_HAVE_STRTOK_R is defined. Use of strtok from more than one thread without proper protection is not safe.

RDM_STR_HAVE_STRTOLL

#define RDM_STR_HAVE_STRTOLL

#include <pspplatos.h>

Have strtoll and strtoull (may be defined on some OS)

Note
strtod is not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_STRTOLL_L

RDM_STR_HAVE_STRTOLL_L

#define RDM_STR_HAVE_STRTOLL_L

#include <pspplatos.h>

Have strtoll_l and strtoull_l (may be defined on some OS)

Note
This uses strtoll_l and strtoull_l with a C locale instead of strtoll and strtoull as a safe replacement

RDM_STR_HAVE_UNDERSCORE_SPRINTF_L

#define RDM_STR_HAVE_UNDERSCORE_SPRINTF_L

#include <pspplatos.h>

Have _sprintf_l (may be defined on some OS)

Note
This uses _sprintf_l with a C locale instead of printf as a safe replacement for converting double to a string.

RDM_STR_HAVE_UNDERSCORE_STRICMP

#define RDM_STR_HAVE_UNDERSCORE_STRICMP

#include <pspplatos.h>

Have _tricmp and _strnicmp (may be defined on some OS)

Note
_stricmp and _strnicmp are not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_UNDERSCORE_STRICMP_L or none at all.

RDM_STR_HAVE_UNDERSCORE_STRICMP_L

#define RDM_STR_HAVE_UNDERSCORE_STRICMP_L

#include <pspplatos.h>

Have _stricmp_l and _strnicmp_l (may be defined on some OS)

Note
This uses _stricmp_l and _stricmp_l with a C locale instead of _stricmp and _strnicmp as a safe replacement.

RDM_STR_HAVE_UNDERSCORE_STRTOD_L

#define RDM_STR_HAVE_UNDERSCORE_STRTOD_L

#include <pspplatos.h>

Have _strtof_l and _strtod_l (may be defined on some OS)

Note
This uses _strtof_l and _strtod_l with a C locale instead of strtof and strtod as a safe replacement

RDM_STR_HAVE_UNDERSCORE_STRTOLL_L

#define RDM_STR_HAVE_UNDERSCORE_STRTOLL_L

#include <pspplatos.h>

Have _strtoll_l and _strtoull_l (may be defined on some OS)

Note
This uses _strtoll_l and _strtoull_l with a C locale instead of strtoll and strtoull as a safe replacement

RDM_STR_HAVE_UNDERSCORE_STRUPR

#define RDM_STR_HAVE_UNDERSCORE_STRUPR

#include <pspplatos.h>

Have _strupr and _strlwr (may be defined on some OS)

Note
_strupr and _strlwl are not reentrant nor safe in an environment where the application sets the global locale. Consider using RDM_STR_HAVE_UNDERSCORE_STRUPR_L or none at all.

RDM_STR_HAVE_UNDERSCORE_STRUPR_L

#define RDM_STR_HAVE_UNDERSCORE_STRUPR_L

#include <pspplatos.h>

Have _strupr_l and _strlwr_l (may be defined on some OS)

Note
This uses _strupr_l and _strlwr_l with a C locale instead of __strupr and _strlwr as a safe replacement.

RDM_TAG_HAVE_FFSLL

#define RDM_TAG_HAVE_FFSLL

#include <pspplatos.h>

Have ffsll for finding the first bit set in a word (may be defined on some OS)

RDM_THREAD_BASE_PRIORITY

#define RDM_THREAD_BASE_PRIORITY

#include <pspplatos.h>

Thread priority levels are derived from this and RDM_THREAD_INC_PRIORITY (may be defined on some OS)

RDM_THREAD_CALL_PTHREAD_SELF_ON_STARTUP

#define RDM_THREAD_CALL_PTHREAD_SELF_ON_STARTUP

#include <pspplatos.h>

Call pthread_self on startup

Run Time Processes (RTP) on VxWorks have a call to pthread_self as part of starting up the process to signal that pthreads are used

RDM_THREAD_FREE_RTOS

#define RDM_THREAD_FREE_RTOS

#include <pspplatos.h>

Thread implemantation for FreeRTOS

RDM_THREAD_INC_PRIORITY

#define RDM_THREAD_INC_PRIORITY

#include <pspplatos.h>

Thread priority levels are derived from this and RDM_THREAD_BASE_PRIORITY (may be defined on some OS)

RDM_THREAD_INTEGRITY

#define RDM_THREAD_INTEGRITY

#include <pspplatos.h>

Thread implementation for INTEGRITY (may be defined on some OS)

RDM_THREAD_NO

#define RDM_THREAD_NO

#include <pspplatos.h>

No thread implementation (may be defined on some OS)

RDM_THREAD_PTHREAD

#define RDM_THREAD_PTHREAD

#include <pspplatos.h>

Thread implementation for Posix Threads on Unix (may be defined on some OS)

RDM_THREAD_VXWORKS

#define RDM_THREAD_VXWORKS

#include <pspplatos.h>

Thread implementation for VxWorks (may be defined on some OS)

RDM_THREAD_WINDOWS

#define RDM_THREAD_WINDOWS

#include <pspplatos.h>

Thread implementation for Windows (may be defined on some OS)

RDM_TIME_FREE_RTOS

#define RDM_TIME_FREE_RTOS

#include <pspplatos.h>

Use clock ticks for FREE_RTOS to measure elapsed time

RDM_TIME_HAVE_CLOCK_GETTIME

#define RDM_TIME_HAVE_CLOCK_GETTIME

#include <pspplatos.h>

Have clock_gettime (may be defined on some OS)

RDM_TIME_HAVE_TIME64_T

#define RDM_TIME_HAVE_TIME64_T

#include <pspplatos.h>

Have the time64_t type (may be defined on some OS)

RDM_TIME_NO

#define RDM_TIME_NO

#include <pspplatos.h>

No time implementation (may be defined on some OS)

RDM_TIME_UNIX

#define RDM_TIME_UNIX

#include <pspplatos.h>

Timed implementation for Unix (may be defined on some OS)

RDM_TIME_WINDOWS

#define RDM_TIME_WINDOWS

#include <pspplatos.h>

Time implementation for Windows (may be defined on some OS)

RDM_TRANSPORT_HAVE_SHARED_MEMORY

#define RDM_TRANSPORT_HAVE_SHARED_MEMORY

#include <pspplatos.h>

Shared memory (may be defined on some OS)

RDM_TRANSPORT_HAVE_TCP [1/2]

#define RDM_TRANSPORT_HAVE_TCP

#include <pspplatos.h>

We have a TCP implementation (may be defined on some OS)

Implement a TCP transport (may be defined on some OS)

RDM_TRANSPORT_HAVE_TCP [2/2]

#define RDM_TRANSPORT_HAVE_TCP

#include <pspplatos.h>

We have a TCP implementation (may be defined on some OS)

Implement a TCP transport (may be defined on some OS)

RDM_TRANSPORT_TCP_ACCEPT_NO_DELAY

#define RDM_TRANSPORT_TCP_ACCEPT_NO_DELAY

#include <pspplatos.h>

Use socket option TCP_NODELAY for accepting a connection (may be defined on some OS)

RDM_TRANSPORT_TCP_CONNECT_NO_DELAY

#define RDM_TRANSPORT_TCP_CONNECT_NO_DELAY

#include <pspplatos.h>

Use socket option TCP_NODELAY for conneting (may be defined on some OS)

RDM_TRANSPORT_TCP_DONT_USE_KEEPALIVES

#define RDM_TRANSPORT_TCP_DONT_USE_KEEPALIVES

#include <pspplatos.h>

Use socket option SO_KEEPALIVE (may be defined on some OS)

RDM_TRANSPORT_TCP_HAVE_MSG_NOSIGNAL

#define RDM_TRANSPORT_TCP_HAVE_MSG_NOSIGNAL

#include <pspplatos.h>

Have the send flag MSG_NOSIGNAL (may be defined on some OS)

RDM_TRANSPORT_TCP_HAVE_POLL

#define RDM_TRANSPORT_TCP_HAVE_POLL

#include <pspplatos.h>

Have poll and use this instead of select (may be defined on some OS)

RDM_TRANSPORT_TCP_HAVE_QOS

#define RDM_TRANSPORT_TCP_HAVE_QOS

#include <pspplatos.h>

Have Quality Of Service (may be defined on some OS)

RDM_TRANSPORT_TCP_LOCALHOST

#define RDM_TRANSPORT_TCP_LOCALHOST "127.0.0.1"

#include <pspplatos.h>

The IP address to use for localhost (may be defined on some OS)

RDM_TRANSPORT_TCP_NO_IPV6

#define RDM_TRANSPORT_TCP_NO_IPV6

#include <pspplatos.h>

No IP version 6 implementation (may be defined on some OS)

RDM_UNIX

#define RDM_UNIX

#include <pspplatos.h>

This is a Posix or Unix like system (may be defined on some OS)

RDM_VARARGS_HAVE_VA_COPY

#define RDM_VARARGS_HAVE_VA_COPY

#include <pspplatos.h>

Have va_copy (may be defined on some OS)

RDM_VSNPRINTF

#define RDM_VSNPRINTF

#include <pspplatos.h>

Using our own vsnprintf (may be defined on some OS)