blob: d51ee250a727f1f88f39130a1a1ccf32edd461c8 [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(
256 name = "lockless_queue_test",
257 timeout = "eternal",
258 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700259 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800260 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700261 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800262 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700263 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700264 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700265 ":queue_racer",
266 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700267 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700268 "//aos/testing:googletest",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700269 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700270 ],
271)
272
273cc_test(
274 name = "lockless_queue_death_test",
275 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800276 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700277 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800278 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700279 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700280 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700281 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700282 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700283 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700284 "//aos/events:epoll",
285 "//aos/libc:aos_strsignal",
286 "//aos/testing:googletest",
287 "//aos/testing:prevent_exit",
288 "//aos/testing:test_logging",
289 ],
290)
Brian Silvermana1652f32020-01-29 20:41:44 -0800291
292cc_library(
293 name = "data_alignment",
294 hdrs = [
295 "data_alignment.h",
296 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800297 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800298 visibility = ["//visibility:public"],
299 deps = [
300 "@com_github_google_glog//:glog",
301 ],
302)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700303
304cc_library(
305 name = "latency_lib",
306 srcs = ["latency_lib.cc"],
307 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800308 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700309 deps = [
310 "//aos:realtime",
311 "//aos/logging",
312 "//aos/time",
313 "@com_github_google_glog//:glog",
314 ],
315)
316
317cc_binary(
318 name = "signal_stress",
319 srcs = [
320 "signal_stress.cc",
321 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800322 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700323 deps = [
324 ":latency_lib",
325 "//aos:init",
326 "//aos/events:epoll",
327 "@com_github_gflags_gflags//:gflags",
328 ],
329)
330
331cc_binary(
332 name = "futex_latency",
333 srcs = [
334 "futex_latency.cc",
335 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800336 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700337 deps = [
338 ":latency_lib",
339 "//aos:condition",
340 "//aos:init",
341 "//aos/mutex",
342 "@com_github_gflags_gflags//:gflags",
343 ],
344)
345
346cc_binary(
347 name = "named_pipe_latency",
348 srcs = [
349 "named_pipe_latency.cc",
350 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800351 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700352 deps = [
353 ":latency_lib",
354 "//aos:init",
355 "//aos/events:epoll",
356 "@com_github_gflags_gflags//:gflags",
357 ],
358)
359
360cc_binary(
361 name = "eventfd_latency",
362 srcs = [
363 "eventfd_latency.cc",
364 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800365 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700366 deps = [
367 ":latency_lib",
368 "//aos:init",
369 "//aos/events:epoll",
370 "@com_github_gflags_gflags//:gflags",
371 ],
372)
Brian Silverman001f24d2020-08-12 19:33:20 -0700373
374cc_binary(
375 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700376 srcs = [
377 "print_lockless_queue_memory.cc",
378 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800379 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700380 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700381 deps = [
382 ":lockless_queue",
383 ],
384)
Brian Silverman7b266d92021-02-17 21:24:02 -0800385
386cc_library(
387 name = "event",
388 srcs = [
389 "event.cc",
390 ],
391 hdrs = [
392 "event.h",
393 ],
394 target_compatible_with = ["@platforms//os:linux"],
395 visibility = ["//visibility:public"],
396 deps = [
397 "//aos/ipc_lib:aos_sync",
398 "//aos/time",
399 "//aos/type_traits",
400 "@com_github_google_glog//:glog",
401 ],
402)
403
404cc_test(
405 name = "event_test",
406 srcs = [
407 "event_test.cc",
408 ],
409 target_compatible_with = ["@platforms//os:linux"],
410 deps = [
411 ":event",
412 "//aos/testing:googletest",
413 "//aos/testing:test_logging",
414 "//aos/time",
415 ],
416)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700417
418cc_library(
419 name = "shm_observers",
420 srcs = [
421 "shm_observers.cc",
422 ],
423 hdrs = [
424 "shm_observers.h",
425 ],
426)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700427
428cc_library(
429 name = "shm_base",
430 srcs = ["shm_base.cc"],
431 hdrs = ["shm_base.h"],
432 target_compatible_with = ["@platforms//os:linux"],
433 visibility = ["//visibility:public"],
434 deps = [
435 "@com_github_gflags_gflags//:gflags",
436 ],
437)