src: add loader src description
[fw/openocd] / src / helper / jim-eventloop.c
index d0b3ff0137d08cb8a112cf7e4286714b9874d65d..fe2d685bcec9507984eb64052e43a78531fe065f 100644 (file)
@@ -2,25 +2,25 @@
  *
  * Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
  * Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
- * Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net> 
- * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
+ * Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
+ * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
  * Copyright 2008 Andrew Lunn <andrew@lunn.ch>
  * Copyright 2008 Duane Ellis <openocd@duaneellis.com>
  * Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
- * 
+ *
  * The FreeBSD license
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above
  *    copyright notice, this list of conditions and the following
  *    disclaimer in the documentation and/or other materials
  *    provided with the distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE JIM TCL PROJECT ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
@@ -33,7 +33,7 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  * The views and conclusions contained in the software and documentation
  * are those of the authors and should not be interpreted as representing
  * official policies, either expressed or implied, of the Jim Tcl Project.
  *  - more complete [after] command with [after info] and other subcommands.
  *  - Win32 port
  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #define JIM_EXTENSION
 #define __JIM_EVENTLOOP_CORE__
 #ifdef __ECOS
 #include <pkgconf/jimtcl.h>
-#endif
-#ifdef __ECOS
+#include <sys/time.h>
 #include <cyg/jimtcl/jim.h>
 #include <cyg/jimtcl/jim-eventloop.h>
 #else
 #include "jim-eventloop.h"
 #endif
 
