corevm-guest 0.1.28

API/SDK for CoreVM guest programs
Documentation
// Here we wrap each exported symbol name in `corevm_*_ext` to namespace C API and to be able to
// write C convenience wrappers for each imported function in `corevm_guest.h`.
//
// The documentation for the host-calls is in `c_stub.rs` file.
#[polkavm_derive::polkavm_import]
extern "C" {
	#[polkavm_import(symbol = "corevm_gas_ext")]
	pub fn gas() -> u64;

	#[polkavm_import(symbol = "corevm_alloc_ext")]
	pub fn alloc(size: u64) -> u64;

	#[polkavm_import(symbol = "corevm_free_ext")]
	pub fn free(address: u64, size: u64);

	#[polkavm_import(symbol = "corevm_yield_console_data_ext")]
	pub fn yield_console_data(stream: u64, address: u64, len: u64);

	#[polkavm_import(symbol = "corevm_yield_video_frame_ext")]
	pub fn yield_video_frame(address: u64, len: u64, format: u64);

	#[polkavm_import(symbol = "corevm_video_mode_ext")]
	pub fn video_mode(width: u64, height: u64, refresh_rate: u64, flags: u64);

	#[polkavm_import(symbol = "corevm_yield_audio_samples_ext")]
	pub fn yield_audio_samples(address: u64, len: u64);

	#[polkavm_import(symbol = "corevm_audio_mode_ext")]
	pub fn audio_mode(channels: u64, sample_rate: u64, sample_format: u64);

	#[polkavm_import(symbol = "corevm_recv_message_ext")]
	pub fn recv_message(address: u64, len: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_send_message_ext")]
	pub fn send_message(guest_id: u64, address: u64, len: u64);

	#[polkavm_import(symbol = "corevm_recv_host_message_ext")]
	pub fn recv_host_message(address: u64, len: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_poll_ext")]
	pub fn poll(streams: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_read_console_data_ext")]
	pub fn read_console_data(address: u64, len: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_video_input_mode_ext")]
	pub fn video_input_mode() -> u64;

	#[polkavm_import(symbol = "corevm_read_video_frame_ext")]
	pub fn read_video_frame(address: u64, len: u64, format: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_audio_input_mode_ext")]
	pub fn audio_input_mode() -> u64;

	#[polkavm_import(symbol = "corevm_read_audio_frames_ext")]
	pub fn read_audio_frames(address: u64, len: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_initiate_transaction_ext")]
	pub fn initiate_transaction(guest_id: u64, address: u64, len: u64) -> u64;

	#[polkavm_import(symbol = "corevm_recv_transaction_ext")]
	pub fn recv_transaction(address: u64, len: u64, flags: u64) -> u64;

	#[polkavm_import(symbol = "corevm_commit_transaction_ext")]
	pub fn commit_transaction() -> u64;

	#[polkavm_import(symbol = "corevm_rollback_transaction_ext")]
	pub fn rollback_transaction();

	#[polkavm_import(symbol = "corevm_end_transaction_ext")]
	pub fn end_transaction();
}