Skip to content

Commit 4ac8277

Browse files
authored
Merge pull request #10 from jozanza/patch-1
Add basic memory module
2 parents 2702f61 + 1804f9a commit 4ac8277

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ mod cgi_host;
33
mod error;
44
mod http;
55
mod http_host;
6+
mod memory;
7+
mod memory_host;
68
mod socket;
79
mod socket_host;
810

911
pub use cgi::*;
1012
pub use error::*;
1113
pub use http::*;
14+
pub use memory::*;
1215
pub use socket::*;

src/memory.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use crate::memory_host::*;
2+
3+
pub fn read_stdin(buf: &mut [u8]) -> std::io::Result<u32> {
4+
let mut len = 0;
5+
let errno = unsafe { memory_read(buf.as_mut_ptr(), buf.len() as _, &mut len) };
6+
if errno == 0 {
7+
return Ok(len);
8+
}
9+
let err = std::io::Error::from_raw_os_error(errno as i32);
10+
Err(err)
11+
}
12+
13+
pub fn read_env_vars(buf: &mut [u8]) -> std::io::Result<u32> {
14+
let mut len = 0;
15+
let errno = unsafe { env_var_read(buf.as_mut_ptr(), buf.len() as _, &mut len) };
16+
if errno == 0 {
17+
return Ok(len);
18+
}
19+
let err = std::io::Error::from_raw_os_error(errno as i32);
20+
Err(err)
21+
}

src/memory_host.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#[link(wasm_import_module = "blockless_memory")]
2+
extern "C" {
3+
#[link_name = "memory_read"]
4+
pub(crate) fn memory_read(buf: *mut u8, len: u32, num: *mut u32) -> u32;
5+
#[link_name = "env_var_read"]
6+
pub(crate) fn env_var_read(buf: *mut u8, len: u32, num: *mut u32) -> u32;
7+
}

0 commit comments

Comments
 (0)