pub struct VmoBuffer {
pub vmo: Option<Vmo>,
pub vmo_usable_start: Option<u64>,
pub close_weak_asap: Option<EventPair>,
/* private fields */
}
Fields§
§vmo: Option<Vmo>
vmo
can be un-set if a participant has only
[fuchsia.sysmem2/BufferUsage.none
] set to NONE_USAGE
(explicitly or
implicitly by [fuchsia.sysmem2/BufferCollection.SetConstraints
]
without constraints
set).
vmo_usable_start: Option<u64>
Offset within the VMO of the first usable byte. Must be < the VMO’s size in bytes, and leave sufficient room for BufferMemorySettings.size_bytes before the end of the VMO.
Currently sysmem will always set this field to 0, and in future, sysmem won’t set this field to a non-zero value unless all participants have explicitly indicated support for non-zero vmo_usable_start (this mechanism does not exist as of this comment). A participant that hasn’t explicitly indicated support for non-zero vmo_usable_start (all current clients) should implicitly assume this field is set to 0 without actually checking this field.
close_weak_asap: Option<EventPair>
This field is set iff vmo
is a sysmem weak VMO handle. The client must
keep close_weak_asap
around for as long as vmo
, and must notice
ZX_EVENTPAIR_PEER_CLOSED
. If that signal occurs, the client must close
vmo
asap. Not doing so is considered a VMO leak by the client and in
that case sysmem will eventually complain loudly via syslog (currently
5s later).
Trait Implementations§
Source§impl Decode<VmoBuffer, DefaultFuchsiaResourceDialect> for VmoBuffer
impl Decode<VmoBuffer, DefaultFuchsiaResourceDialect> for VmoBuffer
Source§impl ResourceTypeMarker for VmoBuffer
impl ResourceTypeMarker for VmoBuffer
Source§type Borrowed<'a> = &'a mut VmoBuffer
type Borrowed<'a> = &'a mut VmoBuffer
Encode<Self>
type cheaply obtainable from &mut Self::Owned
. There are three cases: Read moreSource§fn take_or_borrow<'a>(
value: &'a mut <Self as TypeMarker>::Owned,
) -> Self::Borrowed<'a>
fn take_or_borrow<'a>( value: &'a mut <Self as TypeMarker>::Owned, ) -> Self::Borrowed<'a>
&mut Self::Owned
to Self::Borrowed
. For
HandleBased
types this is “take” (it returns an owned handle and
replaces value
with Handle::invalid
), and for all other types it is
“borrow” (just converts from one reference to another).Source§impl TypeMarker for VmoBuffer
impl TypeMarker for VmoBuffer
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read more§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.