diff options
Diffstat (limited to 'cli/ops/os.rs')
-rw-r--r-- | cli/ops/os.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cli/ops/os.rs b/cli/ops/os.rs index 4778d49a4..a38b5b08a 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -21,6 +21,7 @@ pub fn init(s: &Rc<State>) { s.register_op_json_sync("op_hostname", op_hostname); s.register_op_json_sync("op_loadavg", op_loadavg); s.register_op_json_sync("op_os_release", op_os_release); + s.register_op_json_sync("op_system_memory_info", op_system_memory_info); } fn op_exec_path( @@ -147,3 +148,24 @@ fn op_os_release( let release = sys_info::os_release().unwrap_or_else(|_| "".to_string()); Ok(json!(release)) } + +fn op_system_memory_info( + state: &State, + _args: Value, + _zero_copy: &mut [ZeroCopyBuf], +) -> Result<Value, ErrBox> { + state.check_unstable("Deno.systemMemoryInfo"); + state.check_env()?; + match sys_info::mem_info() { + Ok(info) => Ok(json!({ + "total": info.total, + "free": info.free, + "available": info.avail, + "buffers": info.buffers, + "cached": info.cached, + "swapTotal": info.swap_total, + "swapFree": info.swap_free + })), + Err(_) => Ok(json!({})), + } +} |