/** * @file rtems/assoc.h * * RTEMS associativity routines. Mainly used to convert a value from * one space to another (eg: our errno's to host errno's and vice-versa) */ #ifndef _RTEMS_RTEMS_ASSOC_H #define _RTEMS_RTEMS_ASSOC_H #include /* uint32_t */ #ifdef __cplusplus extern "C" { #endif typedef struct { const char *name; uint32_t local_value; uint32_t remote_value; } rtems_assoc_t; /* * Flag/marker for optional default value in each table */ #define RTEMS_ASSOC_DEFAULT_NAME "(default)" const rtems_assoc_t *rtems_assoc_ptr_by_name( const rtems_assoc_t *, const char * ); const rtems_assoc_t *rtems_assoc_ptr_by_remote( const rtems_assoc_t *, uint32_t ); uint32_t rtems_assoc_remote_by_local( const rtems_assoc_t *, uint32_t ); uint32_t rtems_assoc_local_by_remote( const rtems_assoc_t *, uint32_t ); uint32_t rtems_assoc_remote_by_name( const rtems_assoc_t *, const char * ); uint32_t rtems_assoc_local_by_name( const rtems_assoc_t *, const char * ); const char *rtems_assoc_name_by_local( const rtems_assoc_t *, uint32_t ); const char *rtems_assoc_name_by_remote( const rtems_assoc_t *, uint32_t ); uint32_t rtems_assoc_remote_by_local_bitfield( const rtems_assoc_t *, uint32_t ); char *rtems_assoc_name_by_local_bitfield( const rtems_assoc_t *, uint32_t , char * ); char *rtems_assoc_name_by_remote_bitfield( const rtems_assoc_t *, uint32_t , char * ); uint32_t rtems_assoc_local_by_remote_bitfield( const rtems_assoc_t *, uint32_t ); const rtems_assoc_t *rtems_assoc_ptr_by_local( const rtems_assoc_t *ap, uint32_t local_value ); #if defined(INSIDE_ASSOC) #define rtems_assoc_is_default(_ap) \ ((_ap)->name && !strcmp((_ap)->name, RTEMS_ASSOC_DEFAULT_NAME)) /* * what to return if a value is not found * this is not reentrant, but it really shouldn't be invoked anyway */ const char *rtems_assoc_name_bad( uint32_t bad_value ); #endif #ifdef __cplusplus } #endif #endif /* ! _RTEMS_RTEMS_ASSOC_H */