* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
+ * Copyright (C) 2007,2008 Øyvind Harboe *
+ * oyvind.harboe@zylin.com *
+ * *
+ * Copyright (C) 2008 by Spencer Oliver *
+ * spen@spen-soft.co.uk *
+ * *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
return ERROR_OK;
}
-int remove_services()
+int remove_services(void)
{
service_t *c = services;
return ERROR_OK;
}
-extern void lockBigLock();
-extern void unlockBigLock();
+extern void openocd_sleep_prelude(void);
+extern void openocd_sleep_postlude(void);
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;
}
#ifndef _WIN32
-#ifndef BUILD_ECOSBOARD
+#if BUILD_ECOSBOARD == 0
/* add STDIN to read_fds */
FD_SET(fileno(stdin), &read_fds);
#endif
#endif
+ openocd_sleep_prelude();
+ kept_alive();
// 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)
{
}
target_call_timer_callbacks();
+ process_jim_events ();
if (retval == 0)
{
}
#ifndef _WIN32
-#ifndef BUILD_ECOSBOARD
+#if BUILD_ECOSBOARD == 0
if (FD_ISSET(fileno(stdin), &read_fds))
{
if (getc(stdin) == 'x')
}
#endif
}
- if (--lockCount==0)
- {
- unlockBigLock();
- }
return ERROR_OK;
}
#ifdef _WIN32
BOOL WINAPI ControlHandler(DWORD dwCtrlType)
{
- shutdown_openocd = 1;
- return TRUE;
+ shutdown_openocd = 1;
+ return TRUE;
}
void sig_handler(int sig) {
- shutdown_openocd = 1;
+ shutdown_openocd = 1;
}
#endif
-int server_init()
+int server_init(void)
{
#ifdef _WIN32
WORD wVersionRequested;
signal(SIGBREAK, sig_handler);
signal(SIGABRT, sig_handler);
#endif
+
return ERROR_OK;
}
-int server_quit()
+int server_quit(void)
{
remove_services();