From b06e68ef1f6df69cc86d72356c3a002054a35fad Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 17 Aug 1995 19:51:51 +0000 Subject: Numerous miscellaneous features incorporated from Tony Bennett (tbennett@divnc.com) including the following major additions: + variable length messages + named devices + debug monitor + association tables/variables --- c/src/lib/libmisc/monitor/mon-mpci.c | 161 +++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 c/src/lib/libmisc/monitor/mon-mpci.c (limited to 'c/src/lib/libmisc/monitor/mon-mpci.c') diff --git a/c/src/lib/libmisc/monitor/mon-mpci.c b/c/src/lib/libmisc/monitor/mon-mpci.c new file mode 100644 index 0000000000..99dcea3bf8 --- /dev/null +++ b/c/src/lib/libmisc/monitor/mon-mpci.c @@ -0,0 +1,161 @@ +/* + * @(#)mpci.c 1.6 - 95/08/02 + * + * + * RTEMS MPCI Config display support + * + * TODO + * + * $Id$ + */ + + +#include +#include "monitor.h" + +#include +#include /* strtoul() */ + +#define DATACOL 15 + +/* + * Fill in entire monitor config table + * for sending to a remote monitor or printing on the local system + */ + +void +rtems_monitor_mpci_canonical( + rtems_monitor_mpci_t *canonical_mpci, + void *config_void +) +{ + rtems_configuration_table *c = _Configuration_Table; + rtems_multiprocessing_table *m; + rtems_mpci_table *mt; + + m = c->User_multiprocessing_table; + if (m == 0) + return; + mt = m->User_mpci_table; + + canonical_mpci->node = m->node; + canonical_mpci->maximum_nodes = m->maximum_nodes; + canonical_mpci->maximum_global_objects = m->maximum_global_objects; + canonical_mpci->maximum_proxies = m->maximum_proxies; + + canonical_mpci->default_timeout = mt->default_timeout; + canonical_mpci->maximum_packet_size = mt->maximum_packet_size; + + rtems_monitor_symbol_canonical_by_value(&canonical_mpci->initialization, + mt->initialization); + + rtems_monitor_symbol_canonical_by_value(&canonical_mpci->get_packet, + mt->get_packet); + rtems_monitor_symbol_canonical_by_value(&canonical_mpci->return_packet, + mt->return_packet); + rtems_monitor_symbol_canonical_by_value(&canonical_mpci->send_packet, + mt->send_packet); + rtems_monitor_symbol_canonical_by_value(&canonical_mpci->receive_packet, + mt->receive_packet); +} + +/* + * This is easy, since there is only 1 (altho we could get them from + * other nodes...) + */ + +void * +rtems_monitor_mpci_next( + void *object_info, + rtems_monitor_mpci_t *canonical_mpci, + rtems_id *next_id +) +{ + rtems_configuration_table *c = _Configuration_Table; + int n = rtems_get_index(*next_id); + + if (n >= 1) + goto failed; + + if ( ! c->User_multiprocessing_table) + goto failed; + + _Thread_Disable_dispatch(); + + *next_id += 1; + return (void *) c; + +failed: + *next_id = RTEMS_OBJECT_ID_FINAL; + return 0; +} + + +void +rtems_monitor_mpci_dump_header( + boolean verbose +) +{ + printf("\ + max max max default max\n\ + node nodes globals proxies timeout pktsize\n"); +/*23456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 +0 1 2 3 4 5 6 7 */ + + rtems_monitor_separator(); +} + + +void +rtems_monitor_mpci_dump( + rtems_monitor_mpci_t *monitor_mpci, + boolean verbose +) +{ + unsigned32 length = 0; + + length += rtems_monitor_pad(2, length); + length += printf(" %d", monitor_mpci->node); + length += rtems_monitor_pad(11, length); + length += printf("%d", monitor_mpci->maximum_nodes); + + length += rtems_monitor_pad(18, length); + length += rtems_monitor_dump_decimal(monitor_mpci->maximum_global_objects); + + length += rtems_monitor_pad(28, length); + length += rtems_monitor_dump_decimal(monitor_mpci->maximum_proxies); + + length += rtems_monitor_pad(37, length); + length += rtems_monitor_dump_decimal(monitor_mpci->default_timeout); + + length += rtems_monitor_pad(46, length); + length += rtems_monitor_dump_decimal(monitor_mpci->maximum_packet_size); + + printf("\n"); + length = 0; + length += rtems_monitor_pad(DATACOL, length); + + length += printf("init: "); + length += rtems_monitor_symbol_dump(&monitor_mpci->initialization, verbose); + + printf("\n"); + length = 0; + length += rtems_monitor_pad(DATACOL, length); + + length += printf("get: "); + length += rtems_monitor_symbol_dump(&monitor_mpci->get_packet, verbose); + length += printf("; return: "); + length += rtems_monitor_symbol_dump(&monitor_mpci->return_packet, verbose); + + printf("\n"); + length = 0; + length += rtems_monitor_pad(DATACOL, length); + + length += printf("send: "); + length += rtems_monitor_symbol_dump(&monitor_mpci->send_packet, verbose); + length += printf("; receive: "); + length += rtems_monitor_symbol_dump(&monitor_mpci->receive_packet, verbose); + + printf("\n"); + length = 0; +} -- cgit v1.2.3