From c64e4ed48285a0c944905bc02de89c20038f428b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 15 Jan 1996 21:50:28 +0000 Subject: updates from Tony Bennett for PA and UNIX ports --- c/src/libmisc/assoc/assoc.c | 77 ++++++++++++++++++++----------------- c/src/libmisc/assoc/assoc.h | 34 ++++++++-------- c/src/libmisc/error/error.c | 15 ++++---- c/src/libmisc/error/error.h | 14 +++++-- c/src/libmisc/monitor/mon-monitor.c | 37 +++++++++++------- c/src/libmisc/monitor/mon-prmisc.c | 2 +- c/src/libmisc/monitor/monitor.h | 4 +- 7 files changed, 102 insertions(+), 81 deletions(-) (limited to 'c/src/libmisc') diff --git a/c/src/libmisc/assoc/assoc.c b/c/src/libmisc/assoc/assoc.c index c18359ef8a..a3eabdb3b5 100644 --- a/c/src/libmisc/assoc/assoc.c +++ b/c/src/libmisc/assoc/assoc.c @@ -1,6 +1,6 @@ /* - * @(#)assoc.c 1.4 - 95/08/02 - * + * @(#)assoc.c 1.6 - 95/10/25 + * * * assoc.c * rtems assoc routines @@ -8,7 +8,6 @@ * $Id$ */ - #include #include "assoc.h" @@ -18,13 +17,13 @@ #define STREQ(a,b) (strcmp((a), (b)) == 0) #define rtems_assoc_is_default(ap) ((ap)->name && STREQ(ap->name, RTEMS_ASSOC_DEFAULT_NAME)) -rtems_assoc_t * +const rtems_assoc_t * rtems_assoc_ptr_by_name( - rtems_assoc_t *ap, - char *name + const rtems_assoc_t *ap, + const char *name ) { - rtems_assoc_t *default_ap = 0; + const rtems_assoc_t *default_ap = 0; if (rtems_assoc_is_default(ap)) default_ap = ap++; @@ -36,13 +35,13 @@ rtems_assoc_ptr_by_name( return default_ap; } -rtems_assoc_t * +const rtems_assoc_t * rtems_assoc_ptr_by_local( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 local_value ) { - rtems_assoc_t *default_ap = 0; + const rtems_assoc_t *default_ap = 0; if (rtems_assoc_is_default(ap)) default_ap = ap++; @@ -55,13 +54,13 @@ rtems_assoc_ptr_by_local( } -rtems_assoc_t * +const rtems_assoc_t * rtems_assoc_ptr_by_remote( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 remote_value ) { - rtems_assoc_t *default_ap = 0; + const rtems_assoc_t *default_ap = 0; if (rtems_assoc_is_default(ap)) default_ap = ap++; @@ -80,11 +79,11 @@ rtems_assoc_ptr_by_remote( unsigned32 rtems_assoc_remote_by_local( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 local_value ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_local(ap, local_value); if (nap) return nap->remote_value; @@ -94,11 +93,11 @@ rtems_assoc_remote_by_local( unsigned32 rtems_assoc_local_by_remote( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 remote_value ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_remote(ap, remote_value); if (nap) return nap->local_value; @@ -108,11 +107,11 @@ rtems_assoc_local_by_remote( unsigned32 rtems_assoc_remote_by_name( - rtems_assoc_t *ap, - char *name + const rtems_assoc_t *ap, + const char *name ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_name(ap, name); if (nap) return nap->remote_value; @@ -122,11 +121,11 @@ rtems_assoc_remote_by_name( unsigned32 rtems_assoc_local_by_name( - rtems_assoc_t *ap, - char *name + const rtems_assoc_t *ap, + const char *name ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_name(ap, name); if (nap) return nap->local_value; @@ -139,25 +138,29 @@ rtems_assoc_local_by_name( * this is not reentrant, but it really shouldn't be invoked anyway */ -char * +const char * rtems_assoc_name_bad( unsigned32 bad_value ) { +#ifdef RTEMS_DEBUG static char bad_buffer[32]; sprintf(bad_buffer, "< %d [0x%x] >", bad_value, bad_value); +#else + static char bad_buffer[32] = ""; +#endif return bad_buffer; } -char * +const char * rtems_assoc_name_by_local( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 local_value ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_local(ap, local_value); if (nap) return nap->name; @@ -165,13 +168,13 @@ rtems_assoc_name_by_local( return rtems_assoc_name_bad(local_value); } -char * +const char * rtems_assoc_name_by_remote( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 remote_value ) { - rtems_assoc_t *nap; + const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_remote(ap, remote_value); if (nap) return nap->name; @@ -185,7 +188,7 @@ rtems_assoc_name_by_remote( */ unsigned32 rtems_assoc_remote_by_local_bitfield( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 local_value ) { @@ -201,7 +204,7 @@ unsigned32 rtems_assoc_remote_by_local_bitfield( unsigned32 rtems_assoc_local_by_remote_bitfield( - rtems_assoc_t *ap, + const rtems_assoc_t *ap, unsigned32 remote_value ) { @@ -215,8 +218,9 @@ unsigned32 rtems_assoc_local_by_remote_bitfield( return local_value; } -char *rtems_assoc_name_by_remote_bitfield( - rtems_assoc_t *ap, +char * +rtems_assoc_name_by_remote_bitfield( + const rtems_assoc_t *ap, unsigned32 value, char *buffer ) @@ -236,8 +240,9 @@ char *rtems_assoc_name_by_remote_bitfield( return buffer; } -char *rtems_assoc_name_by_local_bitfield( - rtems_assoc_t *ap, +char * +rtems_assoc_name_by_local_bitfield( + const rtems_assoc_t *ap, unsigned32 value, char *buffer ) diff --git a/c/src/libmisc/assoc/assoc.h b/c/src/libmisc/assoc/assoc.h index c820cfa973..f9a444374c 100644 --- a/c/src/libmisc/assoc/assoc.h +++ b/c/src/libmisc/assoc/assoc.h @@ -1,5 +1,5 @@ /* - * @(#)assoc.h 1.2 - 95/06/28 + * @(#)assoc.h 1.4 - 95/10/25 * * * Rtems associativity routines. Mainly used to convert a value from @@ -13,7 +13,7 @@ #define _INCLUDE_ASSOC_H typedef struct { - char *name; + const char *name; unsigned32 local_value; unsigned32 remote_value; } rtems_assoc_t; @@ -24,21 +24,21 @@ typedef struct { #define RTEMS_ASSOC_DEFAULT_NAME "(default)" -rtems_assoc_t *rtems_assoc_ptr_by_name(rtems_assoc_t *, char *); -rtems_assoc_t *rtems_assoc_ptr_by_value(rtems_assoc_t *, unsigned32); -rtems_assoc_t *rtems_assoc_ptr_by_remote(rtems_assoc_t *, unsigned32); - -unsigned32 rtems_assoc_remote_by_local(rtems_assoc_t *, unsigned32); -unsigned32 rtems_assoc_local_by_remote(rtems_assoc_t *, unsigned32); -unsigned32 rtems_assoc_remote_by_name(rtems_assoc_t *, char *); -unsigned32 rtems_assoc_local_by_name(rtems_assoc_t *, char *); -char *rtems_assoc_name_by_local(rtems_assoc_t *, unsigned32); -char *rtems_assoc_name_by_remote(rtems_assoc_t *, unsigned32); - -unsigned32 rtems_assoc_remote_by_local_bitfield(rtems_assoc_t *, unsigned32); -char *rtems_assoc_name_by_local_bitfield(rtems_assoc_t *, unsigned32, char *); -char *rtems_assoc_name_by_remote_bitfield(rtems_assoc_t *, unsigned32, char *); -unsigned32 rtems_assoc_local_by_remote_bitfield(rtems_assoc_t *ap, unsigned32); +const rtems_assoc_t *rtems_assoc_ptr_by_name(const rtems_assoc_t *, const char *); +const rtems_assoc_t *rtems_assoc_ptr_by_value(const rtems_assoc_t *, unsigned32); +const rtems_assoc_t *rtems_assoc_ptr_by_remote(const rtems_assoc_t *, unsigned32); + +unsigned32 rtems_assoc_remote_by_local(const rtems_assoc_t *, unsigned32); +unsigned32 rtems_assoc_local_by_remote(const rtems_assoc_t *, unsigned32); +unsigned32 rtems_assoc_remote_by_name(const rtems_assoc_t *, const char *); +unsigned32 rtems_assoc_local_by_name(const rtems_assoc_t *, const char *); +const char *rtems_assoc_name_by_local(const rtems_assoc_t *, unsigned32); +const char *rtems_assoc_name_by_remote(const rtems_assoc_t *, unsigned32); + +unsigned32 rtems_assoc_remote_by_local_bitfield(const rtems_assoc_t *, unsigned32); +char *rtems_assoc_name_by_local_bitfield(const rtems_assoc_t *, unsigned32, char *); +char *rtems_assoc_name_by_remote_bitfield(const rtems_assoc_t *, unsigned32, char *); +unsigned32 rtems_assoc_local_by_remote_bitfield(const rtems_assoc_t *, unsigned32); #endif /* ! _INCLUDE_ASSOC_H */ diff --git a/c/src/libmisc/error/error.c b/c/src/libmisc/error/error.c index 56224f2a56..f9cee777ae 100644 --- a/c/src/libmisc/error/error.c +++ b/c/src/libmisc/error/error.c @@ -1,10 +1,9 @@ /* - * @(#)error.c 1.2 - 95/08/02 + * @(#)error.c 1.6 - 95/12/12 * * - * report errors and panics to RTEMS' stderr. - * Currently just used by RTEMS monitor. - * + * report errors and panics to RTEMS' stderr. + * Currently just used by RTEMS monitor. * * $Id$ */ @@ -97,7 +96,7 @@ rtems_assoc_t rtems_status_assoc[] = { }; -char * +const char * rtems_status_text( rtems_status_code status ) @@ -108,7 +107,7 @@ rtems_status_text( static int rtems_verror( unsigned32 error_flag, - char *printf_format, + const char *printf_format, va_list arglist ) { @@ -181,7 +180,7 @@ static int rtems_verror( int rtems_error( int error_flag, - char *printf_format, + const char *printf_format, ... ) { @@ -200,7 +199,7 @@ int rtems_error( */ void rtems_panic( - char *printf_format, + const char *printf_format, ... ) { diff --git a/c/src/libmisc/error/error.h b/c/src/libmisc/error/error.h index a41f0aa534..621ee16f65 100644 --- a/c/src/libmisc/error/error.h +++ b/c/src/libmisc/error/error.h @@ -1,5 +1,6 @@ + /* - * @(#)error.h 1.1 - 95/08/02 + * @(#)error.h 1.3 - 95/10/25 * * * Defines and externs for rtems error reporting @@ -7,6 +8,9 @@ * $Id$ */ +#ifndef __RTEMS_ERROR_h +#define __RTEMS_ERROR_h + /* * rtems_error() and rtems_panic() support */ @@ -18,9 +22,11 @@ #define RTEMS_ERROR_MASK (RTEMS_ERROR_ERRNO | RTEMS_ERROR_ABORT | \ RTEMS_ERROR_PANIC) /* all */ -char *rtems_status_text(rtems_status_code); -int rtems_error(int error_code, char *printf_format, ...); -void rtems_panic(char *printf_format, ...); +const char *rtems_status_text(rtems_status_code); +int rtems_error(int error_code, const char *printf_format, ...); +void rtems_panic(const char *printf_format, ...); extern int rtems_panic_in_progress; +#endif +/* end of include file */ diff --git a/c/src/libmisc/monitor/mon-monitor.c b/c/src/libmisc/monitor/mon-monitor.c index 5cf80d3ad6..98b4234c00 100644 --- a/c/src/libmisc/monitor/mon-monitor.c +++ b/c/src/libmisc/monitor/mon-monitor.c @@ -1,7 +1,8 @@ /* - * @(#)monitor.c 1.18 - 95/08/02 + * @(#)monitor.c 1.22 - 95/11/02 * * + * * RTEMS monitor main body * * TODO: @@ -17,6 +18,10 @@ * should have a separate monitor FILE stream (ala the debugger) * remote request/response stuff should be cleaned up * maybe we can use real rpc?? + * 'info' commadn to print out: + * interrupt stack location, direction and size + * floating point config stuff + * interrupt config stuff * * $Id$ */ @@ -227,7 +232,7 @@ rtems_monitor_command_entry_t rtems_monitor_commands[] = { " Enter the debugger, if possible.\n" " A continue from the debugger will return to the monitor.\n", 0, - CPU_INVOKE_DEBUGGER, + rtems_monitor_debugger_cmd, 0, }, #endif @@ -296,6 +301,18 @@ rtems_monitor_continue_cmd( rtems_monitor_suspend(RTEMS_NO_TIMEOUT); } +void +rtems_monitor_debugger_cmd( + int argc, + char **argv, + unsigned32 command_arg, + boolean verbose +) +{ +#ifdef CPU_INVOKE_DEBUGGER + CPU_INVOKE_DEBUGGER; +#endif +} void rtems_monitor_node_cmd( @@ -338,22 +355,14 @@ rtems_monitor_node_cmd( * 400a708c ? _Thread_Dispatch_disable_level * 400a7090 ? _Configuration_Table * - * * We ignore the type field. * - * Parameters: - * - * - * Returns: - * - * * Side Effects: * Creates and fills in 'rtems_monitor_symbols' table * - * Notes: - * - * - * Deficiencies/ToDo: + * TODO + * there should be a BSP #define or something like that + * to do this; Assuming stdio is crazy. * Someday this should know BFD * Maybe we could get objcopy to just copy the symbol areas * and copy that down. @@ -373,7 +382,7 @@ rtems_monitor_symbols_loadup(void) if (rtems_monitor_symbols == 0) return; -#ifdef simhppa +#ifdef SIMHPPA fp = fdopen(8, "r"); /* don't ask; don't tell */ #else fp = fopen("symbols", "r"); diff --git a/c/src/libmisc/monitor/mon-prmisc.c b/c/src/libmisc/monitor/mon-prmisc.c index 0a9f9bdf2e..6003695195 100644 --- a/c/src/libmisc/monitor/mon-prmisc.c +++ b/c/src/libmisc/monitor/mon-prmisc.c @@ -70,7 +70,7 @@ rtems_monitor_dump_assoc_bitfield( { unsigned32 b; unsigned32 length = 0; - char *name; + const char *name; for (b = 1; b; b <<= 1) if (b & value) diff --git a/c/src/libmisc/monitor/monitor.h b/c/src/libmisc/monitor/monitor.h index 2ee03f570b..2f20bd2937 100644 --- a/c/src/libmisc/monitor/monitor.h +++ b/c/src/libmisc/monitor/monitor.h @@ -1,6 +1,7 @@ /* - * @(#)monitor.h 1.14 - 95/08/02 + * @(#)monitor.h 1.20 - 95/12/12 * + * * $Id$ */ @@ -318,6 +319,7 @@ void rtems_monitor_wakeup(void); void rtems_monitor_pause_cmd(int, char **, unsigned32, boolean); void rtems_monitor_fatal_cmd(int, char **, unsigned32, boolean); void rtems_monitor_continue_cmd(int, char **, unsigned32, boolean); +void rtems_monitor_debugger_cmd(int, char **, unsigned32, boolean); void rtems_monitor_node_cmd(int, char **, unsigned32, boolean); void rtems_monitor_symbols_loadup(void); void rtems_monitor_task(rtems_task_argument); -- cgit v1.2.3