blob: 147e0baea2c220e2b9d2e65f90a308b52a75edaf [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",
Brian Silvermanb47f5552020-10-01 15:08:14 -070017 "//aos:thread_local",
John Park33858a32018-09-28 23:05:48 -070018 "//aos/util:compiler_memory_barrier",
Alex Perrycb7da4b2019-08-28 19:35:56 -070019 "@com_github_google_glog//:glog",
20 "@com_google_absl//absl/base",
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",
Alex Perrycb7da4b2019-08-28 19:35:56 -070057 "@com_github_google_glog//:glog",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080058 ],
Austin Schuh044e18b2015-10-21 20:17:09 -070059)
60
61cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080062 # TODO(Brian): This should be shared_mem{,.h}, and the other one should be
63 # shared_mem_init{,.cc,.h}.
64 name = "shared_mem_types",
65 hdrs = [
66 "shared_mem_types.h",
67 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080068 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080069 deps = [
70 ":aos_sync",
71 ],
Brian Silverman100534c2015-09-07 15:51:23 -040072)
73
Brian Silverman100534c2015-09-07 15:51:23 -040074cc_test(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080075 name = "ipc_stress_test",
76 srcs = [
77 "ipc_stress_test.cc",
78 ],
79 tags = [
80 "manual",
81 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080082 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080083 deps = [
84 ":core_lib",
John Park33858a32018-09-28 23:05:48 -070085 "//aos:die",
John Park33858a32018-09-28 23:05:48 -070086 "//aos/libc:aos_strsignal",
87 "//aos/libc:dirname",
88 "//aos/logging",
Brian Silverman16a923c2018-10-31 19:40:51 -070089 "//aos/mutex",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080090 "//aos/testing:googletest",
91 "//aos/testing:test_shm",
Brian Silverman16a923c2018-10-31 19:40:51 -070092 "//aos/time",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080093 ],
Brian Silverman100534c2015-09-07 15:51:23 -040094)
95
Brian Silvermane4d8b282015-12-24 13:44:48 -080096cc_binary(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080097 name = "ipc_comparison",
98 srcs = [
99 "ipc_comparison.cc",
100 ],
Brian Silverman687896e2020-10-01 15:05:38 -0700101 linkopts = ["-lrt"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800102 target_compatible_with = ["@platforms//os:linux"],
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800103 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800104 ":event",
John Park33858a32018-09-28 23:05:48 -0700105 "//aos:condition",
Brian Silverman16a923c2018-10-31 19:40:51 -0700106 "//aos:init",
John Park33858a32018-09-28 23:05:48 -0700107 "//aos/logging",
108 "//aos/logging:implementations",
Brian Silverman16a923c2018-10-31 19:40:51 -0700109 "//aos/mutex",
110 "@com_github_gflags_gflags//:gflags",
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 = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700125 "@com_github_google_glog//:glog",
Austin Schuh6c590f82019-09-11 19:23:12 -0700126 ],
127)
Austin Schuh25356e22019-09-11 19:27:07 -0700128
Brian Silverman407cc532019-11-03 11:40:56 -0800129cc_test(
130 name = "signalfd_test",
131 srcs = [
132 "signalfd_test.cc",
133 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800134 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman407cc532019-11-03 11:40:56 -0800135 deps = [
136 ":signalfd",
137 "//aos/testing:googletest",
138 "//aos/testing:test_logging",
139 "@com_github_google_glog//:glog",
140 ],
141)
142
Austin Schuh25356e22019-09-11 19:27:07 -0700143cc_library(
Austin Schuh83cbb1e2023-06-23 12:59:02 -0700144 name = "index32",
145 srcs = ["index.cc"],
146 hdrs = ["index.h"],
147 defines = [
148 "AOS_QUEUE_ATOMIC_SIZE=32",
149 ],
150 target_compatible_with = ["@platforms//os:linux"],
151 visibility = ["//visibility:public"],
152 deps = [
153 ":shm_observers",
154 "@com_github_google_glog//:glog",
155 ],
156)
157
158cc_test(
159 name = "index32_test",
160 srcs = ["index_test.cc"],
161 target_compatible_with = ["@platforms//os:linux"],
162 deps = [
163 ":index32",
164 "//aos/testing:googletest",
165 "@com_github_google_glog//:glog",
166 ],
167)
168
169cc_library(
Austin Schuh25356e22019-09-11 19:27:07 -0700170 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700171 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700172 hdrs = ["index.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800173 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700174 visibility = ["//visibility:public"],
Brian Silverman177567e2020-08-12 19:51:33 -0700175 deps = [
Brian Silverman1ed5df52021-09-13 20:14:06 -0700176 ":shm_observers",
Brian Silverman177567e2020-08-12 19:51:33 -0700177 "@com_github_google_glog//:glog",
178 ],
Austin Schuh25356e22019-09-11 19:27:07 -0700179)
180
181cc_test(
182 name = "index_test",
183 srcs = ["index_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800184 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh25356e22019-09-11 19:27:07 -0700185 deps = [
186 ":index",
187 "//aos/testing:googletest",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700188 "@com_github_google_glog//:glog",
Austin Schuh25356e22019-09-11 19:27:07 -0700189 ],
190)
Austin Schuh20b2b082019-09-11 20:42:56 -0700191
192cc_library(
193 name = "lockless_queue",
194 srcs = [
195 "lockless_queue.cc",
196 "lockless_queue_memory.h",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700197 "memory_mapped_queue.cc",
Austin Schuh20b2b082019-09-11 20:42:56 -0700198 ],
Austin Schuh4d275fc2022-09-16 15:42:45 -0700199 hdrs = [
200 "lockless_queue.h",
201 "memory_mapped_queue.h",
202 ],
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
238cc_test(
239 name = "lockless_queue_test",
240 timeout = "eternal",
241 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700242 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800243 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700244 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800245 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700246 ":lockless_queue",
247 ":queue_racer",
248 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700249 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700250 "//aos/testing:googletest",
251 "//aos/testing:prevent_exit",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700252 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700253 ],
254)
255
256cc_test(
257 name = "lockless_queue_death_test",
258 srcs = ["lockless_queue_death_test.cc"],
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",
263 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700264 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700265 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700266 "//aos/events:epoll",
267 "//aos/libc:aos_strsignal",
268 "//aos/testing:googletest",
269 "//aos/testing:prevent_exit",
270 "//aos/testing:test_logging",
271 ],
272)
Brian Silvermana1652f32020-01-29 20:41:44 -0800273
274cc_library(
275 name = "data_alignment",
276 hdrs = [
277 "data_alignment.h",
278 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800279 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800280 visibility = ["//visibility:public"],
281 deps = [
282 "@com_github_google_glog//:glog",
283 ],
284)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700285
286cc_library(
287 name = "latency_lib",
288 srcs = ["latency_lib.cc"],
289 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800290 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700291 deps = [
292 "//aos:realtime",
293 "//aos/logging",
294 "//aos/time",
295 "@com_github_google_glog//:glog",
296 ],
297)
298
299cc_binary(
300 name = "signal_stress",
301 srcs = [
302 "signal_stress.cc",
303 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800304 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700305 deps = [
306 ":latency_lib",
307 "//aos:init",
308 "//aos/events:epoll",
309 "@com_github_gflags_gflags//:gflags",
310 ],
311)
312
313cc_binary(
314 name = "futex_latency",
315 srcs = [
316 "futex_latency.cc",
317 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800318 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700319 deps = [
320 ":latency_lib",
321 "//aos:condition",
322 "//aos:init",
323 "//aos/mutex",
324 "@com_github_gflags_gflags//:gflags",
325 ],
326)
327
328cc_binary(
329 name = "named_pipe_latency",
330 srcs = [
331 "named_pipe_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:init",
337 "//aos/events:epoll",
338 "@com_github_gflags_gflags//:gflags",
339 ],
340)
341
342cc_binary(
343 name = "eventfd_latency",
344 srcs = [
345 "eventfd_latency.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",
352 "@com_github_gflags_gflags//:gflags",
353 ],
354)
Brian Silverman001f24d2020-08-12 19:33:20 -0700355
356cc_binary(
357 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700358 srcs = [
359 "print_lockless_queue_memory.cc",
360 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800361 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700362 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700363 deps = [
364 ":lockless_queue",
365 ],
366)
Brian Silverman7b266d92021-02-17 21:24:02 -0800367
368cc_library(
369 name = "event",
370 srcs = [
371 "event.cc",
372 ],
373 hdrs = [
374 "event.h",
375 ],
376 target_compatible_with = ["@platforms//os:linux"],
377 visibility = ["//visibility:public"],
378 deps = [
379 "//aos/ipc_lib:aos_sync",
380 "//aos/time",
381 "//aos/type_traits",
382 "@com_github_google_glog//:glog",
383 ],
384)
385
386cc_test(
387 name = "event_test",
388 srcs = [
389 "event_test.cc",
390 ],
391 target_compatible_with = ["@platforms//os:linux"],
392 deps = [
393 ":event",
394 "//aos/testing:googletest",
395 "//aos/testing:test_logging",
396 "//aos/time",
397 ],
398)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700399
400cc_library(
401 name = "shm_observers",
402 srcs = [
403 "shm_observers.cc",
404 ],
405 hdrs = [
406 "shm_observers.h",
407 ],
408)