30 lines
854 B
C++
30 lines
854 B
C++
#pragma once
|
|
|
|
#ifndef MODULE
|
|
#define MODULE "mem"
|
|
#endif
|
|
|
|
#include "log/Log.h"
|
|
#include "memory/MemoryManager.h"
|
|
#include "memory/VMM.h"
|
|
#include "misc/utils.h"
|
|
#include <stddef.h>
|
|
|
|
Result<char*> strdup_from_user(const char* user_string);
|
|
bool validate_user_readable_page(uintptr_t address);
|
|
bool validate_user_writable_page(uintptr_t address);
|
|
bool validate_user_read(uintptr_t address, size_t size);
|
|
bool validate_user_write(uintptr_t address, size_t size);
|
|
|
|
bool copy_from_user(const void* user_ptr, void* ptr, size_t size);
|
|
bool copy_to_user(void* user_ptr, const void* ptr, size_t size);
|
|
|
|
template <typename T> bool copy_typed_from_user(const T* user_ptr, T* ptr)
|
|
{
|
|
return copy_from_user(user_ptr, ptr, sizeof(T));
|
|
}
|
|
|
|
template <typename T> bool copy_typed_to_user(T* user_ptr, const T* ptr)
|
|
{
|
|
return copy_to_user(user_ptr, ptr, sizeof(T));
|
|
} |