blob: 026f8667cac4ff34b1842adc15e7f18c940cbc7a [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 = [
John Park33858a32018-09-28 23:05:48 -070015 "//aos:macros",
Brian Silvermanb47f5552020-10-01 15:08:14 -070016 "//aos:thread_local",
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",
107 "//aos/logging:implementations",
Brian Silverman16a923c2018-10-31 19:40:51 -0700108 "//aos/mutex",
109 "@com_github_gflags_gflags//:gflags",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800110 ],
Brian Silvermane4d8b282015-12-24 13:44:48 -0800111)
Austin Schuh6c590f82019-09-11 19:23:12 -0700112
113cc_library(
114 name = "signalfd",
115 srcs = [
116 "signalfd.cc",
117 ],
118 hdrs = [
119 "signalfd.h",
120 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800121 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700122 visibility = ["//visibility:public"],
Austin Schuh6c590f82019-09-11 19:23:12 -0700123 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700124 "@com_github_google_glog//:glog",
Austin Schuh6c590f82019-09-11 19:23:12 -0700125 ],
126)
Austin Schuh25356e22019-09-11 19:27:07 -0700127
Brian Silverman407cc532019-11-03 11:40:56 -0800128cc_test(
129 name = "signalfd_test",
130 srcs = [
131 "signalfd_test.cc",
132 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800133 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman407cc532019-11-03 11:40:56 -0800134 deps = [
135 ":signalfd",
136 "//aos/testing:googletest",
137 "//aos/testing:test_logging",
138 "@com_github_google_glog//:glog",
139 ],
140)
141
Austin Schuh25356e22019-09-11 19:27:07 -0700142cc_library(
143 name = "index",
Austin Schuh20b2b082019-09-11 20:42:56 -0700144 srcs = ["index.cc"],
Austin Schuh25356e22019-09-11 19:27:07 -0700145 hdrs = ["index.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800146 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700147 visibility = ["//visibility:public"],
Brian Silverman177567e2020-08-12 19:51:33 -0700148 deps = [
149 "@com_github_google_glog//:glog",
150 ],
Austin Schuh25356e22019-09-11 19:27:07 -0700151)
152
153cc_test(
154 name = "index_test",
155 srcs = ["index_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800156 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh25356e22019-09-11 19:27:07 -0700157 deps = [
158 ":index",
159 "//aos/testing:googletest",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700160 "@com_github_google_glog//:glog",
Austin Schuh25356e22019-09-11 19:27:07 -0700161 ],
162)
Austin Schuh20b2b082019-09-11 20:42:56 -0700163
164cc_library(
165 name = "lockless_queue",
166 srcs = [
167 "lockless_queue.cc",
168 "lockless_queue_memory.h",
169 ],
170 hdrs = ["lockless_queue.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"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700173 deps = [
174 ":aos_sync",
Brian Silvermana1652f32020-01-29 20:41:44 -0800175 ":data_alignment",
Austin Schuh20b2b082019-09-11 20:42:56 -0700176 ":index",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700177 "//aos:realtime",
Austin Schuh20b2b082019-09-11 20:42:56 -0700178 "//aos/time",
179 "//aos/util:compiler_memory_barrier",
Austin Schuhf257f3c2019-10-27 21:00:43 -0700180 "@com_github_google_glog//:glog",
Austin Schuhbe416742020-10-03 17:24:26 -0700181 "@com_google_absl//absl/strings",
Brian Silverman0eaa1da2020-08-12 20:03:52 -0700182 "@com_google_absl//absl/types:span",
Austin Schuh20b2b082019-09-11 20:42:56 -0700183 ],
184)
185
186cc_library(
187 name = "queue_racer",
188 testonly = True,
189 srcs = [
190 "queue_racer.cc",
191 ],
192 hdrs = [
193 "queue_racer.h",
194 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800195 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700196 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800197 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700198 ":lockless_queue",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700199 "//aos/testing:googletest",
Austin Schuh20b2b082019-09-11 20:42:56 -0700200 ],
201)
202
203cc_test(
204 name = "lockless_queue_test",
205 timeout = "eternal",
206 srcs = ["lockless_queue_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800207 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700208 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800209 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700210 ":lockless_queue",
211 ":queue_racer",
212 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700213 "//aos/events:epoll",
Austin Schuh20b2b082019-09-11 20:42:56 -0700214 "//aos/testing:googletest",
215 "//aos/testing:prevent_exit",
Austin Schuh20b2b082019-09-11 20:42:56 -0700216 ],
217)
218
219cc_test(
220 name = "lockless_queue_death_test",
221 srcs = ["lockless_queue_death_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800222 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh20b2b082019-09-11 20:42:56 -0700223 deps = [
Brian Silverman7b266d92021-02-17 21:24:02 -0800224 ":event",
Austin Schuh20b2b082019-09-11 20:42:56 -0700225 ":lockless_queue",
226 ":queue_racer",
227 ":signalfd",
Austin Schuh20b2b082019-09-11 20:42:56 -0700228 "//aos/events:epoll",
229 "//aos/libc:aos_strsignal",
230 "//aos/testing:googletest",
231 "//aos/testing:prevent_exit",
232 "//aos/testing:test_logging",
233 ],
234)
Brian Silvermana1652f32020-01-29 20:41:44 -0800235
236cc_library(
237 name = "data_alignment",
238 hdrs = [
239 "data_alignment.h",
240 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800241 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermana1652f32020-01-29 20:41:44 -0800242 visibility = ["//visibility:public"],
243 deps = [
244 "@com_github_google_glog//:glog",
245 ],
246)
Austin Schuh5af45eb2019-09-16 20:54:18 -0700247
248cc_library(
249 name = "latency_lib",
250 srcs = ["latency_lib.cc"],
251 hdrs = ["latency_lib.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800252 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700253 deps = [
254 "//aos:realtime",
255 "//aos/logging",
256 "//aos/time",
257 "@com_github_google_glog//:glog",
258 ],
259)
260
261cc_binary(
262 name = "signal_stress",
263 srcs = [
264 "signal_stress.cc",
265 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800266 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700267 deps = [
268 ":latency_lib",
269 "//aos:init",
270 "//aos/events:epoll",
271 "@com_github_gflags_gflags//:gflags",
272 ],
273)
274
275cc_binary(
276 name = "futex_latency",
277 srcs = [
278 "futex_latency.cc",
279 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800280 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700281 deps = [
282 ":latency_lib",
283 "//aos:condition",
284 "//aos:init",
285 "//aos/mutex",
286 "@com_github_gflags_gflags//:gflags",
287 ],
288)
289
290cc_binary(
291 name = "named_pipe_latency",
292 srcs = [
293 "named_pipe_latency.cc",
294 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800295 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700296 deps = [
297 ":latency_lib",
298 "//aos:init",
299 "//aos/events:epoll",
300 "@com_github_gflags_gflags//:gflags",
301 ],
302)
303
304cc_binary(
305 name = "eventfd_latency",
306 srcs = [
307 "eventfd_latency.cc",
308 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800309 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh5af45eb2019-09-16 20:54:18 -0700310 deps = [
311 ":latency_lib",
312 "//aos:init",
313 "//aos/events:epoll",
314 "@com_github_gflags_gflags//:gflags",
315 ],
316)
Brian Silverman001f24d2020-08-12 19:33:20 -0700317
318cc_binary(
319 name = "print_lockless_queue_memory",
Brian Silverman001f24d2020-08-12 19:33:20 -0700320 srcs = [
321 "print_lockless_queue_memory.cc",
322 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800323 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman4d6207a2020-09-18 15:26:52 -0700324 visibility = ["//visibility:public"],
Brian Silverman001f24d2020-08-12 19:33:20 -0700325 deps = [
326 ":lockless_queue",
327 ],
328)
Brian Silverman7b266d92021-02-17 21:24:02 -0800329
330cc_library(
331 name = "event",
332 srcs = [
333 "event.cc",
334 ],
335 hdrs = [
336 "event.h",
337 ],
338 target_compatible_with = ["@platforms//os:linux"],
339 visibility = ["//visibility:public"],
340 deps = [
341 "//aos/ipc_lib:aos_sync",
342 "//aos/time",
343 "//aos/type_traits",
344 "@com_github_google_glog//:glog",
345 ],
346)
347
348cc_test(
349 name = "event_test",
350 srcs = [
351 "event_test.cc",
352 ],
353 target_compatible_with = ["@platforms//os:linux"],
354 deps = [
355 ":event",
356 "//aos/testing:googletest",
357 "//aos/testing:test_logging",
358 "//aos/time",
359 ],
360)