blob: bae23b8df8919c7cb3ed1db90fa7b2d3aec61550 [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",
Philipp Schraderab2f8432023-09-17 18:58:06 -0700196 "robust_ownership_tracker.cc",
Austin Schuh20b2b082019-09-11 20:42:56 -0700197 ],
Austin Schuh4d275fc2022-09-16 15:42:45 -0700198 hdrs = [
199 "lockless_queue.h",
200 "memory_mapped_queue.h",
Philipp Schraderab2f8432023-09-17 18:58:06 -0700201 "robust_ownership_tracker.h",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700202 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800203 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700204 visibility = ["//visibility:public"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700205 deps = [
206 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800207 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700208 ":index",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700209 "//aos:configuration",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700210 "//aos:realtime",
Austin Schuh8902fa52021-03-14 22:39:24 -0700211 "//aos:uuid",
Austin Schuh82ea7382023-07-14 15:17:34 -0700212 "//aos/events:context",
Austin Schuh20b2b082019-09-11 20:42:56 -0700213 "//aos/time",
214 "//aos/util:compiler_memory_barrier",
Philipp Schrader81fa3fb2023-09-17 18:58:35 -0700215 "//aos/util:top",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700216 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700217 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700218 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700219 ],
220)
221
222cc_library(
223 name = "queue_racer",
224 testonly = True,
225 srcs = [
226 "queue_racer.cc",
227 ],
228 hdrs = [
229 "queue_racer.h",
230 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800231 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700232 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800233 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700234 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700235 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700236 ],
237)
238
Austin Schuhfaec51a2023-09-08 17:43:32 -0700239cc_library(
240 name = "lockless_queue_stepping",
241 testonly = True,
242 srcs = [
243 "lockless_queue_stepping.cc",
244 ],
245 hdrs = ["lockless_queue_stepping.h"],
246 deps = [
247 ":lockless_queue",
248 ":shm_observers",
249 "//aos/libc:aos_strsignal",
250 "//aos/testing:prevent_exit",
251 "@com_google_googletest//:gtest",
252 ],
253)
254
Austin Schuh20b2b082019-09-11 20:42:56 -0700255cc_test(
Philipp Schrader23eabd62023-09-19 14:59:49 -0700256 name = "robust_ownership_tracker_test",
257 srcs = ["robust_ownership_tracker_test.cc"],
258 target_compatible_with = ["@platforms//os:linux"],
259 deps = [
260 ":lockless_queue",
261 "//aos/testing:googletest",
262 ],
263)
264
265cc_test(
Austin Schuh20b2b082019-09-11 20:42:56 -0700266 name = "lockless_queue_test",
267 timeout = "eternal",
268 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700269 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800270 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700271 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800272 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700273 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700274 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700275 ":queue_racer",
276 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700277 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700278 "//aos/testing:googletest",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700279 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700280 ],
281)
282
283cc_test(
284 name = "lockless_queue_death_test",
285 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800286 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700287 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800288 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700289 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700290 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700291 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700292 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700293 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700294 "//aos/events:epoll",
295 "//aos/libc:aos_strsignal",
296 "//aos/testing:googletest",
297 "//aos/testing:prevent_exit",
298 "//aos/testing:test_logging",
299 ],
300)
Brian Silvermana1652f32020-01-29 20:41:44 -0800301
302cc_library(
303 name = "data_alignment",
304 hdrs = [
305 "data_alignment.h",
306 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800307 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800308 visibility = ["//visibility:public"],
309 deps = [
310 "@com_github_google_glog//:glog",
311 ],
312)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700313
314cc_library(
315 name = "latency_lib",
316 srcs = ["latency_lib.cc"],
317 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800318 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700319 deps = [
320 "//aos:realtime",
321 "//aos/logging",
322 "//aos/time",
323 "@com_github_google_glog//:glog",
324 ],
325)
326
327cc_binary(
328 name = "signal_stress",
329 srcs = [
330 "signal_stress.cc",
331 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800332 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700333 deps = [
334 ":latency_lib",
335 "//aos:init",
336 "//aos/events:epoll",
337 "@com_github_gflags_gflags//:gflags",
338 ],
339)
340
341cc_binary(
342 name = "futex_latency",
343 srcs = [
344 "futex_latency.cc",
345 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800346 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700347 deps = [
348 ":latency_lib",
349 "//aos:condition",
350 "//aos:init",
351 "//aos/mutex",
352 "@com_github_gflags_gflags//:gflags",
353 ],
354)
355
356cc_binary(
357 name = "named_pipe_latency",
358 srcs = [
359 "named_pipe_latency.cc",
360 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800361 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700362 deps = [
363 ":latency_lib",
364 "//aos:init",
365 "//aos/events:epoll",
366 "@com_github_gflags_gflags//:gflags",
367 ],
368)
369
370cc_binary(
371 name = "eventfd_latency",
372 srcs = [
373 "eventfd_latency.cc",
374 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800375 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700376 deps = [
377 ":latency_lib",
378 "//aos:init",
379 "//aos/events:epoll",
380 "@com_github_gflags_gflags//:gflags",
381 ],
382)
Brian Silverman001f24d2020-08-12 19:33:20 -0700383
384cc_binary(
385 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700386 srcs = [
387 "print_lockless_queue_memory.cc",
388 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800389 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700390 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700391 deps = [
392 ":lockless_queue",
393 ],
394)
Brian Silverman7b266d92021-02-17 21:24:02 -0800395
396cc_library(
397 name = "event",
398 srcs = [
399 "event.cc",
400 ],
401 hdrs = [
402 "event.h",
403 ],
404 target_compatible_with = ["@platforms//os:linux"],
405 visibility = ["//visibility:public"],
406 deps = [
407 "//aos/ipc_lib:aos_sync",
408 "//aos/time",
409 "//aos/type_traits",
410 "@com_github_google_glog//:glog",
411 ],
412)
413
414cc_test(
415 name = "event_test",
416 srcs = [
417 "event_test.cc",
418 ],
419 target_compatible_with = ["@platforms//os:linux"],
420 deps = [
421 ":event",
422 "//aos/testing:googletest",
423 "//aos/testing:test_logging",
424 "//aos/time",
425 ],
426)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700427
428cc_library(
429 name = "shm_observers",
430 srcs = [
431 "shm_observers.cc",
432 ],
433 hdrs = [
434 "shm_observers.h",
435 ],
436)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700437
438cc_library(
439 name = "shm_base",
440 srcs = ["shm_base.cc"],
441 hdrs = ["shm_base.h"],
442 target_compatible_with = ["@platforms//os:linux"],
443 visibility = ["//visibility:public"],
444 deps = [
445 "@com_github_gflags_gflags//:gflags",
446 ],
447)
James Kuszmaulb3fb78a2024-05-09 15:35:29 -0700448
449cc_library(
450 name = "memory_estimation",
451 srcs = ["memory_estimation.cc"],
452 hdrs = ["memory_estimation.h"],
453 visibility = ["//visibility:public"],
454 deps = [
455 ":lockless_queue",
456 "//aos:configuration",
457 ],
458)