• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use base::MappedRegion;
6 use base::MemoryMapping;
7 use base::MemoryMappingBuilder;
8 use base::SharedMemory;
9 use swap::userfaultfd::Userfaultfd;
10 use userfaultfd::UffdBuilder;
11 
create_uffd_for_test() -> Userfaultfd12 pub fn create_uffd_for_test() -> Userfaultfd {
13     UffdBuilder::new()
14         .non_blocking(false)
15         .create()
16         .unwrap()
17         .into()
18 }
19 
20 pub struct SharedMemoryMapping {
21     pub shm: SharedMemory,
22     pub mmap: MemoryMapping,
23 }
24 
25 impl SharedMemoryMapping {
base_addr(&self) -> usize26     pub fn base_addr(&self) -> usize {
27         self.mmap.as_ptr() as usize
28     }
29 }
30 
create_shared_memory(name: &str, size: usize) -> SharedMemoryMapping31 pub fn create_shared_memory(name: &str, size: usize) -> SharedMemoryMapping {
32     let shm = SharedMemory::new(name, size as u64).unwrap();
33     let mmap = MemoryMappingBuilder::new(size)
34         .from_shared_memory(&shm)
35         .build()
36         .unwrap();
37     SharedMemoryMapping { shm, mmap }
38 }
39