diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-07 08:05:07 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-07 08:05:07 +0000 |
commit | b31d83c6c7eb274144acc7c40ea4bf8424b6b1e0 (patch) | |
tree | 41223c22654dc036aaccc6e47b6f5a924707d2f5 /src | |
parent | d6194d7356d15eaff0a8267779cbc5561a324bf8 (diff) | |
download | openocd+libswd-b31d83c6c7eb274144acc7c40ea4bf8424b6b1e0.tar.gz openocd+libswd-b31d83c6c7eb274144acc7c40ea4bf8424b6b1e0.tar.bz2 openocd+libswd-b31d83c6c7eb274144acc7c40ea4bf8424b6b1e0.tar.xz openocd+libswd-b31d83c6c7eb274144acc7c40ea4bf8424b6b1e0.zip |
added pre/postlude fn's for when OpenOCD is sleeping.
git-svn-id: svn://svn.berlios.de/openocd/trunk@765 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 11 | ||||
-rw-r--r-- | src/openocd.c | 5 | ||||
-rw-r--r-- | src/server/server.c | 22 |
3 files changed, 14 insertions, 24 deletions
@@ -18,16 +18,18 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -/* implementations of OpenOCD that uses multithreading needs to lock OpenOCD while calling - * OpenOCD fn's. No-op in vanilla OpenOCD +/* implementations of OpenOCD that uses multithreading needs to know when + * OpenOCD is sleeping. No-op in vanilla OpenOCD */ -void lockBigLock() +void openocd_sleep_prelude() { } -void unlockBigLock() + +void openocd_sleep_postlude() { } + /* This is the main entry for developer PC hosted OpenOCD. @@ -47,3 +49,4 @@ int main(int argc, char *argv[]) return openocd_main(argc, argv); } + diff --git a/src/openocd.c b/src/openocd.c index ee00f19a..834b11d9 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -185,8 +185,6 @@ int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **arg return ERROR_OK; } -void lockBigLock(); -void unlockBigLock(); Jim_Interp *interp; command_context_t *active_cmd_ctx; @@ -445,8 +443,6 @@ static int Jim_Command_openocd_ignore(Jim_Interp *interp, int argc, Jim_Obj *con int retval; char *cmd = (char*)Jim_GetString(argv[1], NULL); - lockBigLock(); - Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0); if (startLoop) @@ -465,7 +461,6 @@ static int Jim_Command_openocd_ignore(Jim_Interp *interp, int argc, Jim_Obj *con log_remove_callback(tcl_output, tclOutput); Jim_SetResult(interp, tclOutput); - unlockBigLock(); return (ignore||(retval==ERROR_OK))?JIM_OK:JIM_ERR; } diff --git a/src/server/server.c b/src/server/server.c index fb003624..2d910a1a 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -246,8 +246,8 @@ int remove_services() return ERROR_OK; } -extern void lockBigLock(); -extern void unlockBigLock(); +extern void openocd_sleep_prelude(); +extern void openocd_sleep_postlude(); int server_loop(command_context_t *command_context) { @@ -266,13 +266,6 @@ int server_loop(command_context_t *command_context) LOG_ERROR("couldn't set SIGPIPE to SIG_IGN"); #endif - // This function is reentrant(workaround for configuration problems) - static int lockCount=0; - if (lockCount++==0) - { - lockBigLock(); - } - /* do regular tasks after at most 10ms */ tv.tv_sec = 0; tv.tv_usec = 10000; @@ -316,10 +309,10 @@ int server_loop(command_context_t *command_context) #endif #endif + openocd_sleep_prelude(); // Only while we're sleeping we'll let others run - unlockBigLock(); retval = select(fd_max + 1, &read_fds, NULL, NULL, &tv); - lockBigLock(); + openocd_sleep_postlude(); if (retval == -1) { @@ -421,10 +414,6 @@ int server_loop(command_context_t *command_context) } #endif } - if (--lockCount==0) - { - unlockBigLock(); - } return ERROR_OK; } @@ -462,6 +451,7 @@ int server_init() signal(SIGBREAK, sig_handler); signal(SIGABRT, sig_handler); #endif + return ERROR_OK; } @@ -493,3 +483,5 @@ int handle_shutdown_command(struct command_context_s *cmd_ctx, char *cmd, char * return ERROR_COMMAND_CLOSE_CONNECTION; } + + |