blob: 76c532484865e01f604d3cb69369522c851998c7 [file] [log] [blame]
Philipp Schrader9b1790e2018-03-10 20:21:30 -08001package(default_visibility = ["//visibility:public"])
Brian Silverman100534c2015-09-07 15:51:23 -04002
3cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -08004 name = "aos_sync",
5 srcs = [
6 "aos_sync.cc",
7 ],
8 hdrs = [
9 "aos_sync.h",
10 ],
11 linkopts = [
12 "-lpthread",
13 ],
14 deps = [
John Park33858a32018-09-28 23:05:48 -070015 "//aos:macros",
Brian Silverman16a923c2018-10-31 19:40:51 -070016 "//aos:once",
John Park33858a32018-09-28 23:05:48 -070017 "//aos/logging",
18 "//aos/util:compiler_memory_barrier",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080019 ],
Brian Silverman100534c2015-09-07 15:51:23 -040020)
21
22cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080023 name = "core_lib",
24 srcs = [
25 "core_lib.c",
26 ],
27 hdrs = [
28 "core_lib.h",
29 ],
30 deps = [
31 ":aos_sync",
32 ":shared_mem_types",
33 ],
Brian Silverman100534c2015-09-07 15:51:23 -040034)
35
36cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080037 name = "shared_mem",
38 srcs = [
39 "shared_mem.c",
40 ],
41 hdrs = [
42 "shared_mem.h",
43 ],
44 linkopts = [
45 "-lrt",
46 ],
47 deps = [
48 ":aos_sync",
49 ":core_lib",
50 ":shared_mem_types",
John Park33858a32018-09-28 23:05:48 -070051 "//aos/logging",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080052 ],
Austin Schuh044e18b2015-10-21 20:17:09 -070053)
54
55cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080056 # TODO(Brian): This should be shared_mem{,.h}, and the other one should be
57 # shared_mem_init{,.cc,.h}.
58 name = "shared_mem_types",
59 hdrs = [
60 "shared_mem_types.h",
61 ],
62 deps = [
63 ":aos_sync",
64 ],
Brian Silverman100534c2015-09-07 15:51:23 -040065)
66
67cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080068 name = "queue",
69 srcs = [
70 "queue.cc",
71 ],
72 hdrs = [
73 "queue.h",
74 ],
75 linkopts = [
76 "-lrt",
77 ],
78 deps = [
79 ":core_lib",
80 ":shared_mem",
John Park33858a32018-09-28 23:05:48 -070081 "//aos:condition",
John Park33858a32018-09-28 23:05:48 -070082 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -070083 "//aos/mutex",
John Park33858a32018-09-28 23:05:48 -070084 "//aos/util:options",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080085 ],
Brian Silverman100534c2015-09-07 15:51:23 -040086)
87
88cc_test(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080089 name = "raw_queue_test",
90 srcs = [
91 "raw_queue_test.cc",
92 ],
93 deps = [
94 ":core_lib",
95 ":queue",
John Park33858a32018-09-28 23:05:48 -070096 "//aos:die",
John Park33858a32018-09-28 23:05:48 -070097 "//aos/logging",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080098 "//aos/testing:googletest",
99 "//aos/testing:prevent_exit",
100 "//aos/testing:test_shm",
Brian Silverman16a923c2018-10-31 19:40:51 -0700101 "//aos/time",
102 "//aos/util:death_test_log_implementation",
103 "//aos/util:thread",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800104 ],
Brian Silverman100534c2015-09-07 15:51:23 -0400105)
106
107cc_test(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800108 name = "ipc_stress_test",
109 srcs = [
110 "ipc_stress_test.cc",
111 ],
112 tags = [
113 "manual",
114 ],
115 deps = [
116 ":core_lib",
John Park33858a32018-09-28 23:05:48 -0700117 "//aos:die",
John Park33858a32018-09-28 23:05:48 -0700118 "//aos/libc:aos_strsignal",
119 "//aos/libc:dirname",
120 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -0700121 "//aos/mutex",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800122 "//aos/testing:googletest",
123 "//aos/testing:test_shm",
Brian Silverman16a923c2018-10-31 19:40:51 -0700124 "//aos/time",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800125 ],
Brian Silverman100534c2015-09-07 15:51:23 -0400126)
127
128cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800129 name = "scoped_message_ptr",
130 deps = [
131 ":queue",
132 ],
Brian Silverman100534c2015-09-07 15:51:23 -0400133)
Brian Silvermane4d8b282015-12-24 13:44:48 -0800134
135cc_binary(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800136 name = "ipc_comparison",
137 srcs = [
138 "ipc_comparison.cc",
139 ],
140 deps = [
141 ":queue",
John Park33858a32018-09-28 23:05:48 -0700142 "//aos:condition",
143 "//aos:event",
Brian Silverman16a923c2018-10-31 19:40:51 -0700144 "//aos:init",
John Park33858a32018-09-28 23:05:48 -0700145 "//aos/logging",
146 "//aos/logging:implementations",
Brian Silverman16a923c2018-10-31 19:40:51 -0700147 "//aos/mutex",
148 "@com_github_gflags_gflags//:gflags",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800149 ],
Brian Silvermane4d8b282015-12-24 13:44:48 -0800150)
Austin Schuh6c590f82019-09-11 19:23:12 -0700151
152cc_library(
153 name = "signalfd",
154 srcs = [
155 "signalfd.cc",
156 ],
157 hdrs = [
158 "signalfd.h",
159 ],
160 deps = [
161 "//aos/logging",
162 ],
163)
Austin Schuh25356e22019-09-11 19:27:07 -0700164
165cc_library(
166 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700167 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700168 hdrs = ["index.h"],
169)
170
171cc_test(
172 name = "index_test",
173 srcs = ["index_test.cc"],
174 deps = [
175 ":index",
176 "//aos/testing:googletest",
177 "//aos/testing:test_logging",
178 ],
179)
Austin Schuh20b2b082019-09-11 20:42:56 -0700180
181cc_library(
182 name = "lockless_queue",
183 srcs = [
184 "lockless_queue.cc",
185 "lockless_queue_memory.h",
186 ],
187 hdrs = ["lockless_queue.h"],
188 deps = [
189 ":aos_sync",
190 ":index",
191 "//aos:init",
192 "//aos/logging",
193 "//aos/time",
194 "//aos/util:compiler_memory_barrier",
195 ],
196)
197
198cc_library(
199 name = "queue_racer",
200 testonly = True,
201 srcs = [
202 "queue_racer.cc",
203 ],
204 hdrs = [
205 "queue_racer.h",
206 ],
207 deps = [
208 ":lockless_queue",
209 "//aos:event",
210 "//third_party/googletest:gtest",
211 ],
212)
213
214cc_test(
215 name = "lockless_queue_test",
216 timeout = "eternal",
217 srcs = ["lockless_queue_test.cc"],
218 deps = [
219 ":lockless_queue",
220 ":queue_racer",
221 ":signalfd",
222 "//aos:event",
223 "//aos/events:epoll",
224 "//aos/libc:aos_strsignal",
225 "//aos/testing:googletest",
226 "//aos/testing:prevent_exit",
227 "//aos/testing:test_logging",
228 ],
229)
230
231cc_test(
232 name = "lockless_queue_death_test",
233 srcs = ["lockless_queue_death_test.cc"],
234 deps = [
235 ":lockless_queue",
236 ":queue_racer",
237 ":signalfd",
238 "//aos:event",
239 "//aos/events:epoll",
240 "//aos/libc:aos_strsignal",
241 "//aos/testing:googletest",
242 "//aos/testing:prevent_exit",
243 "//aos/testing:test_logging",
244 ],
245)