Revision a5f1b965 monitor.c
b/monitor.c | ||
---|---|---|
61 | 61 |
typedef struct term_cmd_t { |
62 | 62 |
const char *name; |
63 | 63 |
const char *args_type; |
64 |
void (*handler)();
|
|
64 |
void *handler;
|
|
65 | 65 |
const char *params; |
66 | 66 |
const char *help; |
67 | 67 |
} term_cmd_t; |
... | ... | |
224 | 224 |
static void do_info(const char *item) |
225 | 225 |
{ |
226 | 226 |
term_cmd_t *cmd; |
227 |
void (*handler)(void); |
|
227 | 228 |
|
228 | 229 |
if (!item) |
229 | 230 |
goto help; |
... | ... | |
235 | 236 |
help_cmd("info"); |
236 | 237 |
return; |
237 | 238 |
found: |
238 |
cmd->handler(); |
|
239 |
handler = cmd->handler; |
|
240 |
handler(); |
|
239 | 241 |
} |
240 | 242 |
|
241 | 243 |
static void do_info_version(void) |
... | ... | |
2158 | 2160 |
char buf[1024]; |
2159 | 2161 |
void *str_allocated[MAX_ARGS]; |
2160 | 2162 |
void *args[MAX_ARGS]; |
2163 |
void (*handler_0)(void); |
|
2164 |
void (*handler_1)(void *arg0); |
|
2165 |
void (*handler_2)(void *arg0, void *arg1); |
|
2166 |
void (*handler_3)(void *arg0, void *arg1, void *arg2); |
|
2167 |
void (*handler_4)(void *arg0, void *arg1, void *arg2, void *arg3); |
|
2168 |
void (*handler_5)(void *arg0, void *arg1, void *arg2, void *arg3, |
|
2169 |
void *arg4); |
|
2170 |
void (*handler_6)(void *arg0, void *arg1, void *arg2, void *arg3, |
|
2171 |
void *arg4, void *arg5); |
|
2172 |
void (*handler_7)(void *arg0, void *arg1, void *arg2, void *arg3, |
|
2173 |
void *arg4, void *arg5, void *arg6); |
|
2161 | 2174 |
|
2162 | 2175 |
#ifdef DEBUG |
2163 | 2176 |
term_printf("command='%s'\n", cmdline); |
... | ... | |
2420 | 2433 |
|
2421 | 2434 |
switch(nb_args) { |
2422 | 2435 |
case 0: |
2423 |
cmd->handler(); |
|
2436 |
handler_0 = cmd->handler; |
|
2437 |
handler_0(); |
|
2424 | 2438 |
break; |
2425 | 2439 |
case 1: |
2426 |
cmd->handler(args[0]); |
|
2440 |
handler_1 = cmd->handler; |
|
2441 |
handler_1(args[0]); |
|
2427 | 2442 |
break; |
2428 | 2443 |
case 2: |
2429 |
cmd->handler(args[0], args[1]); |
|
2444 |
handler_2 = cmd->handler; |
|
2445 |
handler_2(args[0], args[1]); |
|
2430 | 2446 |
break; |
2431 | 2447 |
case 3: |
2432 |
cmd->handler(args[0], args[1], args[2]); |
|
2448 |
handler_3 = cmd->handler; |
|
2449 |
handler_3(args[0], args[1], args[2]); |
|
2433 | 2450 |
break; |
2434 | 2451 |
case 4: |
2435 |
cmd->handler(args[0], args[1], args[2], args[3]); |
|
2452 |
handler_4 = cmd->handler; |
|
2453 |
handler_4(args[0], args[1], args[2], args[3]); |
|
2436 | 2454 |
break; |
2437 | 2455 |
case 5: |
2438 |
cmd->handler(args[0], args[1], args[2], args[3], args[4]); |
|
2456 |
handler_5 = cmd->handler; |
|
2457 |
handler_5(args[0], args[1], args[2], args[3], args[4]); |
|
2439 | 2458 |
break; |
2440 | 2459 |
case 6: |
2441 |
cmd->handler(args[0], args[1], args[2], args[3], args[4], args[5]); |
|
2460 |
handler_6 = cmd->handler; |
|
2461 |
handler_6(args[0], args[1], args[2], args[3], args[4], args[5]); |
|
2442 | 2462 |
break; |
2443 | 2463 |
case 7: |
2444 |
cmd->handler(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); |
|
2464 |
handler_7 = cmd->handler; |
|
2465 |
handler_7(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); |
|
2445 | 2466 |
break; |
2446 | 2467 |
default: |
2447 | 2468 |
term_printf("unsupported number of arguments: %d\n", nb_args); |
Also available in: Unified diff