Skip to main content

ExecBuffer

Struct ExecBuffer 

Source
#[repr(C)]
pub struct ExecBuffer { pub gas_left: i64, pub syscall_no: u32, pub _pad: u32, pub a0: u64, pub a1: u64, pub a2: u64, pub a3: u64, pub a4: u64, pub a5: u64, }
Expand description

Buffer shared between runtime and executor for passing syscall data across the host function boundary.

The runtime allocates this on its stack and passes it via pointer. The host fills it in when returning from VirtT::run.

Fields§

§gas_left: i64

Gas remaining after the execution step.

§syscall_no: u32

The syscall number (only meaningful when the status is ExecStatus::Syscall).

§_pad: u32

Padding to maintain alignment after syscall_no.

§a0: u64

Syscall register arguments a0-a5 (only meaningful for ExecStatus::Syscall).

§a1: u64§a2: u64§a3: u64§a4: u64§a5: u64

Implementations§

Source§

impl ExecBuffer

Source

pub fn from_outcome(outcome: &ExecOutcome) -> Self

Populate this buffer from an ExecOutcome.

Source

pub fn into_outcome(self, status: ExecStatus) -> ExecOutcome

Decode a status byte and this buffer into an ExecOutcome.

Trait Implementations§

Source§

impl AsMut<[u8]> for ExecBuffer

Source§

fn as_mut(&mut self) -> &mut [u8]

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<[u8]> for ExecBuffer

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Debug for ExecBuffer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ExecBuffer

Source§

fn default() -> ExecBuffer

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, U> AsByteSlice<T> for U
where T: ToByteSlice, U: AsRef<[T]> + ?Sized,

Source§

fn as_byte_slice(&self) -> &[u8]

Source§

impl<T, U> AsMutByteSlice<T> for U
where T: ToMutByteSlice, U: AsMut<[T]> + ?Sized,

Source§

fn as_mut_byte_slice(&mut self) -> &mut [u8]

Source§

impl<U> AsMutSliceOf for U
where U: AsMut<[u8]> + ?Sized,

Source§

fn as_mut_slice_of<T>(&mut self) -> Result<&mut [T], Error>
where T: FromByteSlice,

Source§

impl<U> AsSliceOf for U
where U: AsRef<[u8]> + ?Sized,

Source§

fn as_slice_of<T>(&self) -> Result<&[T], Error>
where T: FromByteSlice,

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,