#![no_std]
#![no_main]
#[macro_use]
extern crate user_lib;
use user_lib::{mmap, munmap};
// 教学目标:
// 覆盖 munmap 参数错误路径(范围超界、地址未对齐)。
// 理想结果:对于错误的 munmap 返回 -1。
#[unsafe(no_mangle)]
extern "C" fn main() -> i32 {
let start: usize = 0x10000000;
let len: usize = 4096;
let prot: usize = 3;
assert_eq!(0, mmap(start, len, prot));
assert_eq!(munmap(start, len + 1), -1); // 存在未映射的页
assert_eq!(munmap(start + 1, len - 1), -1); // 地址未对齐
println!("Test 04_6 ummap2 OK!");
0
}