From bd3b78ccc8452dc1b50f64b814abda9c2f4ad529 Mon Sep 17 00:00:00 2001 From: Lachlan Sneff Date: Mon, 26 Nov 2018 16:06:27 -0500 Subject: [PATCH] Add several more syscalls --- src/apis/emscripten/env.rs | 5 ++++- src/apis/emscripten/memory.rs | 3 ++- src/apis/emscripten/mod.rs | 6 +++--- src/apis/emscripten/time.rs | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/apis/emscripten/env.rs b/src/apis/emscripten/env.rs index d8b433533..c3c9f6356 100644 --- a/src/apis/emscripten/env.rs +++ b/src/apis/emscripten/env.rs @@ -8,7 +8,6 @@ use libc::{ use std::ffi::CStr; use std::os::raw::c_char; use std::{slice, mem}; -use std::time::SystemTime; use crate::webassembly::Instance; <<<<<<< HEAD @@ -114,3 +113,7 @@ pub extern fn _localtime_r() -> u32 { pub extern fn _getpagesize() -> u32 { LinearMemory::PAGE_SIZE } + +pub extern fn _prlimit(pid: c_int, resource: c_int, new_limit: c_int, old_limit: c_int, instance: &mut Instance) -> c_int { + 0 +} diff --git a/src/apis/emscripten/memory.rs b/src/apis/emscripten/memory.rs index cbaa7e6bf..241fe462e 100644 --- a/src/apis/emscripten/memory.rs +++ b/src/apis/emscripten/memory.rs @@ -21,7 +21,8 @@ pub extern "C" fn _emscripten_memcpy_big( /// emscripten: getTotalMemory pub extern "C" fn get_total_memory(instance: &mut Instance) -> u32 { debug!("emscripten::get_total_memory"); - instance.memories[0].current_pages() + // instance.memories[0].current_pages() + 16777216 } /// emscripten: enlargeMemory diff --git a/src/apis/emscripten/mod.rs b/src/apis/emscripten/mod.rs index 7a24dd663..27aab3460 100644 --- a/src/apis/emscripten/mod.rs +++ b/src/apis/emscripten/mod.rs @@ -57,9 +57,9 @@ pub fn emscripten_set_up_memory(memory: &mut LinearMemory) { macro_rules! mock_external { ($import:ident, $name:ident) => {{ - fn _mocked_fn() -> i32 { + extern fn _mocked_fn() -> i32 { println!("emscripten::{} ", stringify!($name)); - 0 + -1 } $import.set( "env", @@ -293,7 +293,7 @@ pub fn generate_emscripten_env<'a, 'b>() -> ImportObject<&'a str, &'b str> { import_object.set( "env", "_clock_gettime", - ImportValue::Func(env::_clock_gettime as _), + ImportValue::Func(time::_clock_gettime as _), ); import_object.set( "env", diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index 35fd37253..296c99f36 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -1,5 +1,5 @@ -use libc::{gettimeofday, timeval, c_int, clock_gettime, clockid_t, timespec}; -use std::ptr; +use libc::{timeval, c_int, clock_gettime as libc_clock_gettime, timespec}; +use std::time::SystemTime; use crate::webassembly::Instance;