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 : } args_t;
93 :
94 : typedef struct fd_caps_ctx fd_caps_ctx_t;
95 :
96 : typedef struct {
97 : const char * name;
98 : const char * description;
99 :
100 : void (*args)( int * pargc, char *** pargv, args_t * args );
101 : void (*perm)( args_t * args, fd_caps_ctx_t * caps, config_t * const config );
102 : void (*fn )( args_t * args, config_t * const config );
103 : } action_t;
104 :
105 : ulong
106 : fdctl_obj_align( fd_topo_t const * topo,
107 : fd_topo_obj_t const * obj );
108 :
109 : ulong
110 : fdctl_obj_footprint( fd_topo_t const * topo,
111 : fd_topo_obj_t const * obj );
112 :
113 : ulong
114 : fdctl_obj_loose( fd_topo_t const * topo,
115 : fd_topo_obj_t const * obj );
116 :
117 : fd_topo_run_tile_t
118 : fdctl_tile_run( fd_topo_tile_t * tile );
119 :
120 0 : #define ACTIONS_CNT (11UL)
121 : extern action_t ACTIONS[ ACTIONS_CNT ];
122 :
123 : void fdctl_boot( int * pargc,
124 : char *** pargv,
125 : config_t * config,
126 : char const * log_path);
127 :
128 : int
129 : main1( int argc,
130 : char ** _argv );
131 :
132 : void FD_FN_SENSITIVE
133 : generate_keypair( char const * keyfile,
134 : config_t * const config,
135 : int use_grnd_random );
136 :
137 : void
138 : configure_cmd_args( int * pargc,
139 : char *** pargv,
140 : args_t * args );
141 : void
142 : configure_cmd_perm( args_t * args,
143 : fd_caps_ctx_t * caps,
144 : config_t * const config );
145 : void
146 : configure_cmd_fn( args_t * args,
147 : config_t * const config );
148 :
149 : void
150 : run_cmd_perm( args_t * args,
151 : fd_caps_ctx_t * caps,
152 : config_t * const config );
153 :
154 : void
155 : run_cmd_fn( args_t * args,
156 : config_t * const config );
157 :
158 : void
159 : run1_cmd_args( int * pargc,
160 : char *** pargv,
161 : args_t * args );
162 :
163 : void
164 : run1_cmd_fn( args_t * args,
165 : config_t * const config );
166 :
167 : void
168 : run_agave_cmd_fn( args_t * args,
169 : config_t * const config );
170 :
171 : void
172 : monitor_cmd_args( int * pargc,
173 : char *** pargv,
174 : args_t * args );
175 : void
176 : monitor_cmd_perm( args_t * args,
177 : fd_caps_ctx_t * caps,
178 : config_t * const config );
179 : void
180 : monitor_cmd_fn( args_t * args,
181 : config_t * const config );
182 :
183 : void
184 : keys_cmd_args( int * pargc,
185 : char *** pargv,
186 : args_t * args );
187 :
188 : void
189 : keys_cmd_fn( args_t * args,
190 : config_t * const config );
191 :
192 : void
193 : ready_cmd_fn( args_t * args,
194 : config_t * const config );
195 :
196 : void
197 : mem_cmd_fn( args_t * args,
198 : config_t * const config );
199 :
200 : void
201 : spy_cmd_fn( args_t * args,
202 : config_t * const config );
203 :
204 : void
205 : help_cmd_fn( args_t * args,
206 : config_t * const config );
207 :
208 : void
209 : version_cmd_fn( args_t * args,
210 : config_t * const config );
211 :
212 : #endif /* HEADER_fd_src_app_fdctl_fdctl_h */
|