-/* POSIX includes */
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include "replacements.h"
-
-
-/* --- */
-
 /* File event structure */
 typedef struct Jim_FileEvent {
     void *handle;
-    int mask; /* one of JIM_EVENT_(READABLE|WRITABLE|EXCEPTION) */
+    int mask; /* one of JIM_EVENT_(READABLE | WRITABLE | EXCEPTION) */
     Jim_FileProc *fileProc;
     Jim_EventFinalizerProc *finalizerProc;
     void *clientData;
@@ -100,7 +90,7 @@ typedef struct Jim_EventLoop {
     Jim_TimeEvent *timeEventHead;
 } Jim_EventLoop;
 
-void Jim_CreateFileHandler(Jim_Interp *interp, void *handle, int mask,
+static void Jim_CreateFileHandler(Jim_Interp *interp, void *handle, int mask,
         Jim_FileProc *proc, void *clientData,
         Jim_EventFinalizerProc *finalizerProc)
 {
@@ -119,13 +109,13 @@ void Jim_CreateFileHandler(Jim_Interp *interp, void *handle, int mask,
        // fprintf(stderr,"raus\n");
 }
 
-void Jim_DeleteFileHandler(Jim_Interp *interp, void *handle)
+static void Jim_DeleteFileHandler(Jim_Interp *interp, void *handle)
 {
     Jim_FileEvent *fe, *prev = NULL;
     Jim_EventLoop *eventLoop = Jim_GetAssocData(interp, "eventloop");
 
     fe = eventLoop->fileEventHead;
-    while(fe) {
+    while (fe) {
         if (fe->handle == handle) {
             if (prev == NULL)
                 eventLoop->fileEventHead = fe->next;
@@ -141,16 +131,6 @@ void Jim_DeleteFileHandler(Jim_Interp *interp, void *handle)
     }
 }
 
-// The same for signals.
-void Jim_CreateSignalHandler(Jim_Interp *interp, int signum, 
-        Jim_FileProc *proc, void *clientData,
-        Jim_EventFinalizerProc *finalizerProc)
-{
-}
-void Jim_DeleteSignalHandler(Jim_Interp *interp, int signum) 
-{
-}
-
 /* That's another part of this extension that needs to be ported
  * to WIN32. */
 static void JimGetTime(long *seconds, long *milliseconds)
@@ -162,7 +142,7 @@ static void JimGetTime(long *seconds, long *milliseconds)
     *milliseconds = tv.tv_usec/1000;
 }
 
-jim_wide Jim_CreateTimeHandler(Jim_Interp *interp, jim_wide milliseconds,
+static jim_wide Jim_CreateTimeHandler(Jim_Interp *interp, jim_wide milliseconds,
         Jim_TimeProc *proc, void *clientData,
         Jim_EventFinalizerProc *finalizerProc)
 {
@@ -191,7 +171,7 @@ jim_wide Jim_CreateTimeHandler(Jim_Interp *interp, jim_wide milliseconds,
     return id;
 }
 
-jim_wide Jim_DeleteTimeHandler(Jim_Interp *interp, jim_wide id)
+static jim_wide Jim_DeleteTimeHandler(Jim_Interp *interp, jim_wide id)
 {
     Jim_TimeEvent *te, *prev = NULL;
     Jim_EventLoop *eventLoop = Jim_GetAssocData(interp, "eventloop");
@@ -201,9 +181,9 @@ jim_wide Jim_DeleteTimeHandler(Jim_Interp *interp, jim_wide id)
     JimGetTime(&cur_sec, &cur_ms);
 
     te = eventLoop->timeEventHead;
-    if (id >= eventLoop->timeEventNextId) 
+    if (id >= eventLoop->timeEventNextId)
        return -2; /* wrong event ID */
-    while(te) {
+    while (te) {
         if (te->id == id) {
             remain  = (te->when_sec - cur_sec) * 1000;
             remain += (te->when_ms  - cur_ms) ;
@@ -233,7 +213,7 @@ static Jim_TimeEvent *JimSearchNearestTimer(Jim_EventLoop *eventLoop)
     Jim_TimeEvent *te = eventLoop->timeEventHead;
     Jim_TimeEvent *nearest = NULL;
 
-    while(te) {
+    while (te) {
         if (!nearest || te->when_sec < nearest->when_sec ||
                 (te->when_sec == nearest->when_sec &&
                  te->when_ms < nearest->when_ms))
@@ -246,7 +226,7 @@ static Jim_TimeEvent *JimSearchNearestTimer(Jim_EventLoop *eventLoop)
 /* --- POSIX version of Jim_ProcessEvents, for now the only available --- */
 #define JIM_FILE_EVENTS 1
 #define JIM_TIME_EVENTS 2
-#define JIM_ALL_EVENTS (JIM_FILE_EVENTS|JIM_TIME_EVENTS)
+#define JIM_ALL_EVENTS (JIM_FILE_EVENTS | JIM_TIME_EVENTS)
 #define JIM_DONT_WAIT 4
 
 /* Process every pending time event, then every pending file event
@@ -280,7 +260,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
     while (fe != NULL) {
         int fd = fileno((FILE*)fe->handle);
 
-        if (fe->mask & JIM_EVENT_READABLE) 
+        if (fe->mask & JIM_EVENT_READABLE)
                FD_SET(fd, &rfds);
         if (fe->mask & JIM_EVENT_WRITABLE) FD_SET(fd, &wfds);
         if (fe->mask & JIM_EVENT_EXCEPTION) FD_SET(fd, &efds);
@@ -307,7 +287,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
             JimGetTime(&now_sec, &now_ms);
             tvp = &tv;
            dt   = 1000 * (shortest->when_sec - now_sec);
-           dt  += ( shortest->when_ms  - now_ms);
+           dt  += (shortest->when_ms  - now_ms);
             if (dt < 0) {
                dt = 1;
            }
@@ -319,7 +299,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
                // fprintf(stderr,"No Event\n");
         }
 
-        retval = select(maxfd+1, &rfds, &wfds, &efds, tvp);
+        retval = select(maxfd + 1, &rfds, &wfds, &efds, tvp);
         if (retval < 0) {
           switch (errno) {
               case EINTR:   fprintf(stderr,"select EINTR\n"); break;
@@ -328,7 +308,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
           }
        } else if (retval > 0) {
             fe = eventLoop->fileEventHead;
-            while(fe != NULL) {
+            while (fe != NULL) {
                 int fd = fileno((FILE*)fe->handle);
 
                // fprintf(stderr,"fd: %d mask: %02x \n",fd,fe->mask);
@@ -370,7 +350,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
     /* Check time events */
     te = eventLoop->timeEventHead;
     maxId = eventLoop->timeEventNextId-1;
-    while(te) {
+    while (te) {
         long now_sec, now_ms;
         jim_wide id;
 
@@ -401,7 +381,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
 }
 /* ---------------------------------------------------------------------- */
 
-void JimELAssocDataDeleProc(Jim_Interp *interp, void *data)
+static void JimELAssocDataDeleProc(Jim_Interp *interp, void *data)
 {
     void *next;
     Jim_FileEvent *fe;
@@ -409,7 +389,7 @@ void JimELAssocDataDeleProc(Jim_Interp *interp, void *data)
     Jim_EventLoop *eventLoop = data;
 
     fe = eventLoop->fileEventHead;
-    while(fe) {
+    while (fe) {
         next = fe->next;
         if (fe->finalizerProc)
             fe->finalizerProc(interp, fe->clientData);
@@ -418,7 +398,7 @@ void JimELAssocDataDeleProc(Jim_Interp *interp, void *data)
     }
 
     te = eventLoop->timeEventHead;
-    while(te) {
+    while (te) {
         next = te->next;
         if (te->finalizerProc)
             te->finalizerProc(interp, te->clientData);
@@ -428,7 +408,7 @@ void JimELAssocDataDeleProc(Jim_Interp *interp, void *data)
     Jim_Free(data);
 }
 
-static int JimELVwaitCommand(Jim_Interp *interp, int argc, 
+static int JimELVwaitCommand(Jim_Interp *interp, int argc,
         Jim_Obj *const *argv)
 {
     Jim_Obj *oldValue;
@@ -456,21 +436,21 @@ static int JimELVwaitCommand(Jim_Interp *interp, int argc,
     return JIM_OK;
 }
 
-void JimAfterTimeHandler(Jim_Interp *interp, void *clientData)
+static void JimAfterTimeHandler(Jim_Interp *interp, void *clientData)
 {
     Jim_Obj *objPtr = clientData;
 
     Jim_EvalObjBackground(interp, objPtr);
 }
 
-void JimAfterTimeEventFinalizer(Jim_Interp *interp, void *clientData)
+static void JimAfterTimeEventFinalizer(Jim_Interp *interp, void *clientData)
 {
     Jim_Obj *objPtr = clientData;
 
     Jim_DecrRefCount(interp, objPtr);
 }
 
-static int JimELAfterCommand(Jim_Interp *interp, int argc, 
+static int JimELAfterCommand(Jim_Interp *interp, int argc,
         Jim_Obj *const *argv)
 {
     jim_wide ms, id;
@@ -507,7 +487,7 @@ static int JimELAfterCommand(Jim_Interp *interp, int argc,
        int tlen ;
        jim_wide remain = 0;
        const char *tok = Jim_GetString(argv[2], &tlen);
-       if ( sscanf(tok,"after#%lld",&id) == 1) {
+       if (sscanf(tok,"after#%" JIM_WIDE_MODIFIER, &id) == 1) {
                remain =  Jim_DeleteTimeHandler(interp, id);
                if (remain > -2)  {
                        Jim_SetResult(interp, Jim_NewIntObj(interp, remain));
@@ -519,7 +499,7 @@ static int JimELAfterCommand(Jim_Interp *interp, int argc,
        }
     default:
        fprintf(stderr,"unserviced option to after %d\n",option);
-    } 
+    }
     return JIM_OK;
 }