(
ctx: &mut VmCtx,
addr: usize,
res: RuntimeResult<FileStat>,
)
| 137 | #[ensures(ctx_safe(ctx))] |
| 138 | #[ensures(trace_safe(trace, ctx))] |
| 139 | pub fn wasm2c_marshal_and_writeback_filestat( |
| 140 | ctx: &mut VmCtx, |
| 141 | addr: usize, |
| 142 | res: RuntimeResult<FileStat>, |
| 143 | ) -> u32 { |
| 144 | if !ctx.fits_in_lin_mem_usize(addr, 64) { |
| 145 | return RuntimeError::Eoverflow.into(); |
| 146 | } |
| 147 | //log::debug!("wasm2c_marshal_and_writeback_filestat: {:?}", result); |
| 148 | match res { |
| 149 | Ok(r) => { |
| 150 | ctx.write_u64(addr, r.dev); |
| 151 | ctx.write_u64(addr + 8, r.ino); |
| 152 | ctx.write_u64(addr + 16, r.filetype.to_wasi() as u64); |
| 153 | ctx.write_u64(addr + 24, r.nlink); |
| 154 | ctx.write_u64(addr + 32, r.size); |
| 155 | ctx.write_u64(addr + 40, r.atim.nsec()); |
| 156 | ctx.write_u64(addr + 48, r.mtim.nsec()); |
| 157 | ctx.write_u64(addr + 56, r.ctim.nsec()); |
| 158 | 0 |
| 159 | } |
| 160 | Err(err) => err.into(), |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | #[with_ghost_var(trace: &mut Trace)] |
| 165 | #[requires(ctx_safe(ctx))] |
no test coverage detected