fn is_err<T>(ptr: *mut T) -> bool {
ptr as usize >= (-4095isize as usize)
}
pub fn map_ptr<T>(ptr: *mut T) -> Result<*mut T, i32> {
match is_err(ptr) {
false => Ok(ptr),
true => Err(-(ptr as i32)),
}
}
pub fn map_val(val: i32) -> Result<i32, i32> {
match val {
val @ 0.. => Ok(val),
errno => Err(-errno),
}
}