blob: c24fcee46e32ea6592ac79981eb5619c052b662b [file] [log] [blame]
Brian Silverman100534c2015-09-07 15:51:23 -04001cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -08002 name = "aos_sync",
3 srcs = [
4 "aos_sync.cc",
5 ],
6 hdrs = [
7 "aos_sync.h",
8 ],
9 linkopts = [
10 "-lpthread",
11 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080012 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070013 visibility = ["//visibility:public"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080014 deps = [
John Park33858a32018-09-28 23:05:48 -070015 "//aos:macros",
Brian Silvermanb47f5552020-10-01 15:08:14 -070016 "//aos:thread_local",
John Park33858a32018-09-28 23:05:48 -070017 "//aos/util:compiler_memory_barrier",
Alex Perrycb7da4b2019-08-28 19:35:56 -070018 "@com_github_google_glog//:glog",
19 "@com_google_absl//absl/base",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080020 ],
Brian Silverman100534c2015-09-07 15:51:23 -040021)
22
23cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080024 name = "core_lib",
25 srcs = [
26 "core_lib.c",
27 ],
28 hdrs = [
29 "core_lib.h",
30 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080031 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070032 visibility = ["//visibility:public"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080033 deps = [
34 ":aos_sync",
35 ":shared_mem_types",
36 ],
Brian Silverman100534c2015-09-07 15:51:23 -040037)
38
39cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080040 name = "shared_mem",
41 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -070042 "shared_mem.cc",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080043 ],
44 hdrs = [
45 "shared_mem.h",
46 ],
47 linkopts = [
48 "-lrt",
49 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080050 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070051 visibility = ["//visibility:public"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080052 deps = [
53 ":aos_sync",
54 ":core_lib",
55 ":shared_mem_types",
Alex Perrycb7da4b2019-08-28 19:35:56 -070056 "@com_github_google_glog//:glog",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080057 ],
Austin Schuh044e18b2015-10-21 20:17:09 -070058)
59
60cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080061 # TODO(Brian): This should be shared_mem{,.h}, and the other one should be
62 # shared_mem_init{,.cc,.h}.
63 name = "shared_mem_types",
64 hdrs = [
65 "shared_mem_types.h",
66 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080067 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080068 deps = [
69 ":aos_sync",
70 ],
Brian Silverman100534c2015-09-07 15:51:23 -040071)
72
Brian Silverman100534c2015-09-07 15:51:23 -040073cc_test(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080074 name = "ipc_stress_test",
75 srcs = [
76 "ipc_stress_test.cc",
77 ],
78 tags = [
79 "manual",
80 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080081 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080082 deps = [
83 ":core_lib",
John Park33858a32018-09-28 23:05:48 -070084 "//aos:die",
John Park33858a32018-09-28 23:05:48 -070085 "//aos/libc:aos_strsignal",
86 "//aos/libc:dirname",
87 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -070088 "//aos/mutex",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080089 "//aos/testing:googletest",
90 "//aos/testing:test_shm",
Brian Silverman16a923c2018-10-31 19:40:51 -070091 "//aos/time",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080092 ],
Brian Silverman100534c2015-09-07 15:51:23 -040093)
94
Brian Silvermane4d8b282015-12-24 13:44:48 -080095cc_binary(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080096 name = "ipc_comparison",
97 srcs = [
98 "ipc_comparison.cc",
99 ],
Brian Silverman687896e2020-10-01 15:05:38 -0700100 linkopts = ["-lrt"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800101 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800102 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800103 ":event",
John Park33858a32018-09-28 23:05:48 -0700104 "//aos:condition",
Brian Silverman16a923c2018-10-31 19:40:51 -0700105 "//aos:init",
John Park33858a32018-09-28 23:05:48 -0700106 "//aos/logging",
107 "//aos/logging:implementations",
Brian Silverman16a923c2018-10-31 19:40:51 -0700108 "//aos/mutex",
109 "@com_github_gflags_gflags//:gflags",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800110 ],
Brian Silvermane4d8b282015-12-24 13:44:48 -0800111)
Austin Schuh6c590f82019-09-11 19:23:12 -0700112
113cc_library(
114 name = "signalfd",
115 srcs = [
116 "signalfd.cc",
117 ],
118 hdrs = [
119 "signalfd.h",
120 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800121 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700122 visibility = ["//visibility:public"],
Austin Schuh6c590f82019-09-11 19:23:12 -0700123 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700124 "@com_github_google_glog//:glog",
Austin Schuh6c590f82019-09-11 19:23:12 -0700125 ],
126)
Austin Schuh25356e22019-09-11 19:27:07 -0700127
Brian Silverman407cc532019-11-03 11:40:56 -0800128cc_test(
129 name = "signalfd_test",
130 srcs = [
131 "signalfd_test.cc",
132 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800133 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman407cc532019-11-03 11:40:56 -0800134 deps = [
135 ":signalfd",
136 "//aos/testing:googletest",
137 "//aos/testing:test_logging",
138 "@com_github_google_glog//:glog",
139 ],
140)
141
Austin Schuh25356e22019-09-11 19:27:07 -0700142cc_library(
143 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700144 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700145 hdrs = ["index.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800146 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700147 visibility = ["//visibility:public"],
Brian Silverman177567e2020-08-12 19:51:33 -0700148 deps = [
149 "@com_github_google_glog//:glog",
150 ],
Austin Schuh25356e22019-09-11 19:27:07 -0700151)
152
153cc_test(
154 name = "index_test",
155 srcs = ["index_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800156 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh25356e22019-09-11 19:27:07 -0700157 deps = [
158 ":index",
159 "//aos/testing:googletest",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700160 "@com_github_google_glog//:glog",
Austin Schuh25356e22019-09-11 19:27:07 -0700161 ],
162)
Austin Schuh20b2b082019-09-11 20:42:56 -0700163
164cc_library(
165 name = "lockless_queue",
166 srcs = [
167 "lockless_queue.cc",
168 "lockless_queue_memory.h",
169 ],
170 hdrs = ["lockless_queue.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800171 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700172 visibility = ["//visibility:public"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700173 deps = [
174 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800175 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700176 ":index",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700177 "//aos:realtime",
Austin Schuh8902fa52021-03-14 22:39:24 -0700178 "//aos:uuid",
Austin Schuh20b2b082019-09-11 20:42:56 -0700179 "//aos/time",
180 "//aos/util:compiler_memory_barrier",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700181 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700182 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700183 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700184 ],
185)
186
187cc_library(
188 name = "queue_racer",
189 testonly = True,
190 srcs = [
191 "queue_racer.cc",
192 ],
193 hdrs = [
194 "queue_racer.h",
195 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800196 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700197 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800198 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700199 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700200 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700201 ],
202)
203
204cc_test(
205 name = "lockless_queue_test",
206 timeout = "eternal",
207 srcs = ["lockless_queue_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800208 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700209 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800210 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700211 ":lockless_queue",
212 ":queue_racer",
213 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700214 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700215 "//aos/testing:googletest",
216 "//aos/testing:prevent_exit",
Austin Schuh20b2b082019-09-11 20:42:56 -0700217 ],
218)
219
220cc_test(
221 name = "lockless_queue_death_test",
222 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800223 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700224 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800225 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700226 ":lockless_queue",
227 ":queue_racer",
228 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700229 "//aos/events:epoll",
230 "//aos/libc:aos_strsignal",
231 "//aos/testing:googletest",
232 "//aos/testing:prevent_exit",
233 "//aos/testing:test_logging",
234 ],
235)
Brian Silvermana1652f32020-01-29 20:41:44 -0800236
237cc_library(
238 name = "data_alignment",
239 hdrs = [
240 "data_alignment.h",
241 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800242 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800243 visibility = ["//visibility:public"],
244 deps = [
245 "@com_github_google_glog//:glog",
246 ],
247)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700248
249cc_library(
250 name = "latency_lib",
251 srcs = ["latency_lib.cc"],
252 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800253 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700254 deps = [
255 "//aos:realtime",
256 "//aos/logging",
257 "//aos/time",
258 "@com_github_google_glog//:glog",
259 ],
260)
261
262cc_binary(
263 name = "signal_stress",
264 srcs = [
265 "signal_stress.cc",
266 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800267 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700268 deps = [
269 ":latency_lib",
270 "//aos:init",
271 "//aos/events:epoll",
272 "@com_github_gflags_gflags//:gflags",
273 ],
274)
275
276cc_binary(
277 name = "futex_latency",
278 srcs = [
279 "futex_latency.cc",
280 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800281 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700282 deps = [
283 ":latency_lib",
284 "//aos:condition",
285 "//aos:init",
286 "//aos/mutex",
287 "@com_github_gflags_gflags//:gflags",
288 ],
289)
290
291cc_binary(
292 name = "named_pipe_latency",
293 srcs = [
294 "named_pipe_latency.cc",
295 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800296 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700297 deps = [
298 ":latency_lib",
299 "//aos:init",
300 "//aos/events:epoll",
301 "@com_github_gflags_gflags//:gflags",
302 ],
303)
304
305cc_binary(
306 name = "eventfd_latency",
307 srcs = [
308 "eventfd_latency.cc",
309 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800310 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700311 deps = [
312 ":latency_lib",
313 "//aos:init",
314 "//aos/events:epoll",
315 "@com_github_gflags_gflags//:gflags",
316 ],
317)
Brian Silverman001f24d2020-08-12 19:33:20 -0700318
319cc_binary(
320 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700321 srcs = [
322 "print_lockless_queue_memory.cc",
323 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800324 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700325 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700326 deps = [
327 ":lockless_queue",
328 ],
329)
Brian Silverman7b266d92021-02-17 21:24:02 -0800330
331cc_library(
332 name = "event",
333 srcs = [
334 "event.cc",
335 ],
336 hdrs = [
337 "event.h",
338 ],
339 target_compatible_with = ["@platforms//os:linux"],
340 visibility = ["//visibility:public"],
341 deps = [
342 "//aos/ipc_lib:aos_sync",
343 "//aos/time",
344 "//aos/type_traits",
345 "@com_github_google_glog//:glog",
346 ],
347)
348
349cc_test(
350 name = "event_test",
351 srcs = [
352 "event_test.cc",
353 ],
354 target_compatible_with = ["@platforms//os:linux"],
355 deps = [
356 ":event",
357 "//aos/testing:googletest",
358 "//aos/testing:test_logging",
359 "//aos/time",
360 ],
361)