crossing user-kernel boundary (using copyin/copyout or mmap?)