source: rtems/c/src/libmisc/monitor/mon-mpci.c @ 674c900

4.104.114.84.95
Last change on this file since 674c900 was 5beb562, checked in by Joel Sherrill <joel.sherrill@…>, on 09/21/97 at 16:58:57

Cleaned up as part of adding the Monitor test.

  • Property mode set to 100644
File size: 4.4 KB
Line 
1/*
2 * RTEMS MPCI Config display support
3 *
4 * TODO
5 *
6 *  $Id$
7 */
8
9
10#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
11#include <rtems.h>
12#include <rtems/monitor.h>
13
14#include <stdio.h>
15#include <stdlib.h>             /* strtoul() */
16
17#define DATACOL 15
18
19/*
20 * Fill in entire monitor config table
21 * for sending to a remote monitor or printing on the local system
22 */
23
24void
25rtems_monitor_mpci_canonical(
26    rtems_monitor_mpci_t *canonical_mpci,
27    void                  *config_void
28)
29{
30    rtems_configuration_table *c = _Configuration_Table;
31    rtems_multiprocessing_table *m;
32    rtems_mpci_table *mt;
33
34    m = c->User_multiprocessing_table;
35    if (m == 0)
36        return;
37    mt = m->User_mpci_table;
38   
39    canonical_mpci->node = m->node;
40    canonical_mpci->maximum_nodes = m->maximum_nodes;
41    canonical_mpci->maximum_global_objects = m->maximum_global_objects;
42    canonical_mpci->maximum_proxies = m->maximum_proxies;
43
44    canonical_mpci->default_timeout = mt->default_timeout;
45    canonical_mpci->maximum_packet_size = mt->maximum_packet_size;
46
47    rtems_monitor_symbol_canonical_by_value(&canonical_mpci->initialization,
48                                            (void *) mt->initialization);
49
50    rtems_monitor_symbol_canonical_by_value(&canonical_mpci->get_packet,
51                                            (void *) mt->get_packet);
52    rtems_monitor_symbol_canonical_by_value(&canonical_mpci->return_packet,
53                                            (void *) mt->return_packet);
54    rtems_monitor_symbol_canonical_by_value(&canonical_mpci->send_packet,
55                                            (void *) mt->send_packet);
56    rtems_monitor_symbol_canonical_by_value(&canonical_mpci->receive_packet,
57                                            (void *) mt->receive_packet);
58}   
59
60/*
61 * This is easy, since there is only 1 (altho we could get them from
62 *    other nodes...)
63 */
64
65void *
66rtems_monitor_mpci_next(
67    void                  *object_info,
68    rtems_monitor_mpci_t  *canonical_mpci,
69    rtems_id              *next_id
70)
71{
72    rtems_configuration_table *c = _Configuration_Table;
73    int n = rtems_get_index(*next_id);
74
75    if (n >= 1)
76        goto failed;
77   
78    if ( ! c->User_multiprocessing_table)
79        goto failed;
80   
81    _Thread_Disable_dispatch();
82
83    *next_id += 1;
84    return (void *) c;
85
86failed:
87    *next_id = RTEMS_OBJECT_ID_FINAL;
88    return 0;
89}
90
91
92void
93rtems_monitor_mpci_dump_header(
94    boolean verbose
95)
96{
97    printf("\
98           max     max     max     default    max\n\
99   node   nodes  globals  proxies  timeout  pktsize\n");
100/*23456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
1010         1         2         3         4         5         6         7       */
102           
103    rtems_monitor_separator();
104}
105
106
107void
108rtems_monitor_mpci_dump(
109    rtems_monitor_mpci_t *monitor_mpci,
110    boolean               verbose
111)
112{
113    unsigned32   length = 0;
114
115    length += rtems_monitor_pad(2, length);
116    length += printf("  %d", monitor_mpci->node);
117    length += rtems_monitor_pad(11, length);
118    length += printf("%d", monitor_mpci->maximum_nodes);
119   
120    length += rtems_monitor_pad(18, length);
121    length += rtems_monitor_dump_decimal(monitor_mpci->maximum_global_objects);
122   
123    length += rtems_monitor_pad(28, length);
124    length += rtems_monitor_dump_decimal(monitor_mpci->maximum_proxies);
125
126    length += rtems_monitor_pad(37, length);
127    length += rtems_monitor_dump_decimal(monitor_mpci->default_timeout);
128
129    length += rtems_monitor_pad(46, length);
130    length += rtems_monitor_dump_decimal(monitor_mpci->maximum_packet_size);
131
132    printf("\n");
133    length = 0;
134    length += rtems_monitor_pad(DATACOL, length);
135
136    length += printf("init: ");
137    length += rtems_monitor_symbol_dump(&monitor_mpci->initialization, verbose);
138
139    printf("\n");
140    length = 0;
141    length += rtems_monitor_pad(DATACOL, length);
142
143    length += printf("get: ");
144    length += rtems_monitor_symbol_dump(&monitor_mpci->get_packet, verbose);
145    length += printf(";  return: ");
146    length += rtems_monitor_symbol_dump(&monitor_mpci->return_packet, verbose);
147
148    printf("\n");
149    length = 0;
150    length += rtems_monitor_pad(DATACOL, length);
151
152    length += printf("send: ");
153    length += rtems_monitor_symbol_dump(&monitor_mpci->send_packet, verbose);
154    length += printf(";  receive: ");
155    length += rtems_monitor_symbol_dump(&monitor_mpci->receive_packet, verbose);
156
157    printf("\n");
158    length = 0;
159}
Note: See TracBrowser for help on using the repository browser.