This is redundant with rtems_status_text() which has been in the tree for years. Chris wrote this years ago cpukit/libcsupport/src/error.c
It does not appear to be in the user's guide but I have included it in the class for as long as I can remember. It is referenced in 36 files in the source tree. --joel On 2/5/2014 10:25 AM, Sebastian Huber wrote: > --- > cpukit/rtems/Makefile.am | 1 + > cpukit/rtems/include/rtems/rtems/status.h | 10 +++ > cpukit/rtems/src/statusdesc.c | 69 > ++++++++++++++++++++ > doc/user/Makefile.am | 11 ++- > doc/user/dirstat.t | 64 ++++++++++++++++++ > doc/user/dirstat.texi | 37 ----------- > doc/user/example.texi | 2 +- > testsuites/sptests/spinternalerror02/init.c | 21 ++++++- > .../spinternalerror02/spinternalerror02.scn | 31 +++++++++ > 9 files changed, 203 insertions(+), 43 deletions(-) > create mode 100644 cpukit/rtems/src/statusdesc.c > create mode 100644 doc/user/dirstat.t > delete mode 100644 doc/user/dirstat.texi > > diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am > index fd5af5a..f219db8 100644 > --- a/cpukit/rtems/Makefile.am > +++ b/cpukit/rtems/Makefile.am > @@ -255,6 +255,7 @@ librtems_a_SOURCES += src/workspacegreedy.c > librtems_a_SOURCES += src/modes.c > > librtems_a_SOURCES += src/status.c > +librtems_a_SOURCES += src/statusdesc.c > > if HAS_MP > # We only build multiprocessing related files if HAS_MP was defined > diff --git a/cpukit/rtems/include/rtems/rtems/status.h > b/cpukit/rtems/include/rtems/rtems/status.h > index 8904288..19df500 100644 > --- a/cpukit/rtems/include/rtems/rtems/status.h > +++ b/cpukit/rtems/include/rtems/rtems/status.h > @@ -241,6 +241,16 @@ RTEMS_INLINE_ROUTINE bool rtems_are_statuses_equal( > */ > int rtems_status_code_to_errno(rtems_status_code sc); > > +/** > + * @brief Returns a description for a status code. > + * > + * @param[in] code The status code. > + * > + * @retval description The status code description. > + * @retval ? The passed status code is invalid. > + */ > +const char *rtems_status_code_description( rtems_status_code code ); > + > /**@}*/ > > #ifdef __cplusplus > diff --git a/cpukit/rtems/src/statusdesc.c b/cpukit/rtems/src/statusdesc.c > new file mode 100644 > index 0000000..4cc426d > --- /dev/null > +++ b/cpukit/rtems/src/statusdesc.c > @@ -0,0 +1,69 @@ > +/** > + * @file > + * > + * @ingroup ClassicStatus > + */ > + > +/* > + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. > + * > + * embedded brains GmbH > + * Dornierstr. 4 > + * 82178 Puchheim > + * Germany > + * <rt...@embedded-brains.de> > + * > + * The license and distribution terms for this file may be > + * found in the file LICENSE in this distribution or at > + * http://www.rtems.com/license/LICENSE. > + */ > + > +#if HAVE_CONFIG_H > + #include "config.h" > +#endif > + > +#include <rtems.h> > + > +static const char *const status_code_desc[] = { > + "RTEMS_SUCCESSFUL", > + "RTEMS_TASK_EXITTED", > + "RTEMS_MP_NOT_CONFIGURED", > + "RTEMS_INVALID_NAME", > + "RTEMS_INVALID_ID", > + "RTEMS_TOO_MANY", > + "RTEMS_TIMEOUT", > + "RTEMS_OBJECT_WAS_DELETED", > + "RTEMS_INVALID_SIZE", > + "RTEMS_INVALID_ADDRESS", > + "RTEMS_INVALID_NUMBER", > + "RTEMS_NOT_DEFINED", > + "RTEMS_RESOURCE_IN_USE", > + "RTEMS_UNSATISFIED", > + "RTEMS_INCORRECT_STATE", > + "RTEMS_ALREADY_SUSPENDED", > + "RTEMS_ILLEGAL_ON_SELF", > + "RTEMS_ILLEGAL_ON_REMOTE_OBJECT", > + "RTEMS_CALLED_FROM_ISR", > + "RTEMS_INVALID_PRIORITY", > + "RTEMS_INVALID_CLOCK", > + "RTEMS_INVALID_NODE", > + "RTEMS_NOT_CONFIGURED", > + "RTEMS_NOT_OWNER_OF_RESOURCE", > + "RTEMS_NOT_IMPLEMENTED", > + "RTEMS_INTERNAL_ERROR", > + "RTEMS_NO_MEMORY", > + "RTEMS_IO_ERROR", > + "RTEMS_PROXY_BLOCKING" > +}; > + > +const char *rtems_status_code_description( rtems_status_code code ) > +{ > + size_t i = code; > + const char *desc = "?"; > + > + if ( i < RTEMS_ARRAY_SIZE( status_code_desc ) ) { > + desc = status_code_desc [i]; > + } > + > + return desc; > +} > diff --git a/doc/user/Makefile.am b/doc/user/Makefile.am > index 7992b29..1b6ddcb 100644 > --- a/doc/user/Makefile.am > +++ b/doc/user/Makefile.am > @@ -8,14 +8,14 @@ PROJECT = c_user > include $(top_srcdir)/project.am > include $(top_srcdir)/main.am > > -FILES = bsp.texi dirstat.texi example.texi glossary.texi preface.texi > +FILES = bsp.texi example.texi glossary.texi preface.texi > > GENERATED_FILES = overview.texi concepts.texi datatypes.texi init.texi \ > task.texi intr.texi clock.texi timer.texi sem.texi msg.texi event.texi \ > signal.texi part.texi region.texi dpmem.texi io.texi fatal.texi \ > schedule.texi rtmon.texi barrier.texi bsp.texi userext.texi conf.texi \ > mp.texi stackchk.texi cpuuse.texi object.texi chains.texi timespec.texi \ > - cbs.texi > + cbs.texi dirstat.texi > > COMMON_FILES += $(top_srcdir)/common/cpright.texi > > @@ -193,10 +193,15 @@ cbs.texi: cbs.t > -u "Top" \ > -n "Directive Status Codes" < $< > $@ > > +dirstat.texi: dirstat.t > + $(BMENU2) -p "Constant Bandwidth Server Scheduler API > CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time" \ > + -u "Top" \ > + -n "Example Application" < $< > $@ > + > EXTRA_DIST = bsp.t cbs.t clock.t chains.t concepts.t cpuuse.t datatypes.t > conf.t \ > dpmem.t event.t fatal.t init.t intr.t io.t mp.t msg.t overview.t \ > part.t region.t rtmon.t sem.t schedule.t signal.t stackchk.t \ > - task.t timer.t userext.t $(TXT_FILES) $(PNG_FILES) $(EPS_IMAGES) \ > + task.t timer.t userext.t dirstat.t $(TXT_FILES) $(PNG_FILES) > $(EPS_IMAGES) \ > $(noinst_DATA) > > CLEANFILES += c_user.info c_user.info-? c_user.info-?? > diff --git a/doc/user/dirstat.t b/doc/user/dirstat.t > new file mode 100644 > index 0000000..adb675d > --- /dev/null > +++ b/doc/user/dirstat.t > @@ -0,0 +1,64 @@ > +@c > +@c COPYRIGHT (c) 1989-2011. > +@c On-Line Applications Research Corporation (OAR). > +@c All rights reserved. > + > +@chapter Directive Status Codes > + > +@section Introduction > + > +@table @b > +@item @code{@value{RPREFIX}SUCCESSFUL} - successful completion > +@item @code{@value{RPREFIX}TASK_EXITTED} - returned from a task > +@item @code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not > configured > +@item @code{@value{RPREFIX}INVALID_NAME} - invalid object name > +@item @code{@value{RPREFIX}INVALID_ID} - invalid object id > +@item @code{@value{RPREFIX}TOO_MANY} - too many > +@item @code{@value{RPREFIX}TIMEOUT} - timed out waiting > +@item @code{@value{RPREFIX}OBJECT_WAS_DELETED} - object was deleted while > waiting > +@item @code{@value{RPREFIX}INVALID_SIZE} - invalid specified size > +@item @code{@value{RPREFIX}INVALID_ADDRESS} - invalid address specified > +@item @code{@value{RPREFIX}INVALID_NUMBER} - number was invalid > +@item @code{@value{RPREFIX}NOT_DEFINED} - item not initialized > +@item @code{@value{RPREFIX}RESOURCE_IN_USE} - resources outstanding > +@item @code{@value{RPREFIX}UNSATISFIED} - request not satisfied > +@item @code{@value{RPREFIX}INCORRECT_STATE} - task is in wrong state > +@item @code{@value{RPREFIX}ALREADY_SUSPENDED} - task already in state > +@item @code{@value{RPREFIX}ILLEGAL_ON_SELF} - illegal for calling task > +@item @code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - illegal for remote > object > +@item @code{@value{RPREFIX}CALLED_FROM_ISR} - invalid environment > +@item @code{@value{RPREFIX}INVALID_PRIORITY} - invalid task priority > +@item @code{@value{RPREFIX}INVALID_CLOCK} - invalid time buffer > +@item @code{@value{RPREFIX}INVALID_NODE} - invalid node id > +@item @code{@value{RPREFIX}NOT_CONFIGURED} - directive not configured > +@item @code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - not owner of resource > +@item @code{@value{RPREFIX}NOT_IMPLEMENTED} - directive not implemented > +@item @code{@value{RPREFIX}INTERNAL_ERROR} - RTEMS inconsistency detected > +@item @code{@value{RPREFIX}NO_MEMORY} - could not get enough memory > +@end table > + > +@section Directives > + > +@page > +@subsection STATUS_CODE_DESCRIPTION - Returns a description for a status code > + > +@cindex fatal error > + > +@subheading CALLING SEQUENCE: > + > +@ifset is-C > +@findex rtems_status_code_description > +@example > +const char *rtems_status_code_description( > + rtems_status_code code > +); > +@end example > +@end ifset > + > +@subheading DIRECTIVE STATUS CODES > + > +The status code description or "?" in case the passed status code is invalid. > + > +@subheading DESCRIPTION: > + > +Returns a description for a status code. > diff --git a/doc/user/dirstat.texi b/doc/user/dirstat.texi > deleted file mode 100644 > index 17a7edd..0000000 > --- a/doc/user/dirstat.texi > +++ /dev/null > @@ -1,37 +0,0 @@ > -@c > -@c COPYRIGHT (c) 1989-2011. > -@c On-Line Applications Research Corporation (OAR). > -@c All rights reserved. > - > -@node Directive Status Codes, Example Application, Constant Bandwidth Server > Scheduler API CBS_GET_APPROVED_BUDGET - Get scheduler approved execution > time, Top > -@chapter Directive Status Codes > -@table @b > -@item @code{@value{RPREFIX}SUCCESSFUL} - successful completion > -@item @code{@value{RPREFIX}TASK_EXITTED} - returned from a task > -@item @code{@value{RPREFIX}MP_NOT_CONFIGURED} - multiprocessing not > configured > -@item @code{@value{RPREFIX}INVALID_NAME} - invalid object name > -@item @code{@value{RPREFIX}INVALID_ID} - invalid object id > -@item @code{@value{RPREFIX}TOO_MANY} - too many > -@item @code{@value{RPREFIX}TIMEOUT} - timed out waiting > -@item @code{@value{RPREFIX}OBJECT_WAS_DELETED} - object was deleted while > waiting > -@item @code{@value{RPREFIX}INVALID_SIZE} - invalid specified size > -@item @code{@value{RPREFIX}INVALID_ADDRESS} - invalid address specified > -@item @code{@value{RPREFIX}INVALID_NUMBER} - number was invalid > -@item @code{@value{RPREFIX}NOT_DEFINED} - item not initialized > -@item @code{@value{RPREFIX}RESOURCE_IN_USE} - resources outstanding > -@item @code{@value{RPREFIX}UNSATISFIED} - request not satisfied > -@item @code{@value{RPREFIX}INCORRECT_STATE} - task is in wrong state > -@item @code{@value{RPREFIX}ALREADY_SUSPENDED} - task already in state > -@item @code{@value{RPREFIX}ILLEGAL_ON_SELF} - illegal for calling task > -@item @code{@value{RPREFIX}ILLEGAL_ON_REMOTE_OBJECT} - illegal for remote > object > -@item @code{@value{RPREFIX}CALLED_FROM_ISR} - invalid environment > -@item @code{@value{RPREFIX}INVALID_PRIORITY} - invalid task priority > -@item @code{@value{RPREFIX}INVALID_CLOCK} - invalid time buffer > -@item @code{@value{RPREFIX}INVALID_NODE} - invalid node id > -@item @code{@value{RPREFIX}NOT_CONFIGURED} - directive not configured > -@item @code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - not owner of resource > -@item @code{@value{RPREFIX}NOT_IMPLEMENTED} - directive not implemented > -@item @code{@value{RPREFIX}INTERNAL_ERROR} - RTEMS inconsistency detected > -@item @code{@value{RPREFIX}NO_MEMORY} - could not get enough memory > -@end table > - > diff --git a/doc/user/example.texi b/doc/user/example.texi > index f95868e..71a71ab 100644 > --- a/doc/user/example.texi > +++ b/doc/user/example.texi > @@ -3,7 +3,7 @@ > @c On-Line Applications Research Corporation (OAR). > @c All rights reserved. > > -@node Example Application, Glossary, Directive Status Codes, Top > +@node Example Application, Glossary, Directive Status Codes > STATUS_CODE_DESCRIPTION - Returns a description for a status code, Top > @chapter Example Application > > @example > diff --git a/testsuites/sptests/spinternalerror02/init.c > b/testsuites/sptests/spinternalerror02/init.c > index 4b89e6c..b08a7d4 100644 > --- a/testsuites/sptests/spinternalerror02/init.c > +++ b/testsuites/sptests/spinternalerror02/init.c > @@ -1,8 +1,8 @@ > /* > - * Copyright (c) 2012 embedded brains GmbH. All rights reserved. > + * Copyright (c) 2012-2014 embedded brains GmbH. All rights reserved. > * > * embedded brains GmbH > - * Obere Lagerstr. 30 > + * Donierstr. 4 > * 82178 Puchheim > * Germany > * <rt...@embedded-brains.de> > @@ -52,12 +52,29 @@ static void test_fatal_source_description(void) > rtems_test_assert( source - 3 == RTEMS_FATAL_SOURCE_EXCEPTION ); > } > > +static void test_status_code_description(void) > +{ > + rtems_status_code code = 0; > + const char *desc = NULL; > + const char *desc_last; > + > + do { > + desc_last = desc; > + desc = rtems_status_code_description( code ); > + ++code; > + puts( desc ); > + } while ( desc != desc_last ); > + > + rtems_test_assert( code - 3 == RTEMS_PROXY_BLOCKING ); > +} > + > static void Init(rtems_task_argument arg) > { > puts("\n\n*** TEST SPINTERNALERROR 2 ***"); > > test_internal_error_description(); > test_fatal_source_description(); > + test_status_code_description(); > > puts("*** END OF TEST SPINTERNALERROR 2 ***"); > > diff --git a/testsuites/sptests/spinternalerror02/spinternalerror02.scn > b/testsuites/sptests/spinternalerror02/spinternalerror02.scn > index 9d7a722..65fd425 100644 > --- a/testsuites/sptests/spinternalerror02/spinternalerror02.scn > +++ b/testsuites/sptests/spinternalerror02/spinternalerror02.scn > @@ -39,4 +39,35 @@ RTEMS_FATAL_SOURCE_STACK_CHECKER > RTEMS_FATAL_SOURCE_EXCEPTION > ? > ? > +RTEMS_SUCCESSFUL > +RTEMS_TASK_EXITTED > +RTEMS_MP_NOT_CONFIGURED > +RTEMS_INVALID_NAME > +RTEMS_INVALID_ID > +RTEMS_TOO_MANY > +RTEMS_TIMEOUT > +RTEMS_OBJECT_WAS_DELETED > +RTEMS_INVALID_SIZE > +RTEMS_INVALID_ADDRESS > +RTEMS_INVALID_NUMBER > +RTEMS_NOT_DEFINED > +RTEMS_RESOURCE_IN_USE > +RTEMS_UNSATISFIED > +RTEMS_INCORRECT_STATE > +RTEMS_ALREADY_SUSPENDED > +RTEMS_ILLEGAL_ON_SELF > +RTEMS_ILLEGAL_ON_REMOTE_OBJECT > +RTEMS_CALLED_FROM_ISR > +RTEMS_INVALID_PRIORITY > +RTEMS_INVALID_CLOCK > +RTEMS_INVALID_NODE > +RTEMS_NOT_CONFIGURED > +RTEMS_NOT_OWNER_OF_RESOURCE > +RTEMS_NOT_IMPLEMENTED > +RTEMS_INTERNAL_ERROR > +RTEMS_NO_MEMORY > +RTEMS_IO_ERROR > +RTEMS_PROXY_BLOCKING > +? > +? > *** END OF TEST SPINTERNALERROR 2 *** > -- > 1.7.7 > > _______________________________________________ > rtems-devel mailing list > rtems-devel@rtems.org > http://www.rtems.org/mailman/listinfo/rtems-devel -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel