1 /** 2 * \file 3 * \brief Event C interface. 4 */ 5 /* 6 * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>, 7 * Alexander Warg <warg@os.inf.tu-dresden.de> 8 * economic rights: Technische Universität Dresden (Germany) 9 * 10 * This file is part of TUD:OS and distributed under the terms of the 11 * GNU General Public License 2. 12 * Please see the COPYING-GPL-2 file for details. 13 * 14 * As a special exception, you may use this file as part of a free software 15 * library without restriction. Specifically, if other files instantiate 16 * templates or use macros or inline functions from this file, or you compile 17 * this file and link it with other files to produce an executable, this 18 * file does not by itself cause the resulting executable to be covered by 19 * the GNU General Public License. This exception does not however 20 * invalidate any other reasons why the executable file might be covered by 21 * the GNU General Public License. 22 */ 23 #pragma once 24 25 /** 26 * \defgroup api_l4re_c_event Event interface 27 * \ingroup api_l4re_c 28 * \brief Event C interface. 29 */ 30 31 #include <l4/sys/types.h> 32 #include <l4/re/c/dataspace.h> 33 #include <l4/re/event.h> 34 35 EXTERN_C_BEGIN 36 37 /** 38 * \brief Event structure used in buffer. 39 */ 40 typedef struct 41 { 42 long long time; /**< Time stamp of the event */ 43 unsigned short type; /**< Type of the event */ 44 unsigned short code; /**< Code of the event */ 45 int value; /**< Value of the event */ 46 l4_umword_t stream_id; /**< Stream ID */ 47 } l4re_event_t; 48 49 /** 50 * \brief Get an event signal buffer. 51 * \ingroup api_l4re_c_event 52 * 53 * \param server Server to talk to. 54 * \param ds Buffer to event data. 55 * 56 * \return 0 for success, <0 on error 57 * 58 * \see L4Re::Event::get_buffer 59 */ 60 L4_CV long 61 l4re_event_get_buffer(const l4_cap_idx_t server, 62 const l4re_ds_t ds) L4_NOTHROW; 63 64 /** 65 * \brief Get number of streams 66 * \ingroup api_l4re_c_event 67 * 68 * \param server Server to talk to. 69 * 70 * \return 0 for success, <0 on error 71 * 72 * \see L4Re::Event::get_num_streams 73 */ 74 L4_CV long 75 l4re_event_get_num_streams(const l4_cap_idx_t server) L4_NOTHROW; 76 77 /** 78 * \brief Get information on a stream 79 * \ingroup api_l4re_c_event 80 * 81 * \param server Server to talk to. 82 * \param idx Index value. 83 * \retval info Information buffer. 84 * 85 * \return 0 for success, <0 on error 86 * 87 * \see L4Re::Event::get_stream_info 88 */ 89 L4_CV long 90 l4re_event_get_stream_info(const l4_cap_idx_t server, 91 int idx, l4re_event_stream_info_t *info) L4_NOTHROW; 92 93 /** 94 * \brief Get info for a stream given a stream id 95 * \ingroup api_l4re_c_event 96 * 97 * \param server Server to talk to. 98 * \param stream_id Stream ID. 99 * \retval info Information buffer. 100 * 101 * \return 0 for success, <0 on error 102 * 103 * \see L4Re::Event::get_stream_info_for_id 104 */ 105 L4_CV long 106 l4re_event_get_stream_info_for_id(const l4_cap_idx_t server, 107 l4_umword_t stream_id, 108 l4re_event_stream_info_t *info) L4_NOTHROW; 109 110 /** 111 * \brief Get Axis information for a stream. 112 * \ingroup api_l4re_c_event 113 * 114 * \param server Server to talk to. 115 * \param id Id of the stream to get information from. 116 * \param naxes Number of axes in `axis` array. 117 * \param[in] axis Array of axis IDs whose information should be retrieved. 118 * \param[out] info Information buffer to store the retrieved axis infos. 119 * 120 * \retval 0 Success 121 * \retval <0 Error 122 * 123 * \see L4Re::Event::get_axis_info 124 */ 125 L4_CV long 126 l4re_event_get_axis_info(const l4_cap_idx_t server, l4_umword_t id, 127 unsigned naxes, unsigned const *axis, 128 l4re_event_absinfo_t *info) L4_NOTHROW; 129 130 EXTERN_C_END 131