source: rtems/cpukit/libmisc/monitor/mon-mpci.c @ 24f8915

5
Last change on this file since 24f8915 was 24f8915, checked in by Sebastian Huber <sebastian.huber@…>, on 12/12/19 at 06:11:54

config: Add _MPCI_Configuration

Replace the user MPCI configuration table with a system provided
_MPCI_Configuration.

Update #3735.

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