Skip to content

Commit 91e130e

Browse files
paulsemelcopybara-github
authored andcommitted
Introduce an asynchronous byte transport that uses Futex and Shared memory
This new transport is meant to be used as a replacement to the socket based communication channel between the host and the sandboxee. It uses futexes to synchronize between the host and the sandboxee. PiperOrigin-RevId: 907498292 Change-Id: Ia49a6c8ab63b87836a8549b7ace901de3a267313
1 parent 538edb0 commit 91e130e

5 files changed

Lines changed: 1149 additions & 0 deletions

File tree

sandboxed_api/sandbox2/util/BUILD

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,40 @@ cc_library(
262262
hdrs = ["demangle.h"],
263263
copts = sapi_platform_copts(),
264264
)
265+
266+
cc_library(
267+
name = "asynchronous_byte_transport",
268+
srcs = ["asynchronous_byte_transport.cc"],
269+
hdrs = ["asynchronous_byte_transport.h"],
270+
copts = sapi_platform_copts(),
271+
deps = [
272+
"//sandboxed_api/sandbox2:buffer",
273+
"//sandboxed_api/sandbox2:util",
274+
"//sandboxed_api/util:raw_logging",
275+
"//sandboxed_api/util:status",
276+
"@abseil-cpp//absl/memory",
277+
"@abseil-cpp//absl/status",
278+
"@abseil-cpp//absl/status:statusor",
279+
"@abseil-cpp//absl/time",
280+
"@abseil-cpp//absl/types:span",
281+
],
282+
)
283+
284+
cc_test(
285+
name = "asynchronous_byte_transport_test",
286+
srcs = ["asynchronous_byte_transport_test.cc"],
287+
deps = [
288+
":asynchronous_byte_transport",
289+
"//sandboxed_api:testing",
290+
"//sandboxed_api/sandbox2:buffer",
291+
"//sandboxed_api/sandbox2:comms",
292+
"//sandboxed_api/util:fileops",
293+
"//sandboxed_api/util:thread",
294+
"@abseil-cpp//absl/log:check",
295+
"@abseil-cpp//absl/status",
296+
"@abseil-cpp//absl/synchronization",
297+
"@abseil-cpp//absl/time",
298+
"@abseil-cpp//absl/types:span",
299+
"@googletest//:gtest_main",
300+
],
301+
)

sandboxed_api/sandbox2/util/CMakeLists.txt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,24 @@ target_link_libraries(sandbox2_demangle
173173
PRIVATE sapi::base
174174
)
175175

176+
# sandboxed_api/sandbox2/util:asynchronous_byte_transport
177+
add_library(sandbox2_util_asynchronous_byte_transport ${SAPI_LIB_TYPE}
178+
asynchronous_byte_transport.cc
179+
asynchronous_byte_transport.h
180+
)
181+
add_library(sandbox2::asynchronous_byte_transport ALIAS sandbox2_util_asynchronous_byte_transport)
182+
target_link_libraries(sandbox2_util_asynchronous_byte_transport
183+
PUBLIC absl::memory
184+
absl::status
185+
absl::statusor
186+
absl::span
187+
absl::time
188+
sandbox2::buffer
189+
sandbox2::util
190+
sapi::raw_logging
191+
PRIVATE sapi::base
192+
)
193+
176194
if(BUILD_TESTING AND SAPI_BUILD_TESTING)
177195
# sandboxed_api/sandbox2/util:minielf_test
178196
add_executable(sandbox2_minielf_test
@@ -277,4 +295,24 @@ if(BUILD_TESTING AND SAPI_BUILD_TESTING)
277295
sapi::test_main
278296
)
279297
gtest_discover_tests_xcompile(sandbox2_seccomp_unotify_test)
298+
299+
# sandboxed_api/sandbox2/util:asynchronous_byte_transport_test
300+
add_executable(sandbox2_asynchronous_byte_transport_test
301+
asynchronous_byte_transport_test.cc
302+
)
303+
set_target_properties(sandbox2_asynchronous_byte_transport_test PROPERTIES
304+
OUTPUT_NAME asynchronous_byte_transport_test
305+
)
306+
target_link_libraries(sandbox2_asynchronous_byte_transport_test PRIVATE
307+
absl::check
308+
absl::status
309+
absl::statusor
310+
absl::synchronization
311+
absl::time
312+
sandbox2::asynchronous_byte_transport
313+
sandbox2::comms
314+
sapi::testing
315+
sapi::test_main
316+
)
317+
gtest_discover_tests_xcompile(sandbox2_asynchronous_byte_transport_test)
280318
endif()

0 commit comments

Comments
 (0)