|
|
|
@ -294,6 +294,24 @@ public: |
|
|
|
void ReadBlock(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, |
|
|
|
std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
* Reads a contiguous block of bytes from a specified process' address space. |
|
|
|
* This unsafe version does not trigger GPU flushing. |
|
|
|
* |
|
|
|
* @param process The process to read the data from. |
|
|
|
* @param src_addr The virtual address to begin reading from. |
|
|
|
* @param dest_buffer The buffer to place the read bytes into. |
|
|
|
* @param size The amount of data to read, in bytes. |
|
|
|
* |
|
|
|
* @note If a size of 0 is specified, then this function reads nothing and |
|
|
|
* no attempts to access memory are made at all. |
|
|
|
* |
|
|
|
* @pre dest_buffer must be at least size bytes in length, otherwise a |
|
|
|
* buffer overrun will occur. |
|
|
|
* |
|
|
|
* @post The range [dest_buffer, size) contains the read bytes from the |
|
|
|
* process' address space. |
|
|
|
*/ |
|
|
|
void ReadBlockUnsafe(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, |
|
|
|
std::size_t size); |
|
|
|
|
|
|
|
@ -315,6 +333,23 @@ public: |
|
|
|
*/ |
|
|
|
void ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
* Reads a contiguous block of bytes from the current process' address space. |
|
|
|
* This unsafe version does not trigger GPU flushing. |
|
|
|
* |
|
|
|
* @param src_addr The virtual address to begin reading from. |
|
|
|
* @param dest_buffer The buffer to place the read bytes into. |
|
|
|
* @param size The amount of data to read, in bytes. |
|
|
|
* |
|
|
|
* @note If a size of 0 is specified, then this function reads nothing and |
|
|
|
* no attempts to access memory are made at all. |
|
|
|
* |
|
|
|
* @pre dest_buffer must be at least size bytes in length, otherwise a |
|
|
|
* buffer overrun will occur. |
|
|
|
* |
|
|
|
* @post The range [dest_buffer, size) contains the read bytes from the |
|
|
|
* current process' address space. |
|
|
|
*/ |
|
|
|
void ReadBlockUnsafe(VAddr src_addr, void* dest_buffer, std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
@ -340,6 +375,23 @@ public: |
|
|
|
void WriteBlock(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer, |
|
|
|
std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
* Writes a range of bytes into a given process' address space at the specified |
|
|
|
* virtual address. |
|
|
|
* This unsafe version does not invalidate GPU Memory. |
|
|
|
* |
|
|
|
* @param process The process to write data into the address space of. |
|
|
|
* @param dest_addr The destination virtual address to begin writing the data at. |
|
|
|
* @param src_buffer The data to write into the process' address space. |
|
|
|
* @param size The size of the data to write, in bytes. |
|
|
|
* |
|
|
|
* @post The address range [dest_addr, size) in the process' address space |
|
|
|
* contains the data that was within src_buffer. |
|
|
|
* |
|
|
|
* @post If an attempt is made to write into an unmapped region of memory, the writes |
|
|
|
* will be ignored and an error will be logged. |
|
|
|
* |
|
|
|
*/ |
|
|
|
void WriteBlockUnsafe(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer, |
|
|
|
std::size_t size); |
|
|
|
|
|
|
|
@ -364,6 +416,22 @@ public: |
|
|
|
*/ |
|
|
|
void WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
* Writes a range of bytes into the current process' address space at the specified |
|
|
|
* virtual address. |
|
|
|
* This unsafe version does not invalidate GPU Memory. |
|
|
|
* |
|
|
|
* @param dest_addr The destination virtual address to begin writing the data at. |
|
|
|
* @param src_buffer The data to write into the current process' address space. |
|
|
|
* @param size The size of the data to write, in bytes. |
|
|
|
* |
|
|
|
* @post The address range [dest_addr, size) in the current process' address space |
|
|
|
* contains the data that was within src_buffer. |
|
|
|
* |
|
|
|
* @post If an attempt is made to write into an unmapped region of memory, the writes |
|
|
|
* will be ignored and an error will be logged. |
|
|
|
* |
|
|
|
*/ |
|
|
|
void WriteBlockUnsafe(VAddr dest_addr, const void* src_buffer, std::size_t size); |
|
|
|
|
|
|
|
/** |
|
|
|
|