blob: 2ecd167182b2076c2963fe958f30467b2b30ae73 [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_google_absl//absl/base",
Austin Schuh99f7c6a2024-06-25 22:07:44 -070019 "@com_google_absl//absl/log",
20 "@com_google_absl//absl/log:check",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080021 ],
Brian Silverman100534c2015-09-07 15:51:23 -040022)
23
24cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080025 name = "core_lib",
26 srcs = [
27 "core_lib.c",
28 ],
29 hdrs = [
30 "core_lib.h",
31 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080032 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070033 visibility = ["//visibility:public"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080034 deps = [
35 ":aos_sync",
36 ":shared_mem_types",
37 ],
Brian Silverman100534c2015-09-07 15:51:23 -040038)
39
40cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080041 name = "shared_mem",
42 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -070043 "shared_mem.cc",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080044 ],
45 hdrs = [
46 "shared_mem.h",
47 ],
48 linkopts = [
49 "-lrt",
50 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080051 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070052 visibility = ["//visibility:public"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080053 deps = [
54 ":aos_sync",
55 ":core_lib",
56 ":shared_mem_types",
Austin Schuh99f7c6a2024-06-25 22:07:44 -070057 "@com_google_absl//absl/log",
58 "@com_google_absl//absl/log:check",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080059 ],
Austin Schuh044e18b2015-10-21 20:17:09 -070060)
61
62cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080063 # TODO(Brian): This should be shared_mem{,.h}, and the other one should be
64 # shared_mem_init{,.cc,.h}.
65 name = "shared_mem_types",
66 hdrs = [
67 "shared_mem_types.h",
68 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080069 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080070 deps = [
71 ":aos_sync",
72 ],
Brian Silverman100534c2015-09-07 15:51:23 -040073)
74
Brian Silverman100534c2015-09-07 15:51:23 -040075cc_test(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080076 name = "ipc_stress_test",
77 srcs = [
78 "ipc_stress_test.cc",
79 ],
80 tags = [
81 "manual",
82 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080083 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080084 deps = [
85 ":core_lib",
John Park33858a32018-09-28 23:05:48 -070086 "//aos:die",
John Park33858a32018-09-28 23:05:48 -070087 "//aos/libc:aos_strsignal",
88 "//aos/libc:dirname",
89 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -070090 "//aos/mutex",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080091 "//aos/testing:googletest",
92 "//aos/testing:test_shm",
Brian Silverman16a923c2018-10-31 19:40:51 -070093 "//aos/time",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080094 ],
Brian Silverman100534c2015-09-07 15:51:23 -040095)
96
Brian Silvermane4d8b282015-12-24 13:44:48 -080097cc_binary(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080098 name = "ipc_comparison",
99 srcs = [
100 "ipc_comparison.cc",
101 ],
Brian Silverman687896e2020-10-01 15:05:38 -0700102 linkopts = ["-lrt"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800103 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800104 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800105 ":event",
John Park33858a32018-09-28 23:05:48 -0700106 "//aos:condition",
Brian Silverman16a923c2018-10-31 19:40:51 -0700107 "//aos:init",
John Park33858a32018-09-28 23:05:48 -0700108 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -0700109 "//aos/mutex",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700110 "@com_google_absl//absl/flags:flag",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800111 ],
Brian Silvermane4d8b282015-12-24 13:44:48 -0800112)
Austin Schuh6c590f82019-09-11 19:23:12 -0700113
114cc_library(
115 name = "signalfd",
116 srcs = [
117 "signalfd.cc",
118 ],
119 hdrs = [
120 "signalfd.h",
121 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800122 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700123 visibility = ["//visibility:public"],
Austin Schuh6c590f82019-09-11 19:23:12 -0700124 deps = [
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700125 "@com_google_absl//absl/log",
126 "@com_google_absl//absl/log:check",
Austin Schuh6c590f82019-09-11 19:23:12 -0700127 ],
128)
Austin Schuh25356e22019-09-11 19:27:07 -0700129
Brian Silverman407cc532019-11-03 11:40:56 -0800130cc_test(
131 name = "signalfd_test",
132 srcs = [
133 "signalfd_test.cc",
134 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800135 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman407cc532019-11-03 11:40:56 -0800136 deps = [
137 ":signalfd",
138 "//aos/testing:googletest",
139 "//aos/testing:test_logging",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700140 "@com_google_absl//absl/log",
141 "@com_google_absl//absl/log:check",
Brian Silverman407cc532019-11-03 11:40:56 -0800142 ],
143)
144
Austin Schuh25356e22019-09-11 19:27:07 -0700145cc_library(
Austin Schuh83cbb1e2023-06-23 12:59:02 -0700146 name = "index32",
147 srcs = ["index.cc"],
148 hdrs = ["index.h"],
149 defines = [
150 "AOS_QUEUE_ATOMIC_SIZE=32",
151 ],
152 target_compatible_with = ["@platforms//os:linux"],
153 visibility = ["//visibility:public"],
154 deps = [
155 ":shm_observers",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700156 "@com_google_absl//absl/log",
157 "@com_google_absl//absl/log:check",
Austin Schuh83cbb1e2023-06-23 12:59:02 -0700158 ],
159)
160
161cc_test(
162 name = "index32_test",
163 srcs = ["index_test.cc"],
164 target_compatible_with = ["@platforms//os:linux"],
165 deps = [
166 ":index32",
167 "//aos/testing:googletest",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700168 "@com_google_absl//absl/log",
169 "@com_google_absl//absl/log:check",
Austin Schuh83cbb1e2023-06-23 12:59:02 -0700170 ],
171)
172
173cc_library(
Austin Schuh25356e22019-09-11 19:27:07 -0700174 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700175 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700176 hdrs = ["index.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800177 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700178 visibility = ["//visibility:public"],
Brian Silverman177567e2020-08-12 19:51:33 -0700179 deps = [
Brian Silverman1ed5df52021-09-13 20:14:06 -0700180 ":shm_observers",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700181 "@com_google_absl//absl/log",
182 "@com_google_absl//absl/log:check",
Brian Silverman177567e2020-08-12 19:51:33 -0700183 ],
Austin Schuh25356e22019-09-11 19:27:07 -0700184)
185
186cc_test(
187 name = "index_test",
188 srcs = ["index_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800189 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh25356e22019-09-11 19:27:07 -0700190 deps = [
191 ":index",
192 "//aos/testing:googletest",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700193 "@com_google_absl//absl/log",
194 "@com_google_absl//absl/log:check",
Austin Schuh25356e22019-09-11 19:27:07 -0700195 ],
196)
Austin Schuh20b2b082019-09-11 20:42:56 -0700197
198cc_library(
199 name = "lockless_queue",
200 srcs = [
201 "lockless_queue.cc",
202 "lockless_queue_memory.h",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700203 "memory_mapped_queue.cc",
Philipp Schraderab2f8432023-09-17 18:58:06 -0700204 "robust_ownership_tracker.cc",
Austin Schuh20b2b082019-09-11 20:42:56 -0700205 ],
Austin Schuh4d275fc2022-09-16 15:42:45 -0700206 hdrs = [
207 "lockless_queue.h",
208 "memory_mapped_queue.h",
Philipp Schraderab2f8432023-09-17 18:58:06 -0700209 "robust_ownership_tracker.h",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700210 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800211 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700212 visibility = ["//visibility:public"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700213 deps = [
214 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800215 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700216 ":index",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700217 "//aos:configuration",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700218 "//aos:realtime",
Austin Schuh8902fa52021-03-14 22:39:24 -0700219 "//aos:uuid",
Austin Schuh82ea7382023-07-14 15:17:34 -0700220 "//aos/events:context",
Austin Schuh20b2b082019-09-11 20:42:56 -0700221 "//aos/time",
222 "//aos/util:compiler_memory_barrier",
Philipp Schrader81fa3fb2023-09-17 18:58:35 -0700223 "//aos/util:top",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700224 "@com_google_absl//absl/log",
225 "@com_google_absl//absl/log:check",
Austin Schuhbe416742020-10-03 17:24:26 -0700226 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700227 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700228 ],
229)
230
231cc_library(
232 name = "queue_racer",
233 testonly = True,
234 srcs = [
235 "queue_racer.cc",
236 ],
237 hdrs = [
238 "queue_racer.h",
239 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800240 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700241 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800242 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700243 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700244 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700245 ],
246)
247
Austin Schuhfaec51a2023-09-08 17:43:32 -0700248cc_library(
249 name = "lockless_queue_stepping",
250 testonly = True,
251 srcs = [
252 "lockless_queue_stepping.cc",
253 ],
254 hdrs = ["lockless_queue_stepping.h"],
255 deps = [
256 ":lockless_queue",
257 ":shm_observers",
258 "//aos/libc:aos_strsignal",
259 "//aos/testing:prevent_exit",
260 "@com_google_googletest//:gtest",
261 ],
262)
263
Austin Schuh20b2b082019-09-11 20:42:56 -0700264cc_test(
Philipp Schrader23eabd62023-09-19 14:59:49 -0700265 name = "robust_ownership_tracker_test",
266 srcs = ["robust_ownership_tracker_test.cc"],
267 target_compatible_with = ["@platforms//os:linux"],
268 deps = [
269 ":lockless_queue",
270 "//aos/testing:googletest",
271 ],
272)
273
274cc_test(
Austin Schuh20b2b082019-09-11 20:42:56 -0700275 name = "lockless_queue_test",
276 timeout = "eternal",
277 srcs = ["lockless_queue_test.cc"],
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700278 # We don't want all the signal handlers registered, otherwise we can't fork.
279 args = ["--nobacktrace"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700280 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800281 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700282 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800283 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700284 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700285 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700286 ":queue_racer",
287 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700288 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700289 "//aos/testing:googletest",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700290 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700291 ],
292)
293
294cc_test(
295 name = "lockless_queue_death_test",
296 srcs = ["lockless_queue_death_test.cc"],
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700297 # We don't want all the signal handlers registered, otherwise we can't fork.
298 args = ["--nobacktrace"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800299 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700300 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800301 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700302 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700303 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700304 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700305 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700306 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700307 "//aos/events:epoll",
308 "//aos/libc:aos_strsignal",
309 "//aos/testing:googletest",
310 "//aos/testing:prevent_exit",
311 "//aos/testing:test_logging",
312 ],
313)
Brian Silvermana1652f32020-01-29 20:41:44 -0800314
315cc_library(
316 name = "data_alignment",
317 hdrs = [
318 "data_alignment.h",
319 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800320 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800321 visibility = ["//visibility:public"],
322 deps = [
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700323 "@com_google_absl//absl/log",
324 "@com_google_absl//absl/log:check",
Brian Silvermana1652f32020-01-29 20:41:44 -0800325 ],
326)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700327
328cc_library(
329 name = "latency_lib",
330 srcs = ["latency_lib.cc"],
331 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800332 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700333 deps = [
334 "//aos:realtime",
335 "//aos/logging",
336 "//aos/time",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700337 "@com_google_absl//absl/log",
338 "@com_google_absl//absl/log:check",
Austin Schuh5af45eb2019-09-16 20:54:18 -0700339 ],
340)
341
342cc_binary(
343 name = "signal_stress",
344 srcs = [
345 "signal_stress.cc",
346 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800347 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700348 deps = [
349 ":latency_lib",
350 "//aos:init",
351 "//aos/events:epoll",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700352 "@com_google_absl//absl/flags:flag",
Austin Schuh5af45eb2019-09-16 20:54:18 -0700353 ],
354)
355
356cc_binary(
357 name = "futex_latency",
358 srcs = [
359 "futex_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:condition",
365 "//aos:init",
366 "//aos/mutex",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700367 "@com_google_absl//absl/flags:flag",
Austin Schuh5af45eb2019-09-16 20:54:18 -0700368 ],
369)
370
371cc_binary(
372 name = "named_pipe_latency",
373 srcs = [
374 "named_pipe_latency.cc",
375 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800376 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700377 deps = [
378 ":latency_lib",
379 "//aos:init",
380 "//aos/events:epoll",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700381 "@com_google_absl//absl/flags:flag",
Austin Schuh5af45eb2019-09-16 20:54:18 -0700382 ],
383)
384
385cc_binary(
386 name = "eventfd_latency",
387 srcs = [
388 "eventfd_latency.cc",
389 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800390 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700391 deps = [
392 ":latency_lib",
393 "//aos:init",
394 "//aos/events:epoll",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700395 "@com_google_absl//absl/flags:flag",
Austin Schuh5af45eb2019-09-16 20:54:18 -0700396 ],
397)
Brian Silverman001f24d2020-08-12 19:33:20 -0700398
399cc_binary(
400 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700401 srcs = [
402 "print_lockless_queue_memory.cc",
403 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800404 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700405 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700406 deps = [
407 ":lockless_queue",
408 ],
409)
Brian Silverman7b266d92021-02-17 21:24:02 -0800410
411cc_library(
412 name = "event",
413 srcs = [
414 "event.cc",
415 ],
416 hdrs = [
417 "event.h",
418 ],
419 target_compatible_with = ["@platforms//os:linux"],
420 visibility = ["//visibility:public"],
421 deps = [
422 "//aos/ipc_lib:aos_sync",
423 "//aos/time",
424 "//aos/type_traits",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700425 "@com_google_absl//absl/log",
426 "@com_google_absl//absl/log:check",
Brian Silverman7b266d92021-02-17 21:24:02 -0800427 ],
428)
429
430cc_test(
431 name = "event_test",
432 srcs = [
433 "event_test.cc",
434 ],
435 target_compatible_with = ["@platforms//os:linux"],
436 deps = [
437 ":event",
438 "//aos/testing:googletest",
439 "//aos/testing:test_logging",
440 "//aos/time",
441 ],
442)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700443
444cc_library(
445 name = "shm_observers",
446 srcs = [
447 "shm_observers.cc",
448 ],
449 hdrs = [
450 "shm_observers.h",
451 ],
452)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700453
454cc_library(
455 name = "shm_base",
456 srcs = ["shm_base.cc"],
457 hdrs = ["shm_base.h"],
458 target_compatible_with = ["@platforms//os:linux"],
459 visibility = ["//visibility:public"],
460 deps = [
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700461 "@com_google_absl//absl/flags:flag",
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700462 ],
463)
James Kuszmaulb3fb78a2024-05-09 15:35:29 -0700464
465cc_library(
466 name = "memory_estimation",
467 srcs = ["memory_estimation.cc"],
468 hdrs = ["memory_estimation.h"],
469 visibility = ["//visibility:public"],
470 deps = [
471 ":lockless_queue",
472 "//aos:configuration",
473 ],
474)