From: Zachary T Welch Date: Mon, 23 Nov 2009 17:30:02 +0000 (-0800) Subject: pld: use static registration instead of callback X-Git-Tag: v0.4.0-rc1~394 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=e2f23c54373097098ef0b59377299d7382f4c58a pld: use static registration instead of callback Remove register_callbacks from pld_device structure, using an array of command_registration records instead. --- diff --git a/src/pld/pld.c b/src/pld/pld.c index 421fc6171a..24afd07a38 100644 --- a/src/pld/pld.c +++ b/src/pld/pld.c @@ -74,17 +74,22 @@ COMMAND_HANDLER(handle_pld_device_command) struct pld_device *p, *c; /* register pld specific commands */ - if (pld_drivers[i]->register_commands(CMD_CTX) != ERROR_OK) - { - LOG_ERROR("couldn't register '%s' commands", CMD_ARGV[0]); - exit(-1); + int retval; + if (pld_drivers[i]->commands) { + retval = register_commands(CMD_CTX, NULL, + pld_drivers[i]->commands); + if (ERROR_OK != retval) + { + LOG_ERROR("couldn't register '%s' commands", CMD_ARGV[0]); + return ERROR_FAIL; + } } c = malloc(sizeof(struct pld_device)); c->driver = pld_drivers[i]; c->next = NULL; - int retval = CALL_COMMAND_HANDLER(pld_drivers[i]->pld_device_command, c); + retval = CALL_COMMAND_HANDLER(pld_drivers[i]->pld_device_command, c); if (ERROR_OK != retval) { LOG_ERROR("'%s' driver rejected pld device", CMD_ARGV[0]); diff --git a/src/pld/pld.h b/src/pld/pld.h index b183e3e052..1ae775cc89 100644 --- a/src/pld/pld.h +++ b/src/pld/pld.h @@ -31,7 +31,7 @@ struct pld_driver { char *name; __PLD_DEVICE_COMMAND((*pld_device_command)); - int (*register_commands)(struct command_context *cmd_ctx); + const struct command_registration *commands; int (*load)(struct pld_device *pld_device, const char *filename); }; diff --git a/src/pld/virtex2.c b/src/pld/virtex2.c index 1025e61c4f..77eb866997 100644 --- a/src/pld/virtex2.c +++ b/src/pld/virtex2.c @@ -253,14 +253,9 @@ static const struct command_registration virtex2_command_handler[] = { COMMAND_REGISTRATION_DONE }; -static int virtex2_register_commands(struct command_context *cmd_ctx) -{ - return register_commands(cmd_ctx, NULL, virtex2_command_handler); -} - struct pld_driver virtex2_pld = { .name = "virtex2", - .register_commands = &virtex2_register_commands, + .commands = virtex2_command_handler, .pld_device_command = &virtex2_pld_device_command, .load = &virtex2_load, };