WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 3/3] RFC: libxl: internal API for event handling

This is a proposed internal API for other parts of libxl to use when
dealing with events (both osevents and API events ie libxl_event).

There will probably also be some helper functions for
libxl_awaiting_*.

THIS PATCH IS AN RFC AND SHOULD NOT BE APPLIED.  It contains only the
suggested changes to libxl_internal.h, and not any of the necessary
implementation nor consequential changes.
---
 tools/libxl/libxl_internal.h |   52 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 579188e..8eaf85a 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -165,6 +165,58 @@ _hidden char **libxl__xs_directory(libxl__gc *gc, 
xs_transaction_t t,
                                    char *path, unsigned int *nb);
    /* On error: returns NULL, sets errno (no logging) */
 
+
+/* Event handling functions provided by the libxl event core to the
+ * rest of libxl.  Implemented in terms of _beforepoll/_afterpoll
+ * and/or the fd registration machinery, as provided by the
+ * application.
+ *
+ * Semantics are similar to those of the fd and timeout registration
+ * functions provided to libxl_osevent_register_hooks.
+ *
+ * Non-0 returns from libxl__ev_{modify,deregister} have already been
+ * logged by the core and should be returned unmodified to libxl's
+ * caller; NB that they may be valid libxl error codes but they may
+ * also be positive numbers supplied by the caller.
+ */
+
+typedef struct libxl__ev_fd libxl__ev_fd;
+typedef void libxl__ev_fd_callback(libxl__gc *gc, libxl__ev_fd *ev,
+                                   int fd, short events, short revents,
+                                   void *for_callback);
+
+int libxl__ev_fd_register(libxl__gc*, libxl__ev_fd *ev_out,
+                          int fd, short events,
+                          libxl__ev_fd_callback*, void *for_callback);
+int libxl__ev_fd_modify(libxl__gc*, libxl__ev_fd *ev,
+                        short events);
+void libxl__ev_fd_deregister(libxl__gc*, libxl__ev_fd *ev);
+
+typedef struct libxl__ev_time libxl__ev_time;
+typedef void libxl__ev_time_callback(libxl__gc *gc, libxl__ev_fd *ev,
+                                     void *for_callback);
+
+int libxl__ev_time_register(libxl__gc*, libxl__ev_fd *ev_out,
+                            int milliseconds,
+                            libxl__ev_time_callback*, void *for_callback);
+int libxl__ev_time_modify(libxl__gc*, libxl__ev_fd *ev,
+                          int milliseconds);
+void libxl__ev_time_deregister(libxl__gc*, libxl__ev_time *ev);
+
+
+void libxl__event_occured(libxl__gc*, libxl_event *event);
+  /* Arranges to notify the application that the event has occurred.
+   * event should be suitable for passing to libxl_event_free. */
+
+void libxl__event_disaster(libxl__gc*, const char *msg, int errnoval,
+                           libxl_event_type type /* may be 0 */);
+  /* See the "disaster" argument to libxl_event_register_callbacks.
+   * NB that this function may return and the caller isn't supposed to
+   * then crash, although it may fail (and henceforth leave things in
+   * a state where many or all calls fail).
+   */
+
+
 /* from xl_dom */
 _hidden int libxl__domain_is_hvm(libxl__gc *gc, uint32_t domid);
 _hidden int libxl__domain_shutdown_reason(libxl__gc *gc, uint32_t domid);
-- 
1.5.6.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel