#include "types.h" #include "result.h" #include "kernel/svc.h" #include "services/nv.h" #include "nvidia/ioctl.h" #include "nvidia/map.h" #include "nvidia/channel.h" Result nvChannelCreate(NvChannel* c, const char* dev) { Result rc; c->has_init = true; rc = nvOpen(&c->fd, dev); if (R_FAILED(rc)) c->fd = -1; if (R_SUCCEEDED(rc)) rc = nvioctlChannel_SetNvmapFd(c->fd, nvMapGetFd()); if (R_FAILED(rc)) nvChannelClose(c); return rc; } void nvChannelClose(NvChannel* c) { if (!c->has_init) return; if (c->fd != -1) { nvClose(c->fd); c->fd = -1; } c->has_init = false; } Result nvChannelSetPriority(NvChannel* c, NvChannelPriority prio) { return nvioctlChannel_SetPriority(c->fd, prio); } Result nvChannelSetTimeout(NvChannel* c, u32 timeout) { return nvioctlChannel_SetTimeout(c->fd, timeout); }