Iros
 
Loading...
Searching...
No Matches
userspace_access.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/util/prelude.h"
6#include "iris/core/config.h"
7#include "iris/core/error.h"
9
10#include IRIS_ARCH_INCLUDE(core/userspace_access.h)
11
12namespace iris {
13auto copy_to_user(di::Span<byte const> kernel_data, byte* userspace_ptr) -> Expected<void>;
14auto copy_from_user(di::Span<byte const> userspace_data, byte* kernel_ptr) -> Expected<void>;
15
16auto validate_user_region(mm::VirtualAddress userspace_address, usize count, usize size) -> Expected<void>;
17
18template<di::concepts::Invocable F>
19auto with_userspace_access(F&& function) -> decltype(auto) {
21 return di::invoke(di::forward<F>(function));
22}
23}
Definition userspace_access.h:14
constexpr usize size
Definition gfx_test.cpp:24
size_t usize
Definition integers.h:33
constexpr auto invoke
Definition invoke.h:100
di::StrongInt< VirtualAddressTag > VirtualAddress
Definition virtual_address.h:25
Definition cxx_init.cpp:12
auto copy_to_user(di::Span< byte const > kernel_data, byte *userspace_ptr) -> Expected< void >
Definition userspace_access.cpp:33
auto with_userspace_access(F &&function) -> decltype(auto)
Definition userspace_access.h:19
auto copy_from_user(di::Span< byte const > userspace_data, byte *kernel_ptr) -> Expected< void >
Definition userspace_access.cpp:42
auto validate_user_region(mm::VirtualAddress userspace_address, usize count, usize size) -> Expected< void >
Definition userspace_access.cpp:70
di::vocab::Expected< T, di::platform::GenericCode > Expected
Definition error.h:324