sel4_shared_memory/
ops.rs
1use core::ptr;
8
9use zerocopy::{FromBytes, IntoBytes};
10
11use sel4_abstract_ptr::memory_type::{BulkOps, UnitaryOps};
12
13use crate::SharedMemory;
14
15impl<T: FromBytes + IntoBytes> UnitaryOps<T> for SharedMemory {
16 unsafe fn read(src: *const T) -> T {
17 unsafe { ptr::read(src) }
18 }
19
20 unsafe fn write(dst: *mut T, src: T) {
21 unsafe { ptr::write(dst, src) }
22 }
23}
24
25impl<T: FromBytes + IntoBytes> BulkOps<T> for SharedMemory {
26 unsafe fn memmove(dst: *mut T, src: *const T, count: usize) {
27 unsafe { ptr::copy(src, dst, count) }
28 }
29
30 unsafe fn memcpy_into(dst: *mut T, src: *const T, count: usize) {
31 unsafe { ptr::copy_nonoverlapping(src, dst, count) }
32 }
33
34 unsafe fn memcpy_from(dst: *mut T, src: *const T, count: usize) {
35 unsafe { ptr::copy_nonoverlapping(src, dst, count) }
36 }
37
38 unsafe fn memset(dst: *mut T, val: u8, count: usize) {
39 unsafe { ptr::write_bytes(dst, val, count) }
40 }
41}