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