blob: 471b75d51db47287dbb7947b1e08b65ea423b82c [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",
Austin Schuh20b2b082019-09-11 20:42:56 -0700196 ],
Austin Schuh4d275fc2022-09-16 15:42:45 -0700197 hdrs = [
198 "lockless_queue.h",
199 "memory_mapped_queue.h",
200 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800201 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700202 visibility = ["//visibility:public"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700203 deps = [
204 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800205 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700206 ":index",
Austin Schuh4d275fc2022-09-16 15:42:45 -0700207 "//aos:configuration",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700208 "//aos:realtime",
Austin Schuh8902fa52021-03-14 22:39:24 -0700209 "//aos:uuid",
Austin Schuh82ea7382023-07-14 15:17:34 -0700210 "//aos/events:context",
Austin Schuh20b2b082019-09-11 20:42:56 -0700211 "//aos/time",
212 "//aos/util:compiler_memory_barrier",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700213 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700214 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700215 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700216 ],
217)
218
219cc_library(
220 name = "queue_racer",
221 testonly = True,
222 srcs = [
223 "queue_racer.cc",
224 ],
225 hdrs = [
226 "queue_racer.h",
227 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800228 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700229 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800230 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700231 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700232 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700233 ],
234)
235
236cc_test(
237 name = "lockless_queue_test",
238 timeout = "eternal",
239 srcs = ["lockless_queue_test.cc"],
Austin Schuhbe975a62023-07-08 17:13:18 -0700240 shard_count = 10,
Philipp Schraderdada1072020-11-24 11:34:46 -0800241 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700242 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800243 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700244 ":lockless_queue",
245 ":queue_racer",
246 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700247 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700248 "//aos/testing:googletest",
249 "//aos/testing:prevent_exit",
Eric Schmiedebergef44b8a2022-02-28 17:30:38 -0700250 "//aos/util:phased_loop",
Austin Schuh20b2b082019-09-11 20:42:56 -0700251 ],
252)
253
254cc_test(
255 name = "lockless_queue_death_test",
256 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800257 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700258 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800259 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700260 ":lockless_queue",
261 ":queue_racer",
Brian Silverman1ed5df52021-09-13 20:14:06 -0700262 ":shm_observers",
Austin Schuh20b2b082019-09-11 20:42:56 -0700263 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700264 "//aos/events:epoll",
265 "//aos/libc:aos_strsignal",
266 "//aos/testing:googletest",
267 "//aos/testing:prevent_exit",
268 "//aos/testing:test_logging",
269 ],
270)
Brian Silvermana1652f32020-01-29 20:41:44 -0800271
272cc_library(
273 name = "data_alignment",
274 hdrs = [
275 "data_alignment.h",
276 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800277 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800278 visibility = ["//visibility:public"],
279 deps = [
280 "@com_github_google_glog//:glog",
281 ],
282)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700283
284cc_library(
285 name = "latency_lib",
286 srcs = ["latency_lib.cc"],
287 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800288 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700289 deps = [
290 "//aos:realtime",
291 "//aos/logging",
292 "//aos/time",
293 "@com_github_google_glog//:glog",
294 ],
295)
296
297cc_binary(
298 name = "signal_stress",
299 srcs = [
300 "signal_stress.cc",
301 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800302 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700303 deps = [
304 ":latency_lib",
305 "//aos:init",
306 "//aos/events:epoll",
307 "@com_github_gflags_gflags//:gflags",
308 ],
309)
310
311cc_binary(
312 name = "futex_latency",
313 srcs = [
314 "futex_latency.cc",
315 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800316 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700317 deps = [
318 ":latency_lib",
319 "//aos:condition",
320 "//aos:init",
321 "//aos/mutex",
322 "@com_github_gflags_gflags//:gflags",
323 ],
324)
325
326cc_binary(
327 name = "named_pipe_latency",
328 srcs = [
329 "named_pipe_latency.cc",
330 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800331 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700332 deps = [
333 ":latency_lib",
334 "//aos:init",
335 "//aos/events:epoll",
336 "@com_github_gflags_gflags//:gflags",
337 ],
338)
339
340cc_binary(
341 name = "eventfd_latency",
342 srcs = [
343 "eventfd_latency.cc",
344 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800345 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700346 deps = [
347 ":latency_lib",
348 "//aos:init",
349 "//aos/events:epoll",
350 "@com_github_gflags_gflags//:gflags",
351 ],
352)
Brian Silverman001f24d2020-08-12 19:33:20 -0700353
354cc_binary(
355 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700356 srcs = [
357 "print_lockless_queue_memory.cc",
358 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800359 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700360 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700361 deps = [
362 ":lockless_queue",
363 ],
364)
Brian Silverman7b266d92021-02-17 21:24:02 -0800365
366cc_library(
367 name = "event",
368 srcs = [
369 "event.cc",
370 ],
371 hdrs = [
372 "event.h",
373 ],
374 target_compatible_with = ["@platforms//os:linux"],
375 visibility = ["//visibility:public"],
376 deps = [
377 "//aos/ipc_lib:aos_sync",
378 "//aos/time",
379 "//aos/type_traits",
380 "@com_github_google_glog//:glog",
381 ],
382)
383
384cc_test(
385 name = "event_test",
386 srcs = [
387 "event_test.cc",
388 ],
389 target_compatible_with = ["@platforms//os:linux"],
390 deps = [
391 ":event",
392 "//aos/testing:googletest",
393 "//aos/testing:test_logging",
394 "//aos/time",
395 ],
396)
Brian Silverman1ed5df52021-09-13 20:14:06 -0700397
398cc_library(
399 name = "shm_observers",
400 srcs = [
401 "shm_observers.cc",
402 ],
403 hdrs = [
404 "shm_observers.h",
405 ],
406)
Adam Snaiderc8b7e752023-09-14 14:27:53 -0700407
408cc_library(
409 name = "shm_base",
410 srcs = ["shm_base.cc"],
411 hdrs = ["shm_base.h"],
412 target_compatible_with = ["@platforms//os:linux"],
413 visibility = ["//visibility:public"],
414 deps = [
415 "@com_github_gflags_gflags//:gflags",
416 ],
417)