blob: d67616f88793585f9cfb12fdf75eebec0cff5959 [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 = [
Brian Silverman1ed5df52021-09-13 20:14:06 -070015 ":shm_observers",
John Park33858a32018-09-28 23:05:48 -070016 "//aos:macros",
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",
Brian Silverman16a923c2018-10-31 19:40:51 -0700107 "//aos/mutex",
108 "@com_github_gflags_gflags//:gflags",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800109 ],
Brian Silvermane4d8b282015-12-24 13:44:48 -0800110)
Austin Schuh6c590f82019-09-11 19:23:12 -0700111
112cc_library(
113 name = "signalfd",
114 srcs = [
115 "signalfd.cc",
116 ],
117 hdrs = [
118 "signalfd.h",
119 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800120 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700121 visibility = ["//visibility:public"],
Austin Schuh6c590f82019-09-11 19:23:12 -0700122 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700123 "@com_github_google_glog//:glog",
Austin Schuh6c590f82019-09-11 19:23:12 -0700124 ],
125)
Austin Schuh25356e22019-09-11 19:27:07 -0700126
Brian Silverman407cc532019-11-03 11:40:56 -0800127cc_test(
128 name = "signalfd_test",
129 srcs = [
130 "signalfd_test.cc",
131 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800132 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman407cc532019-11-03 11:40:56 -0800133 deps = [
134 ":signalfd",
135 "//aos/testing:googletest",
136 "//aos/testing:test_logging",
137 "@com_github_google_glog//:glog",
138 ],
139)
140
Austin Schuh25356e22019-09-11 19:27:07 -0700141cc_library(
Austin Schuh83cbb1e2023-06-23 12:59:02 -0700142 name = "index32",
143 srcs = ["index.cc"],
144 hdrs = ["index.h"],
145 defines = [
146 "AOS_QUEUE_ATOMIC_SIZE=32",
147 ],
148 target_compatible_with = ["@platforms//os:linux"],
149 visibility = ["//visibility:public"],
150 deps = [
151 ":shm_observers",
152 "@com_github_google_glog//:glog",
153 ],
154)
155
156cc_test(
157 name = "index32_test",
158 srcs = ["index_test.cc"],
159 target_compatible_with = ["@platforms//os:linux"],
160 deps = [
161 ":index32",
162 "//aos/testing:googletest",
163 "@com_github_google_glog//:glog",
164 ],
165)
166
167cc_library(
Austin Schuh25356e22019-09-11 19:27:07 -0700168 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700169 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700170 hdrs = ["index.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"],
Brian Silverman177567e2020-08-12 19:51:33 -0700173 deps = [
Brian Silverman1ed5df52021-09-13 20:14:06 -0700174 ":shm_observers",
Brian Silverman177567e2020-08-12 19:51:33 -0700175 "@com_github_google_glog//:glog",
176 ],
Austin Schuh25356e22019-09-11 19:27:07 -0700177)
178
179cc_test(
180 name = "index_test",
181 srcs = ["index_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800182 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh25356e22019-09-11 19:27:07 -0700183 deps = [
184 ":index",
185 "//aos/testing:googletest",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700186 "@com_github_google_glog//:glog",
Austin Schuh25356e22019-09-11 19:27:07 -0700187 ],
188)
Austin Schuh20b2b082019-09-11 20:42:56 -0700189
190cc_library(
191 name = "lockless_queue",
192 srcs = [
193 "lockless_queue.cc",
194 "lockless_queue_memory.h",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700195 "memory_mapped_queue.cc",
Austin Schuh20b2b082019-09-11 20:42:56 -0700196 ],
Austin Schuh4d275fc2022-09-16 15:42:45 -0700197 hdrs = [
198 "lockless_queue.h",
199 "memory_mapped_queue.h",
200 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800201 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700202 visibility = ["//visibility:public"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700203 deps = [
204 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800205 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700206 ":index",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700207 "//aos:configuration",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700208 "//aos:realtime",
Austin Schuh8902fa52021-03-14 22:39:24 -0700209 "//aos:uuid",
Austin Schuh82ea7382023-07-14 15:17:34 -0700210 "//aos/events:context",
Austin Schuh20b2b082019-09-11 20:42:56 -0700211 "//aos/time",
212 "//aos/util:compiler_memory_barrier",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700213 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700214 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700215 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700216 ],
217)
218
219cc_library(
220 name = "queue_racer",
221 testonly = True,
222 srcs = [
223 "queue_racer.cc",
224 ],
225 hdrs = [
226 "queue_racer.h",
227 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800228 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700229 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800230 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700231 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700232 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700233 ],
234)
235
Austin Schuhfaec51a2023-09-08 17:43:32 -0700236cc_library(
237 name = "lockless_queue_stepping",
238 testonly = True,
239 srcs = [
240 "lockless_queue_stepping.cc",
241 ],
242 hdrs = ["lockless_queue_stepping.h"],
243 deps = [
244 ":lockless_queue",
245 ":shm_observers",
246 "//aos/libc:aos_strsignal",
247 "//aos/testing:prevent_exit",
248 "@com_google_googletest//:gtest",
249 ],
250)
251
Austin Schuh20b2b082019-09-11 20:42:56 -0700252cc_test(
253 name = "lockless_queue_test",
254 timeout = "eternal",
255 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700256 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800257 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700258 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800259 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700260 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700261 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700262 ":queue_racer",
263 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700264 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700265 "//aos/testing:googletest",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700266 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700267 ],
268)
269
270cc_test(
271 name = "lockless_queue_death_test",
272 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800273 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700274 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800275 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700276 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700277 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700278 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700279 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700280 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700281 "//aos/events:epoll",
282 "//aos/libc:aos_strsignal",
283 "//aos/testing:googletest",
284 "//aos/testing:prevent_exit",
285 "//aos/testing:test_logging",
286 ],
287)
Brian Silvermana1652f32020-01-29 20:41:44 -0800288
289cc_library(
290 name = "data_alignment",
291 hdrs = [
292 "data_alignment.h",
293 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800294 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800295 visibility = ["//visibility:public"],
296 deps = [
297 "@com_github_google_glog//:glog",
298 ],
299)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700300
301cc_library(
302 name = "latency_lib",
303 srcs = ["latency_lib.cc"],
304 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800305 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700306 deps = [
307 "//aos:realtime",
308 "//aos/logging",
309 "//aos/time",
310 "@com_github_google_glog//:glog",
311 ],
312)
313
314cc_binary(
315 name = "signal_stress",
316 srcs = [
317 "signal_stress.cc",
318 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800319 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700320 deps = [
321 ":latency_lib",
322 "//aos:init",
323 "//aos/events:epoll",
324 "@com_github_gflags_gflags//:gflags",
325 ],
326)
327
328cc_binary(
329 name = "futex_latency",
330 srcs = [
331 "futex_latency.cc",
332 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800333 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700334 deps = [
335 ":latency_lib",
336 "//aos:condition",
337 "//aos:init",
338 "//aos/mutex",
339 "@com_github_gflags_gflags//:gflags",
340 ],
341)
342
343cc_binary(
344 name = "named_pipe_latency",
345 srcs = [
346 "named_pipe_latency.cc",
347 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800348 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700349 deps = [
350 ":latency_lib",
351 "//aos:init",
352 "//aos/events:epoll",
353 "@com_github_gflags_gflags//:gflags",
354 ],
355)
356
357cc_binary(
358 name = "eventfd_latency",
359 srcs = [
360 "eventfd_latency.cc",
361 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800362 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700363 deps = [
364 ":latency_lib",
365 "//aos:init",
366 "//aos/events:epoll",
367 "@com_github_gflags_gflags//:gflags",
368 ],
369)
Brian Silverman001f24d2020-08-12 19:33:20 -0700370
371cc_binary(
372 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700373 srcs = [
374 "print_lockless_queue_memory.cc",
375 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800376 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700377 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700378 deps = [
379 ":lockless_queue",
380 ],
381)
Brian Silverman7b266d92021-02-17 21:24:02 -0800382
383cc_library(
384 name = "event",
385 srcs = [
386 "event.cc",
387 ],
388 hdrs = [
389 "event.h",
390 ],
391 target_compatible_with = ["@platforms//os:linux"],
392 visibility = ["//visibility:public"],
393 deps = [
394 "//aos/ipc_lib:aos_sync",
395 "//aos/time",
396 "//aos/type_traits",
397 "@com_github_google_glog//:glog",
398 ],
399)
400
401cc_test(
402 name = "event_test",
403 srcs = [
404 "event_test.cc",
405 ],
406 target_compatible_with = ["@platforms//os:linux"],
407 deps = [
408 ":event",
409 "//aos/testing:googletest",
410 "//aos/testing:test_logging",
411 "//aos/time",
412 ],
413)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700414
415cc_library(
416 name = "shm_observers",
417 srcs = [
418 "shm_observers.cc",
419 ],
420 hdrs = [
421 "shm_observers.h",
422 ],
423)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700424
425cc_library(
426 name = "shm_base",
427 srcs = ["shm_base.cc"],
428 hdrs = ["shm_base.h"],
429 target_compatible_with = ["@platforms//os:linux"],
430 visibility = ["//visibility:public"],
431 deps = [
432 "@com_github_gflags_gflags//:gflags",
433 ],
434)