Struct xous::definitions::messages::MemoryMessage   
source · [−]#[repr(C)]pub struct MemoryMessage {
    pub id: MessageId,
    pub buf: MemoryRange,
    pub offset: Option<MemoryAddress>,
    pub valid: Option<MemorySize>,
}Expand description
A struct describing memory that is passed between processes.
The buf value will get translated as necessary.
Fields
id: MessageIdA user-assignable message ID.
buf: MemoryRangeThe offset of the buffer. This address will get transformed when the message is moved between processes.
offset: Option<MemoryAddress>The offset within the buffer where the interesting stuff starts. The usage of this field is purely advisory, is not checked by the kernel, should not be trusted by the receiver. It is perfectly legal for this to be larger than the buffer size.
As a result, this field may be repurposed for other uses. For example,
you can store a usize in this field by setting
message.offset = MemoryAddress::new(val), and get a usize back by
reading message.offset.map(|v| v.get()).unwrap_or_default().
For MutableBorrow messages this value will be returned to the sender and the
field will be updated when the Message is returned. Therefore you may also use
this field to communicate additional information to the message sender.
valid: Option<MemorySize>How many bytes in the buffer are valid. This field is advisory, and is not
checked by the kernel. It is legal for the sender to specify a valid range
that is larger than buf.len(), so this value should not be blindly trusted.
As a result, this field may be repurposed for other uses. For example,
you can store a usize in this field by setting
message.valid = MemoryAddress::new(val), and get a usize back by
reading message.valid.map(|v| v.get()).unwrap_or_default().
For MutableBorrow messages this value will be returned to the sender and the
field will be updated when the Message is returned. Therefore you may also use
this field to communicate additional information to the message sender.