Removed unnecessary files.
[staging/basesystem.git] / module / kernel-module-evklib / agldd / evk_lib.h
1 /**
2  * @file evk_lib.h
3  * @brief Event library -- API specifications for kernel modules
4  *
5  * @copyright Copyright (c) 2016-2019 TOYOTA MOTOR CORPORATION.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 #ifndef _evk_lib_h_
20 #define _evk_lib_h_
21
22 #include <agldd/ev_common.h>
23 #include <linux/types.h>
24 #include <linux/ioctl.h>
25
26 /* API definition */
27
28 /** @addtogroup EV
29  * @{ */
30 #ifdef __KERNEL__
31 /* Flag message queue create/delete */
32 EV_ERR EVK_create_flag(EV_ID flagID);
33 EV_ERR EVK_create_flag64(EV_ID flagID);
34 EV_ERR EVK_create_queue(EV_ID queueID,
35                         UINT8 length,
36                         UINT16 max_bytes,
37                         EV_Message_Queue_Type type);
38
39 EV_ERR EVK_create_flag_auto_id(/* OUT */EV_ID *flagID);
40 EV_ERR EVK_create_flag64_auto_id(/* OUT */EV_ID *flagID);
41 EV_ERR EVK_create_queue_auto_id(/* OUT */EV_ID *queueID,
42                                 UINT8 length,
43                                 UINT16 max_bytes,
44                                 EV_Message_Queue_Type type);
45
46 EV_ERR EVK_destroy_flag(EV_ID flagID);
47 EV_ERR EVK_destroy_queue(EV_ID queueID);
48
49 /* Send events */
50 EV_ERR EVK_set_flag(EV_ID flagID, UINT32 bits);
51 EV_ERR EVK_set_flag64(EV_ID flagID, UINT64 bits);
52 EV_ERR EVK_send_message(EV_ID queueID, UINT16 bytes, const void *message,
53                         UINT32 senderInfo);
54
55 /* Get event(with search conditions) */
56 EV_ERR EVK_get_flag(EV_ID flagID, /* OUT */EV_Flag *flag);
57 EV_ERR EVK_wait_flag(EV_ID flagID, /* OUT */EV_Flag *flag);/* block */
58 EV_ERR EVK_peek_flag(EV_ID flagID, /* OUT */EV_Flag *flag);
59 EV_ERR EVK_get_flag64(EV_ID flagID, /* OUT */EV_Flag64 *flag);
60 EV_ERR EVK_wait_flag64(EV_ID flagID, /* OUT */EV_Flag64 *flag);/* block */
61 EV_ERR EVK_peek_flag64(EV_ID flagID, /* OUT */EV_Flag64 *flag);
62
63 EV_ERR EVK_get_message(EV_ID queueID, /* OUT */EV_Message *message);
64 EV_ERR EVK_wait_message(EV_ID queueID, /* OUT */EV_Message *message);/* block */
65 EV_ERR EVK_peek_message(EV_ID queueID, /* OUT */EV_Message *message);
66
67 EV_ERR EVK_find_message_by_sender(EV_ID queueID, UINT32 senderInfo,
68                                  /* OUT */EV_Message *message);
69 EV_ERR EVK_find_message_by_content(EV_ID queueID, UINT16 length,
70                                   const void *compare_bytes,
71                                   /* OUT */EV_Message *message);
72 #endif
73
74 /** @} */
75
76 /** @addtogroup EVK_in
77  * @{ */
78 #define EVK_NAME "evk"
79 #define EVK_DEV_NAME "/dev/agl/"EVK_NAME
80 #define EVK_DEV_MAJOR (1033 % 256)
81 #define EVK_IOC_MAGIC 0xE7
82
83 #define EVK_IOC_CREATE_FLAG             _IO(EVK_IOC_MAGIC, 0x00)
84 #define EVK_IOC_CREATE_FLAG64           _IO(EVK_IOC_MAGIC, 0x01)
85 #define EVK_IOC_CREATE_MESSAGE_QUEUE    _IO(EVK_IOC_MAGIC, 0x02)
86 #define EVK_IOC_ALLOC_FLAG_ID           _IO(EVK_IOC_MAGIC, 0x03)
87 #define EVK_IOC_ALLOC_FLAG64_ID         _IO(EVK_IOC_MAGIC, 0x04)
88 #define EVK_IOC_ALLOC_QUEUE_ID          _IO(EVK_IOC_MAGIC, 0x05)
89 #define EVK_IOC_DESTROY_QUEUE           _IO(EVK_IOC_MAGIC, 0x06)
90 #define EVK_IOC_STORE_FLAG              _IO(EVK_IOC_MAGIC, 0x07)
91 #define EVK_IOC_STORE_FLAG64            _IO(EVK_IOC_MAGIC, 0x08)
92 #define EVK_IOC_STORE_MESSAGE           _IO(EVK_IOC_MAGIC, 0x09)
93 #define EVK_IOC_SET_POLL                _IO(EVK_IOC_MAGIC, 0x0a)
94 #define EVK_IOC_GET_EVENT               _IO(EVK_IOC_MAGIC, 0x0b)
95 #define EVK_IOC_PEEK_EVENT              _IO(EVK_IOC_MAGIC, 0x0c)
96 #define EVK_IOC_WAIT_EVENT              _IO(EVK_IOC_MAGIC, 0x0d)
97 #define EVK_IOC_GET_NEXT_EVENT          _IO(EVK_IOC_MAGIC, 0x0e)
98 #define EVK_IOC_PEEK_NEXT_EVENT         _IO(EVK_IOC_MAGIC, 0x0f)
99 #define EVK_IOC_DEBUG_LIST              _IO(EVK_IOC_MAGIC, 0x10)
100
101 typedef struct {
102   EV_ID queueID;/**< Queue ID */
103   UINT32 max_bytes;/**< Maximum number of bytes for an event */
104   UINT8 length;/**< Queue length */
105   EV_Message_Queue_Type type;/**< Type */
106 } EVK_Message_Queue_Request;
107
108 typedef struct {
109   INT32 num; /**< Number of queue ID of search */
110   EV_ID ids[EV_MAX_IDS_IN_PROCESS]; /**< Queue ID of search */
111   EV_Event ev; /**< [OUT] First event that occured */
112 } EVK_Next_Event_Query;
113
114 /** @} */
115
116 #endif /* !_evk_lib_h */