Line data Source code
1 : #ifndef HEADER_fd_src_app_fdctl_fdctl_h
2 : #define HEADER_fd_src_app_fdctl_fdctl_h
3 :
4 : #include "config.h"
5 : #include "caps.h"
6 : #include "utility.h"
7 :
8 : #include "../../disco/topo/fd_topo.h"
9 :
10 : #include <unistd.h>
11 : #include <errno.h>
12 :
13 : extern fd_topo_run_tile_t * TILES[];
14 :
15 :
16 0 : #define CONFIGURE_STAGE_COUNT 10
17 : struct configure_stage;
18 :
19 : typedef union {
20 : struct {
21 : char tile_name[ 7UL ];
22 : ulong kind_id;
23 : int pipe_fd;
24 : } run1;
25 :
26 : struct {
27 : long dt_min;
28 : long dt_max;
29 : long duration;
30 : uint seed;
31 : double ns_per_tic;
32 : int drain_output_fd;
33 : int with_bench;
34 : int with_sankey;
35 : } monitor;
36 :
37 : struct {
38 : int command;
39 : struct configure_stage * stages[ CONFIGURE_STAGE_COUNT ];
40 : } configure;
41 :
42 : struct {
43 : int parent_pipefd;
44 : int monitor;
45 : int no_configure;
46 : int no_init_workspaces;
47 : int no_agave;
48 : char debug_tile[ 32 ];
49 : } dev;
50 :
51 : struct {
52 : char tile_name[ 7UL ];
53 : int no_configure;
54 : } dev1;
55 :
56 : struct {
57 : ulong cmd;
58 : char file_path[ 256 ];
59 : } keys;
60 :
61 : struct {
62 : const char * payload_base64;
63 : ulong count;
64 : const char * dst_ip;
65 : ushort dst_port;
66 : } txn;
67 :
68 : struct {
69 : char link_name[ 64UL ];
70 : char pcap_path[ 256UL ];
71 : } dump;
72 :
73 : struct {
74 : char name[ 13UL ];
75 : } flame;
76 :
77 : struct {
78 : char affinity[ AFFINITY_SZ ];
79 : uint tpu_ip;
80 : uint rpc_ip;
81 : ushort tpu_port;
82 : ushort rpc_port;
83 : ulong accounts;
84 : ulong connections;
85 : ulong benchg;
86 : ulong benchs;
87 : int no_quic;
88 : int transaction_mode;
89 : float contending_fraction;
90 : float cu_price_spread;
91 : } load;
92 :
93 : struct {
94 : int event;
95 : int dump; /* whether the user requested --dump */
96 : } quic_trace;
97 : } args_t;
98 :
99 : typedef struct fd_caps_ctx fd_caps_ctx_t;
100 :
101 : typedef struct {
102 : const char * name;
103 : const char * description;
104 : uchar is_diagnostic; /* 1 implies action should be allowed for prod debugging */
105 :
106 : void (*args)( int * pargc, char *** pargv, args_t * args );
107 : void (*perm)( args_t * args, fd_caps_ctx_t * caps, config_t * const config );
108 : void (*fn )( args_t * args, config_t * const config );
109 : } action_t;
110 :
111 : ulong
112 : fdctl_obj_align( fd_topo_t const * topo,
113 : fd_topo_obj_t const * obj );
114 :
115 : ulong
116 : fdctl_obj_footprint( fd_topo_t const * topo,
117 : fd_topo_obj_t const * obj );
118 :
119 : ulong
120 : fdctl_obj_loose( fd_topo_t const * topo,
121 : fd_topo_obj_t const * obj );
122 :
123 : fd_topo_run_tile_t
124 : fdctl_tile_run( fd_topo_tile_t * tile );
125 :
126 0 : #define ACTIONS_CNT (11UL)
127 : extern action_t ACTIONS[ ACTIONS_CNT ];
128 :
129 : void fdctl_boot( int * pargc,
130 : char *** pargv,
131 : config_t * config,
132 : char const * log_path);
133 :
134 : int
135 : main1( int argc,
136 : char ** _argv );
137 :
138 : void FD_FN_SENSITIVE
139 : generate_keypair( char const * keyfile,
140 : config_t * const config,
141 : int use_grnd_random );
142 :
143 : void
144 : configure_cmd_args( int * pargc,
145 : char *** pargv,
146 : args_t * args );
147 : void
148 : configure_cmd_perm( args_t * args,
149 : fd_caps_ctx_t * caps,
150 : config_t * const config );
151 : void
152 : configure_cmd_fn( args_t * args,
153 : config_t * const config );
154 :
155 : void
156 : run_cmd_perm( args_t * args,
157 : fd_caps_ctx_t * caps,
158 : config_t * const config );
159 :
160 : void
161 : run_cmd_fn( args_t * args,
162 : config_t * const config );
163 :
164 : void
165 : run1_cmd_args( int * pargc,
166 : char *** pargv,
167 : args_t * args );
168 :
169 : void
170 : run1_cmd_fn( args_t * args,
171 : config_t * const config );
172 :
173 : void
174 : run_agave_cmd_fn( args_t * args,
175 : config_t * const config );
176 :
177 : void
178 : monitor_cmd_args( int * pargc,
179 : char *** pargv,
180 : args_t * args );
181 : void
182 : monitor_cmd_perm( args_t * args,
183 : fd_caps_ctx_t * caps,
184 : config_t * const config );
185 : void
186 : monitor_cmd_fn( args_t * args,
187 : config_t * const config );
188 :
189 : void
190 : keys_cmd_args( int * pargc,
191 : char *** pargv,
192 : args_t * args );
193 :
194 : void
195 : keys_cmd_fn( args_t * args,
196 : config_t * const config );
197 :
198 : void
199 : ready_cmd_fn( args_t * args,
200 : config_t * const config );
201 :
202 : void
203 : mem_cmd_fn( args_t * args,
204 : config_t * const config );
205 :
206 : void
207 : spy_cmd_fn( args_t * args,
208 : config_t * const config );
209 :
210 : void
211 : help_cmd_fn( args_t * args,
212 : config_t * const config );
213 :
214 : void
215 : version_cmd_fn( args_t * args,
216 : config_t * const config );
217 :
218 : #endif /* HEADER_fd_src_app_fdctl_fdctl_h */
|