mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-25 06:12:40 +02:00
- Now contains a 'page_size' field, used throughout the functions - Removed NvPageSize - Removed nvAddressSpaceReserveAlign/AtFixedAddr/Full - Added nvAddressSpaceAlloc/AllocFixed/Free (replacing above functions) - Removed nvAddressSpaceMapBuffer/UnmapBuffer - Added nvAddressSpaceMap/MapFixed/Modify/Unmap (replacing above functions) - Adapted NvBuffer/NvGpu to use the new functions
24 lines
984 B
C
24 lines
984 B
C
#pragma once
|
|
#include "types.h"
|
|
|
|
typedef struct NvAddressSpace {
|
|
u32 fd;
|
|
u32 page_size;
|
|
bool has_init;
|
|
} NvAddressSpace;
|
|
|
|
Result nvAddressSpaceCreate(NvAddressSpace* a, u32 page_size);
|
|
void nvAddressSpaceClose(NvAddressSpace* a);
|
|
|
|
Result nvAddressSpaceAlloc(NvAddressSpace* a, bool sparse, u64 size, iova_t* iova_out);
|
|
Result nvAddressSpaceAllocFixed(NvAddressSpace* a, bool sparse, u64 size, iova_t iova);
|
|
Result nvAddressSpaceFree(NvAddressSpace* a, iova_t iova, u64 size);
|
|
|
|
Result nvAddressSpaceMap(NvAddressSpace* a, u32 nvmap_handle, bool is_gpu_cacheable, NvKind kind, iova_t* iova_out);
|
|
Result nvAddressSpaceMapFixed(NvAddressSpace* a, u32 nvmap_handle, bool is_gpu_cacheable, NvKind kind, iova_t iova);
|
|
Result nvAddressSpaceModify(NvAddressSpace* a, iova_t iova, u64 offset, u64 size, NvKind kind);
|
|
Result nvAddressSpaceUnmap(NvAddressSpace* a, iova_t iova);
|
|
|
|
struct NvChannel;
|
|
Result nvAddressSpaceBindToChannel(NvAddressSpace* a, struct NvChannel* channel);
|