| //! System bindings for the risc0 zkvm platform |
| //! |
| //! This module contains the facade (aka platform-specific) implementations of |
| //! OS level functionality for zkvm. |
| //! |
| //! This is all super highly experimental and not actually intended for |
| //! wide/production use yet, it's still all in the experimental category. This |
| //! will likely change over time. |
| #![forbid(unsafe_op_in_unsafe_fn)] |
| |
| pub const WORD_SIZE: usize = size_of::<u32>(); |
| |
| pub mod abi; |
| pub mod os; |
| #[path = "../unsupported/pipe.rs"] |
| pub mod pipe; |
| #[path = "../unsupported/thread.rs"] |
| pub mod thread; |
| #[path = "../unsupported/time.rs"] |
| pub mod time; |
| |
| use crate::io as std_io; |
| |
| // SAFETY: must be called only once during runtime initialization. |
| // NOTE: this is not guaranteed to run, for example when Rust code is called externally. |
| pub unsafe fn init(_argc: isize, _argv: *const *const u8, _sigpipe: u8) {} |
| |
| // SAFETY: must be called only once during runtime cleanup. |
| // NOTE: this is not guaranteed to run, for example when the program aborts. |
| pub unsafe fn cleanup() {} |
| |
| pub fn unsupported<T>() -> std_io::Result<T> { |
| Err(unsupported_err()) |
| } |
| |
| pub fn unsupported_err() -> std_io::Error { |
| std_io::Error::UNSUPPORTED_PLATFORM |
| } |
| |
| pub fn is_interrupted(_code: i32) -> bool { |
| false |
| } |
| |
| pub fn decode_error_kind(_code: i32) -> crate::io::ErrorKind { |
| crate::io::ErrorKind::Uncategorized |
| } |
| |
| pub fn abort_internal() -> ! { |
| core::intrinsics::abort(); |
| } |