diff options
author | Zachary T Welch <zw@superlucidity.net> | 2009-11-23 09:30:02 -0800 |
---|---|---|
committer | Zachary T Welch <zw@superlucidity.net> | 2009-11-24 21:37:33 -0800 |
commit | e2f23c54373097098ef0b59377299d7382f4c58a (patch) | |
tree | 11fdbb5ec4a4daf6ea9c1f9fb32cd258480d3062 /src/pld | |
parent | 76b89755c994faa8ff0f646c722373ccb876f744 (diff) | |
download | openocd_libswd-e2f23c54373097098ef0b59377299d7382f4c58a.tar.gz openocd_libswd-e2f23c54373097098ef0b59377299d7382f4c58a.tar.bz2 openocd_libswd-e2f23c54373097098ef0b59377299d7382f4c58a.tar.xz openocd_libswd-e2f23c54373097098ef0b59377299d7382f4c58a.zip |
pld: use static registration instead of callback
Remove register_callbacks from pld_device structure, using an array
of command_registration records instead.
Diffstat (limited to 'src/pld')
-rw-r--r-- | src/pld/pld.c | 15 | ||||
-rw-r--r-- | src/pld/pld.h | 2 | ||||
-rw-r--r-- | src/pld/virtex2.c | 7 |
3 files changed, 12 insertions, 12 deletions
diff --git a/src/pld/pld.c b/src/pld/pld.c index 421fc617..24afd07a 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 b183e3e0..1ae775cc 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 1025e61c..77eb8669 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, }; |