pub enum SyscallCode {
Show 35 variants
HALT = 0,
WRITE = 2,
ENTER_UNCONSTRAINED = 3,
EXIT_UNCONSTRAINED = 4,
SHA_EXTEND = 3_145_989,
SHA_COMPRESS = 65_798,
ED_ADD = 65_799,
ED_DECOMPRESS = 264,
KECCAK_PERMUTE = 65_801,
SECP256K1_ADD = 65_802,
SECP256K1_DOUBLE = 267,
SECP256K1_DECOMPRESS = 268,
BN254_ADD = 65_806,
BN254_DOUBLE = 271,
COMMIT = 16,
COMMIT_DEFERRED_PROOFS = 26,
VERIFY_SP1_PROOF = 27,
BLS12381_DECOMPRESS = 284,
HINT_LEN = 240,
HINT_READ = 241,
UINT256_MUL = 65_821,
BLS12381_ADD = 65_822,
BLS12381_DOUBLE = 287,
BLS12381_FP_ADD = 65_824,
BLS12381_FP_SUB = 65_825,
BLS12381_FP_MUL = 65_826,
BLS12381_FP2_ADD = 65_827,
BLS12381_FP2_SUB = 65_828,
BLS12381_FP2_MUL = 65_829,
BN254_FP_ADD = 65_830,
BN254_FP_SUB = 65_831,
BN254_FP_MUL = 65_832,
BN254_FP2_ADD = 65_833,
BN254_FP2_SUB = 65_834,
BN254_FP2_MUL = 65_835,
}Expand description
System Calls.
A system call is invoked by the the ecall instruction with a specific value in register t0.
The syscall number is a 32-bit integer with the following little-endian layout:
| Byte 0 | Byte 1 | Byte 2 | Byte 3 |
|---|---|---|---|
| ID | Table | Cycles | Unused |
where:
- Byte 0: The system call identifier.
- Byte 1: Whether the handler of the system call has its own table. This is used in the CPU table to determine whether to lookup the syscall using the syscall interaction.
- Byte 2: The number of additional cycles the syscall uses. This is used to make sure the # of memory accesses is bounded.
- Byte 3: Currently unused.
Variants§
HALT = 0
Halts the program.
WRITE = 2
Write to the output buffer.
ENTER_UNCONSTRAINED = 3
Enter unconstrained block.
EXIT_UNCONSTRAINED = 4
Exit unconstrained block.
SHA_EXTEND = 3_145_989
Executes the SHA_EXTEND precompile.
SHA_COMPRESS = 65_798
Executes the SHA_COMPRESS precompile.
ED_ADD = 65_799
Executes the ED_ADD precompile.
ED_DECOMPRESS = 264
Executes the ED_DECOMPRESS precompile.
KECCAK_PERMUTE = 65_801
Executes the KECCAK_PERMUTE precompile.
SECP256K1_ADD = 65_802
Executes the SECP256K1_ADD precompile.
SECP256K1_DOUBLE = 267
Executes the SECP256K1_DOUBLE precompile.
SECP256K1_DECOMPRESS = 268
Executes the SECP256K1_DECOMPRESS precompile.
BN254_ADD = 65_806
Executes the BN254_ADD precompile.
BN254_DOUBLE = 271
Executes the BN254_DOUBLE precompile.
COMMIT = 16
Executes the COMMIT precompile.
COMMIT_DEFERRED_PROOFS = 26
Executes the COMMIT_DEFERRED_PROOFS precompile.
VERIFY_SP1_PROOF = 27
Executes the VERIFY_SP1_PROOF precompile.
BLS12381_DECOMPRESS = 284
Executes the BLS12381_DECOMPRESS precompile.
HINT_LEN = 240
Executes the HINT_LEN precompile.
HINT_READ = 241
Executes the HINT_READ precompile.
UINT256_MUL = 65_821
Executes the UINT256_MUL precompile.
BLS12381_ADD = 65_822
Executes the BLS12381_ADD precompile.
BLS12381_DOUBLE = 287
Executes the BLS12381_DOUBLE precompile.
BLS12381_FP_ADD = 65_824
Executes the BLS12381_FP_ADD precompile.
BLS12381_FP_SUB = 65_825
Executes the BLS12381_FP_SUB precompile.
BLS12381_FP_MUL = 65_826
Executes the BLS12381_FP_MUL precompile.
BLS12381_FP2_ADD = 65_827
Executes the BLS12381_FP2_ADD precompile.
BLS12381_FP2_SUB = 65_828
Executes the BLS12381_FP2_SUB precompile.
BLS12381_FP2_MUL = 65_829
Executes the BLS12381_FP2_MUL precompile.
BN254_FP_ADD = 65_830
Executes the BN254_FP_ADD precompile.
BN254_FP_SUB = 65_831
Executes the BN254_FP_SUB precompile.
BN254_FP_MUL = 65_832
Executes the BN254_FP_MUL precompile.
BN254_FP2_ADD = 65_833
Executes the BN254_FP2_ADD precompile.
BN254_FP2_SUB = 65_834
Executes the BN254_FP2_SUB precompile.
BN254_FP2_MUL = 65_835
Executes the BN254_FP2_MUL precompile.
Implementations§
Source§impl SyscallCode
impl SyscallCode
Sourcepub fn from_u32(value: u32) -> Self
pub fn from_u32(value: u32) -> Self
Create a SyscallCode from a u32.
Sourcepub fn syscall_id(self) -> u32
pub fn syscall_id(self) -> u32
Get the system call identifier.
Sourcepub fn should_send(self) -> u32
pub fn should_send(self) -> u32
Get whether the handler of the system call has its own table.
Sourcepub fn num_cycles(self) -> u32
pub fn num_cycles(self) -> u32
Get the number of additional cycles the syscall uses.
Trait Implementations§
Source§impl Clone for SyscallCode
impl Clone for SyscallCode
Source§fn clone(&self) -> SyscallCode
fn clone(&self) -> SyscallCode
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SyscallCode
impl Debug for SyscallCode
Source§impl<'de> Deserialize<'de> for SyscallCode
impl<'de> Deserialize<'de> for SyscallCode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for SyscallCode
impl Display for SyscallCode
Source§impl Enum for SyscallCode
impl Enum for SyscallCode
Source§impl<V> EnumArray<V> for SyscallCode
impl<V> EnumArray<V> for SyscallCode
Source§impl Hash for SyscallCode
impl Hash for SyscallCode
Source§impl IntoEnumIterator for SyscallCode
impl IntoEnumIterator for SyscallCode
type Iterator = SyscallCodeIter
fn iter() -> SyscallCodeIter ⓘ
Source§impl Ord for SyscallCode
impl Ord for SyscallCode
Source§fn cmp(&self, other: &SyscallCode) -> Ordering
fn cmp(&self, other: &SyscallCode) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SyscallCode
impl PartialEq for SyscallCode
Source§impl PartialOrd for SyscallCode
impl PartialOrd for SyscallCode
Source§impl Serialize for SyscallCode
impl Serialize for SyscallCode
impl Copy for SyscallCode
impl Eq for SyscallCode
impl StructuralPartialEq for SyscallCode
Auto Trait Implementations§
impl Freeze for SyscallCode
impl RefUnwindSafe for SyscallCode
impl Send for SyscallCode
impl Sync for SyscallCode
impl Unpin for SyscallCode
impl UnwindSafe for SyscallCode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more