blob: d7dee64ecd59370e8f8ae1a97137a9c64e1f6487 [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",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700215 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700216 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700217 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700218 ],
219)
220
221cc_library(
222 name = "queue_racer",
223 testonly = True,
224 srcs = [
225 "queue_racer.cc",
226 ],
227 hdrs = [
228 "queue_racer.h",
229 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800230 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700231 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800232 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700233 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700234 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700235 ],
236)
237
Austin Schuhfaec51a2023-09-08 17:43:32 -0700238cc_library(
239 name = "lockless_queue_stepping",
240 testonly = True,
241 srcs = [
242 "lockless_queue_stepping.cc",
243 ],
244 hdrs = ["lockless_queue_stepping.h"],
245 deps = [
246 ":lockless_queue",
247 ":shm_observers",
248 "//aos/libc:aos_strsignal",
249 "//aos/testing:prevent_exit",
250 "@com_google_googletest//:gtest",
251 ],
252)
253
Austin Schuh20b2b082019-09-11 20:42:56 -0700254cc_test(
255 name = "lockless_queue_test",
256 timeout = "eternal",
257 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700258 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800259 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700260 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800261 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700262 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700263 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700264 ":queue_racer",
265 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700266 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700267 "//aos/testing:googletest",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700268 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700269 ],
270)
271
272cc_test(
273 name = "lockless_queue_death_test",
274 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800275 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700276 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800277 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700278 ":lockless_queue",
Austin Schuhfaec51a2023-09-08 17:43:32 -0700279 ":lockless_queue_stepping",
Austin Schuh20b2b082019-09-11 20:42:56 -0700280 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700281 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700282 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700283 "//aos/events:epoll",
284 "//aos/libc:aos_strsignal",
285 "//aos/testing:googletest",
286 "//aos/testing:prevent_exit",
287 "//aos/testing:test_logging",
288 ],
289)
Brian Silvermana1652f32020-01-29 20:41:44 -0800290
291cc_library(
292 name = "data_alignment",
293 hdrs = [
294 "data_alignment.h",
295 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800296 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800297 visibility = ["//visibility:public"],
298 deps = [
299 "@com_github_google_glog//:glog",
300 ],
301)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700302
303cc_library(
304 name = "latency_lib",
305 srcs = ["latency_lib.cc"],
306 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800307 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700308 deps = [
309 "//aos:realtime",
310 "//aos/logging",
311 "//aos/time",
312 "@com_github_google_glog//:glog",
313 ],
314)
315
316cc_binary(
317 name = "signal_stress",
318 srcs = [
319 "signal_stress.cc",
320 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800321 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700322 deps = [
323 ":latency_lib",
324 "//aos:init",
325 "//aos/events:epoll",
326 "@com_github_gflags_gflags//:gflags",
327 ],
328)
329
330cc_binary(
331 name = "futex_latency",
332 srcs = [
333 "futex_latency.cc",
334 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800335 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700336 deps = [
337 ":latency_lib",
338 "//aos:condition",
339 "//aos:init",
340 "//aos/mutex",
341 "@com_github_gflags_gflags//:gflags",
342 ],
343)
344
345cc_binary(
346 name = "named_pipe_latency",
347 srcs = [
348 "named_pipe_latency.cc",
349 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800350 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700351 deps = [
352 ":latency_lib",
353 "//aos:init",
354 "//aos/events:epoll",
355 "@com_github_gflags_gflags//:gflags",
356 ],
357)
358
359cc_binary(
360 name = "eventfd_latency",
361 srcs = [
362 "eventfd_latency.cc",
363 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800364 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700365 deps = [
366 ":latency_lib",
367 "//aos:init",
368 "//aos/events:epoll",
369 "@com_github_gflags_gflags//:gflags",
370 ],
371)
Brian Silverman001f24d2020-08-12 19:33:20 -0700372
373cc_binary(
374 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700375 srcs = [
376 "print_lockless_queue_memory.cc",
377 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800378 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700379 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700380 deps = [
381 ":lockless_queue",
382 ],
383)
Brian Silverman7b266d92021-02-17 21:24:02 -0800384
385cc_library(
386 name = "event",
387 srcs = [
388 "event.cc",
389 ],
390 hdrs = [
391 "event.h",
392 ],
393 target_compatible_with = ["@platforms//os:linux"],
394 visibility = ["//visibility:public"],
395 deps = [
396 "//aos/ipc_lib:aos_sync",
397 "//aos/time",
398 "//aos/type_traits",
399 "@com_github_google_glog//:glog",
400 ],
401)
402
403cc_test(
404 name = "event_test",
405 srcs = [
406 "event_test.cc",
407 ],
408 target_compatible_with = ["@platforms//os:linux"],
409 deps = [
410 ":event",
411 "//aos/testing:googletest",
412 "//aos/testing:test_logging",
413 "//aos/time",
414 ],
415)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700416
417cc_library(
418 name = "shm_observers",
419 srcs = [
420 "shm_observers.cc",
421 ],
422 hdrs = [
423 "shm_observers.h",
424 ],
425)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700426
427cc_library(
428 name = "shm_base",
429 srcs = ["shm_base.cc"],
430 hdrs = ["shm_base.h"],
431 target_compatible_with = ["@platforms//os:linux"],
432 visibility = ["//visibility:public"],
433 deps = [
434 "@com_github_gflags_gflags//:gflags",
435 ],
436)