kdbus: the driver, original and non-working
[platform/kernel/linux-exynos.git] / samples / kdbus / kdbus-api.h
1 #ifndef KDBUS_API_H
2 #define KDBUS_API_H
3
4 #include <sys/ioctl.h>
5 #include <linux/kdbus.h>
6
7 #define KDBUS_ALIGN8(l) (((l) + 7) & ~7)
8 #define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data)
9 #define KDBUS_ITEM_SIZE(s) KDBUS_ALIGN8((s) + KDBUS_ITEM_HEADER_SIZE)
10 #define KDBUS_ITEM_NEXT(item) \
11         (typeof(item))(((uint8_t *)item) + KDBUS_ALIGN8((item)->size))
12 #define KDBUS_FOREACH(iter, first, _size)                               \
13         for (iter = (first);                                            \
14              ((uint8_t *)(iter) < (uint8_t *)(first) + (_size)) &&      \
15                ((uint8_t *)(iter) >= (uint8_t *)(first));               \
16              iter = (void*)(((uint8_t *)iter) + KDBUS_ALIGN8((iter)->size)))
17
18 static inline int kdbus_cmd_bus_make(int control_fd, struct kdbus_cmd *cmd)
19 {
20         int ret = ioctl(control_fd, KDBUS_CMD_BUS_MAKE, cmd);
21         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
22 }
23
24 static inline int kdbus_cmd_endpoint_make(int bus_fd, struct kdbus_cmd *cmd)
25 {
26         int ret = ioctl(bus_fd, KDBUS_CMD_ENDPOINT_MAKE, cmd);
27         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
28 }
29
30 static inline int kdbus_cmd_endpoint_update(int ep_fd, struct kdbus_cmd *cmd)
31 {
32         int ret = ioctl(ep_fd, KDBUS_CMD_ENDPOINT_UPDATE, cmd);
33         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
34 }
35
36 static inline int kdbus_cmd_hello(int bus_fd, struct kdbus_cmd_hello *cmd)
37 {
38         int ret = ioctl(bus_fd, KDBUS_CMD_HELLO, cmd);
39         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
40 }
41
42 static inline int kdbus_cmd_update(int fd, struct kdbus_cmd *cmd)
43 {
44         int ret = ioctl(fd, KDBUS_CMD_UPDATE, cmd);
45         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
46 }
47
48 static inline int kdbus_cmd_byebye(int conn_fd, struct kdbus_cmd *cmd)
49 {
50         int ret = ioctl(conn_fd, KDBUS_CMD_BYEBYE, cmd);
51         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
52 }
53
54 static inline int kdbus_cmd_free(int conn_fd, struct kdbus_cmd_free *cmd)
55 {
56         int ret = ioctl(conn_fd, KDBUS_CMD_FREE, cmd);
57         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
58 }
59
60 static inline int kdbus_cmd_conn_info(int conn_fd, struct kdbus_cmd_info *cmd)
61 {
62         int ret = ioctl(conn_fd, KDBUS_CMD_CONN_INFO, cmd);
63         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
64 }
65
66 static inline int kdbus_cmd_bus_creator_info(int conn_fd, struct kdbus_cmd_info *cmd)
67 {
68         int ret = ioctl(conn_fd, KDBUS_CMD_BUS_CREATOR_INFO, cmd);
69         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
70 }
71
72 static inline int kdbus_cmd_list(int fd, struct kdbus_cmd_list *cmd)
73 {
74         int ret = ioctl(fd, KDBUS_CMD_LIST, cmd);
75         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
76 }
77
78 static inline int kdbus_cmd_send(int conn_fd, struct kdbus_cmd_send *cmd)
79 {
80         int ret = ioctl(conn_fd, KDBUS_CMD_SEND, cmd);
81         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
82 }
83
84 static inline int kdbus_cmd_recv(int conn_fd, struct kdbus_cmd_recv *cmd)
85 {
86         int ret = ioctl(conn_fd, KDBUS_CMD_RECV, cmd);
87         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
88 }
89
90 static inline int kdbus_cmd_name_acquire(int conn_fd, struct kdbus_cmd *cmd)
91 {
92         int ret = ioctl(conn_fd, KDBUS_CMD_NAME_ACQUIRE, cmd);
93         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
94 }
95
96 static inline int kdbus_cmd_name_release(int conn_fd, struct kdbus_cmd *cmd)
97 {
98         int ret = ioctl(conn_fd, KDBUS_CMD_NAME_RELEASE, cmd);
99         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
100 }
101
102 static inline int kdbus_cmd_match_add(int conn_fd, struct kdbus_cmd_match *cmd)
103 {
104         int ret = ioctl(conn_fd, KDBUS_CMD_MATCH_ADD, cmd);
105         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
106 }
107
108 static inline int kdbus_cmd_match_remove(int conn_fd, struct kdbus_cmd_match *cmd)
109 {
110         int ret = ioctl(conn_fd, KDBUS_CMD_MATCH_REMOVE, cmd);
111         return (ret < 0) ? (errno > 0 ? -errno : -EINVAL) : 0;
112 }
113
114 #endif /* KDBUS_API_H */