/* $info$ tags: thunklibs|drm $end_info$ */ #include #include #include #include #include #include "common/Guest.h" #include #include "thunkgen_guest_libdrm.inl" extern "C" { void FEX_malloc_free_on_host(void *Ptr) { struct {void *p;} args; args.p = Ptr; fexthunks_libdrm_FEX_free_on_host(&args); } size_t FEX_malloc_usable_size(void *Ptr) { struct {void *p; size_t rv;} args; args.p = Ptr; fexthunks_libdrm_FEX_usable_size(&args); return args.rv; } void drmMsg(const char *format,...){ va_list ap; if (1) { va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); } } char * drmGetDeviceNameFromFd(int a_0){ auto ret = fexfn_pack_drmGetDeviceNameFromFd(a_0); if (ret) { // Usable size size_t Usable = FEX_malloc_usable_size(ret); // This will be a bit wasteful but this is an unsized pointer void *NewPtr = malloc(Usable); memcpy(NewPtr, ret, Usable); FEX_malloc_free_on_host(ret); ret = (char*)NewPtr; } return ret; } char * drmGetDeviceNameFromFd2(int a_0){ auto ret = fexfn_pack_drmGetDeviceNameFromFd2(a_0); if (ret) { // Usable size size_t Usable = FEX_malloc_usable_size(ret); // This will be a bit wasteful but this is an unsized pointer void *NewPtr = malloc(Usable); memcpy(NewPtr, ret, Usable); FEX_malloc_free_on_host(ret); ret = (char*)NewPtr; } return ret; } char * drmGetPrimaryDeviceNameFromFd(int a_0){ auto ret = fexfn_pack_drmGetPrimaryDeviceNameFromFd(a_0); if (ret) { // Usable size size_t Usable = FEX_malloc_usable_size(ret); // This will be a bit wasteful but this is an unsized pointer void *NewPtr = malloc(Usable); memcpy(NewPtr, ret, Usable); FEX_malloc_free_on_host(ret); ret = (char*)NewPtr; } return ret; } char * drmGetRenderDeviceNameFromFd(int a_0){ auto ret = fexfn_pack_drmGetRenderDeviceNameFromFd(a_0); if (ret) { // Usable size size_t Usable = FEX_malloc_usable_size(ret); // This will be a bit wasteful but this is an unsized pointer void *NewPtr = malloc(Usable); memcpy(NewPtr, ret, Usable); FEX_malloc_free_on_host(ret); ret = (char*)NewPtr; } return ret; } } LOAD_LIB(libdrm)