TIOVX User Guide
tivx_event_queue.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2018 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
63 
64 
65 #ifndef TIVX_EVENT_QUEUE_H_
66 #define TIVX_EVENT_QUEUE_H_
67 
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
71 
86 #define TIVX_ENUM_EVENT_QUEUE (vx_enum)0x2
91 typedef struct _tivx_event_queue_elem_t
92 {
93  vx_enum event_id;
94  uint64_t timestamp;
95  uint32_t app_value;
96  uintptr_t param1;
97  uintptr_t param2;
98  uintptr_t param3;
100 
106 typedef struct _tivx_event_queue_t
107 {
110 
115 
117  uintptr_t free_queue_memory[TIVX_EVENT_QUEUE_MAX_SIZE];
118 
123 
125  uintptr_t ready_queue_memory[TIVX_EVENT_QUEUE_MAX_SIZE];
126 
129 
131 
132 
138 
144 
150 
156 };
157 
166 
167 
176 
185  vx_enum event_id, uint64_t timestamp, uint32_t app_value, uintptr_t param1, uintptr_t param2, uintptr_t param3);
186 
187 
194 
201  tivx_event_queue_t *event_q, vx_event_t *event,
202  vx_uint32 timeout);
203 
209  enum tivx_queue_type_e queue_type, enum vx_event_type_e event_type,
210  vx_uint32 param, vx_uint32 app_value, vx_bool is_context_event);
211 
212 #ifdef __cplusplus
213 }
214 #endif
215 
216 #endif
vx_bool
void ownEventQueueEnableEvents(tivx_event_queue_t *event_q, vx_bool enable)
Enable an event queue.
vx_status ownRegisterEvent(vx_reference ref, enum tivx_queue_type_e queue_type, enum vx_event_type_e event_type, vx_uint32 param, vx_uint32 app_value, vx_bool is_context_event)
Registers an event to a given event queue.
vx_event_type_e
Type of event that can be generated during system execution.
tivx_queue free_queue
handle to free queue holding tivx_event_queue_elem_t's NOTE: queue holds index's to event_list[] ...
vx_status ownEventQueueDelete(tivx_event_queue_t *event_q)
Delete a event queue.
int32_t vx_enum
Context event queue.
vx_status ownWaitEventQueue(tivx_event_queue_t *event_q, vx_event_t *event, vx_uint32 timeout)
Generic wait event queue API.
vx_bool enable
flag to control enable/disable of event addition to event queue
vx_status ownEventQueueCreate(tivx_event_queue_t *event_q)
Create a event queue.
Event queue object.
Typedef for a queue.
Definition: tivx_queue.h:103
VX_ID_TI
vx_enum vx_status
#define VX_ENUM_BASE(vendor, id)
#define TIVX_EVENT_QUEUE_MAX_SIZE
Max size of event queue.
tivx_queue ready_queue
handle to ready queue holding tivx_event_queue_elem_t's which are ready to be delivered to users NOTE...
struct _vx_reference * vx_reference
Graph event queue.
Graph streaming event queue.
#define VX_ATTRIBUTE_BASE(vendor, object)
vx_status ownEventQueueAddEvent(tivx_event_queue_t *event_q, vx_enum event_id, uint64_t timestamp, uint32_t app_value, uintptr_t param1, uintptr_t param2, uintptr_t param3)
Add event to event queue.
Data structure which holds event information.
#define TIVX_ENUM_EVENT_QUEUE
The enum type enumeration for event queues.
tivx_queue_type_e
Type of event that can be generated during system execution.
uint32_t vx_uint32
Element inserted into event queue.