X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fhelper%2Fjim-eventloop.h;h=ddb6fc98593f03966c05d65d65e0bcff846e4e69;hb=9e9633c6b98cc9243ae78cd12ab657d041eaa73e;hp=3923463e7f1a2a6eb3e13d7565e3c099fdf418db;hpb=c76b0618d7457a68b464a64e91ed98dc2482b262;p=openocd.git diff --git a/src/helper/jim-eventloop.h b/src/helper/jim-eventloop.h index 3923463e7f..ddb6fc9859 100644 --- a/src/helper/jim-eventloop.h +++ b/src/helper/jim-eventloop.h @@ -1,110 +1,101 @@ -/* Jim - A small embeddable Tcl interpreter - * - * Copyright 2005 Salvatore Sanfilippo - * Copyright 2005 Clemens Hintze - * Copyright 2005 patthoyts - Pat Thoyts - * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com - * Copyright 2008 Andrew Lunn - * Copyright 2008 Duane Ellis - * Copyright 2008 Uwe Klein - * - * 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 - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * JIM TCL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * 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. - **/ -/* ------ USAGE ------- - * - * In order to use this file from other extensions include it in every - * file where you need to call the eventloop API, also in the init - * function of your extension call Jim_ImportEventloopAPI(interp) - * after the Jim_InitExtension() call. - * - * See the UDP extension as example. - */ - - -#ifndef __JIM_EVENTLOOP_H__ -#define __JIM_EVENTLOOP_H__ - -typedef int Jim_FileProc(Jim_Interp *interp, void *clientData, int mask); -typedef int Jim_SignalProc(Jim_Interp *interp, void *clientData, void *msg); -typedef void Jim_TimeProc(Jim_Interp *interp, void *clientData); -typedef void Jim_EventFinalizerProc(Jim_Interp *interp, void *clientData); - -/* File event structure */ -#define JIM_EVENT_READABLE 1 -#define JIM_EVENT_WRITABLE 2 -#define JIM_EVENT_EXCEPTION 4 -#define JIM_EVENT_FEOF 8 - -#define JIM_API(x) x -#define JIM_STATIC - -/* --- 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_DONT_WAIT 4 - -JIM_STATIC void JIM_API(Jim_CreateFileHandler) (Jim_Interp *interp, - void *handle, int mask, - Jim_FileProc *proc, void *clientData, - Jim_EventFinalizerProc *finalizerProc); -JIM_STATIC void JIM_API(Jim_DeleteFileHandler) (Jim_Interp *interp, - void *handle); -JIM_STATIC jim_wide JIM_API(Jim_CreateTimeHandler) (Jim_Interp *interp, - jim_wide milliseconds, - Jim_TimeProc *proc, void *clientData, - Jim_EventFinalizerProc *finalizerProc); -JIM_STATIC jim_wide JIM_API(Jim_DeleteTimeHandler) (Jim_Interp *interp, jim_wide id); -JIM_STATIC int JIM_API(Jim_ProcessEvents) (Jim_Interp *interp, int flags); - -#undef JIM_STATIC -#undef JIM_API - -#ifndef __JIM_EVENTLOOP_CORE__ - -#define JIM_GET_API(name) \ - Jim_GetApi(interp, "Jim_" #name, ((void *)&Jim_ ## name)) - -#if defined(JIM_EXTENSION) || defined(JIM_EMBEDDED) -/* This must be included "inline" inside the extension */ -static void Jim_ImportEventloopAPI(Jim_Interp *interp) -{ - JIM_GET_API(CreateFileHandler); - JIM_GET_API(DeleteFileHandler); - JIM_GET_API(CreateTimeHandler); - JIM_GET_API(DeleteTimeHandler); - JIM_GET_API(ProcessEvents); -} -#endif /* defined JIM_EXTENSION || defined JIM_EMBEDDED */ -#undef JIM_GET_API -#endif /* __JIM_EVENTLOOP_CORE__ */ - -#endif /* __JIM_EVENTLOOP_H__ */ +/* Jim - A small embeddable Tcl interpreter + * + * Copyright 2005 Salvatore Sanfilippo + * Copyright 2005 Clemens Hintze + * Copyright 2005 patthoyts - Pat Thoyts + * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com + * Copyright 2008 Andrew Lunn + * Copyright 2008 Duane Ellis + * Copyright 2008 Uwe Klein + * + * 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 + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * JIM TCL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * 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. + **/ +/* ------ USAGE ------- + * + * In order to use this file from other extensions include it in every + * file where you need to call the eventloop API, also in the init + * function of your extension call Jim_ImportEventloopAPI(interp) + * after the Jim_InitExtension() call. + * + * See the UDP extension as example. + */ + + +#ifndef __JIM_EVENTLOOP_H__ +#define __JIM_EVENTLOOP_H__ + +typedef int Jim_FileProc(Jim_Interp *interp, void *clientData, int mask); +typedef int Jim_SignalProc(Jim_Interp *interp, void *clientData, void *msg); +typedef void Jim_TimeProc(Jim_Interp *interp, void *clientData); +typedef void Jim_EventFinalizerProc(Jim_Interp *interp, void *clientData); + +/* File event structure */ +#define JIM_EVENT_READABLE 1 +#define JIM_EVENT_WRITABLE 2 +#define JIM_EVENT_EXCEPTION 4 +#define JIM_EVENT_FEOF 8 + +#define JIM_API(x) x +#define JIM_STATIC + +JIM_STATIC int Jim_EventLoopOnLoad(Jim_Interp *interp); + +/* --- 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_DONT_WAIT 4 + +JIM_STATIC void JIM_API(Jim_CreateFileHandler) (Jim_Interp *interp, + void *handle, int mask, + Jim_FileProc *proc, void *clientData, + Jim_EventFinalizerProc *finalizerProc); +JIM_STATIC void JIM_API(Jim_DeleteFileHandler) (Jim_Interp *interp, + void *handle); +JIM_STATIC jim_wide JIM_API(Jim_CreateTimeHandler) (Jim_Interp *interp, + jim_wide milliseconds, + Jim_TimeProc *proc, void *clientData, + Jim_EventFinalizerProc *finalizerProc); +JIM_STATIC jim_wide JIM_API(Jim_DeleteTimeHandler) (Jim_Interp *interp, jim_wide id); +JIM_STATIC int JIM_API(Jim_ProcessEvents) (Jim_Interp *interp, int flags); + +#undef JIM_STATIC +#undef JIM_API + +#ifndef __JIM_EVENTLOOP_CORE__ + +#define JIM_GET_API(name) \ + Jim_GetApi(interp, "Jim_" #name, ((void *)&Jim_ ## name)) + +#undef JIM_GET_API +#endif /* __JIM_EVENTLOOP_CORE__ */ + +#endif /* __JIM_EVENTLOOP_H__ */