Vuo  2.3.2
VuoIoReturn.c
Go to the documentation of this file.
1 
10 #include "VuoIoReturn.h"
11 
12 #include "module.h"
13 
14 #ifdef VUO_COMPILER
16  "title" : "VuoIoReturn"
17  });
18 #endif
19 
20 
26 char *VuoIoReturn_getText(IOReturn ret)
27 {
28  if (err_get_code(ret) == err_get_code(kIOReturnSuccess))
29  return strdup("OK");
30 
31  int sys = err_get_system(ret);
32  char *sysText;
33  if (sys == err_get_system(sys_iokit)) sysText = strdup("IOKit");
34  else
35  asprintf(&sysText, "unknown(0x%04x)", sys);
36 
37  int sub = err_get_sub(ret);
38  char *subText;
39  if (sub == err_get_sub(sub_iokit_common)) subText = strdup("Common");
40  else if (sub == err_get_sub(sub_iokit_usb)) subText = strdup("USB");
41  else if (sub == err_get_sub(sub_iokit_firewire)) subText = strdup("Firewire");
42  else if (sub == err_get_sub(sub_iokit_block_storage)) subText = strdup("Storage");
43  else if (sub == err_get_sub(sub_iokit_graphics)) subText = strdup("Graphics");
44  else if (sub == err_get_sub(sub_iokit_networking)) subText = strdup("Networking");
45  else if (sub == err_get_sub(sub_iokit_bluetooth)) subText = strdup("Bluetooth");
46  else if (sub == err_get_sub(sub_iokit_pmu)) subText = strdup("PMU");
47  else if (sub == err_get_sub(sub_iokit_acpi)) subText = strdup("ACPI");
48  else if (sub == err_get_sub(sub_iokit_smbus)) subText = strdup("SMBUS");
49  else if (sub == err_get_sub(sub_iokit_ahci)) subText = strdup("AHCI");
50  else if (sub == err_get_sub(sub_iokit_powermanagement)) subText = strdup("Power Management");
51  else if (sub == err_get_sub(err_sub(14) /*sub_iokit_hidsystem*/)) subText = strdup("HID System");
52  else if (sub == err_get_sub(sub_iokit_scsi)) subText = strdup("SCSI");
53  else if (sub == err_get_sub(sub_iokit_thunderbolt)) subText = strdup("Thunderbolt");
54  else if (sub == err_get_sub(err_sub(0x45) /*sub_iokit_audio_video*/)) subText = strdup("Audio/Video");
55  else if (sub == err_get_sub(err_sub(0x147) /*sub_iokit_hsic*/)) subText = strdup("HSIC");
56  else if (sub == err_get_sub(err_sub(0x174) /*sub_iokit_sdio*/)) subText = strdup("SDIO");
57  else if (sub == err_get_sub(err_sub(0x208) /*sub_iokit_wlan*/)) subText = strdup("WLAN");
58  else if (sub == err_get_sub(sub_iokit_vendor_specific)) subText = strdup("Vendor-specific");
59  else if (sub == err_get_sub(sub_iokit_reserved)) subText = strdup("Reserved");
60  else asprintf(&subText, "unknown(0x%04x)", sub);
61 
62  int err = err_get_code(ret);
63  char *errText;
64  if (err == err_get_code(kIOReturnError)) errText = strdup("general error");
65  else if (err == err_get_code(kIOReturnNoMemory)) errText = strdup("can't allocate memory");
66  else if (err == err_get_code(kIOReturnNoResources)) errText = strdup("resource shortage");
67  else if (err == err_get_code(kIOReturnIPCError)) errText = strdup("error during IPC");
68  else if (err == err_get_code(kIOReturnNoDevice)) errText = strdup("no such device");
69  else if (err == err_get_code(kIOReturnNotPrivileged)) errText = strdup("privilege violation");
70  else if (err == err_get_code(kIOReturnBadArgument)) errText = strdup("invalid argument");
71  else if (err == err_get_code(kIOReturnLockedRead)) errText = strdup("device read locked");
72  else if (err == err_get_code(kIOReturnLockedWrite)) errText = strdup("device write locked");
73  else if (err == err_get_code(kIOReturnExclusiveAccess)) errText = strdup("exclusive access and device already open");
74  else if (err == err_get_code(kIOReturnBadMessageID)) errText = strdup("sent/received messages had different msg_id");
75  else if (err == err_get_code(kIOReturnUnsupported)) errText = strdup("unsupported function");
76  else if (err == err_get_code(kIOReturnVMError)) errText = strdup("misc. VM failure");
77  else if (err == err_get_code(kIOReturnInternalError)) errText = strdup("internal error");
78  else if (err == err_get_code(kIOReturnIOError)) errText = strdup("general I/O error");
79  else if (err == err_get_code(kIOReturnCannotLock)) errText = strdup("can't acquire lock");
80  else if (err == err_get_code(kIOReturnNotOpen)) errText = strdup("device not open");
81  else if (err == err_get_code(kIOReturnNotReadable)) errText = strdup("read not supported");
82  else if (err == err_get_code(kIOReturnNotWritable)) errText = strdup("write not supported");
83  else if (err == err_get_code(kIOReturnNotAligned)) errText = strdup("alignment error");
84  else if (err == err_get_code(kIOReturnBadMedia)) errText = strdup("media error");
85  else if (err == err_get_code(kIOReturnStillOpen)) errText = strdup("device(s) still open");
86  else if (err == err_get_code(kIOReturnRLDError)) errText = strdup("rld failure");
87  else if (err == err_get_code(kIOReturnDMAError)) errText = strdup("DMA failure");
88  else if (err == err_get_code(kIOReturnBusy)) errText = strdup("device busy");
89  else if (err == err_get_code(kIOReturnTimeout)) errText = strdup("I/O Timeout");
90  else if (err == err_get_code(kIOReturnOffline)) errText = strdup("device offline");
91  else if (err == err_get_code(kIOReturnNotReady)) errText = strdup("not ready");
92  else if (err == err_get_code(kIOReturnNotAttached)) errText = strdup("device not attached");
93  else if (err == err_get_code(kIOReturnNoChannels)) errText = strdup("no DMA channels left");
94  else if (err == err_get_code(kIOReturnNoSpace)) errText = strdup("no space for data ");
95  else if (err == err_get_code(kIOReturnPortExists)) errText = strdup("port already exists");
96  else if (err == err_get_code(kIOReturnCannotWire)) errText = strdup("can't wire down physical memory");
97  else if (err == err_get_code(kIOReturnNoInterrupt)) errText = strdup("no interrupt attached");
98  else if (err == err_get_code(kIOReturnNoFrames)) errText = strdup("no DMA frames enqueued");
99  else if (err == err_get_code(kIOReturnMessageTooLarge)) errText = strdup("oversized msg received on interrupt port");
100  else if (err == err_get_code(kIOReturnNotPermitted)) errText = strdup("not permitted");
101  else if (err == err_get_code(kIOReturnNoPower)) errText = strdup("no power to device");
102  else if (err == err_get_code(kIOReturnNoMedia)) errText = strdup("media not present");
103  else if (err == err_get_code(kIOReturnUnformattedMedia)) errText = strdup("edia not formatted");
104  else if (err == err_get_code(kIOReturnUnsupportedMode)) errText = strdup("no such mode");
105  else if (err == err_get_code(kIOReturnUnderrun)) errText = strdup("data underrun");
106  else if (err == err_get_code(kIOReturnOverrun)) errText = strdup("data overrun");
107  else if (err == err_get_code(kIOReturnDeviceError)) errText = strdup("the device is not working properly");
108  else if (err == err_get_code(kIOReturnNoCompletion)) errText = strdup("a completion routine is required");
109  else if (err == err_get_code(kIOReturnAborted)) errText = strdup("operation aborted");
110  else if (err == err_get_code(kIOReturnNoBandwidth)) errText = strdup("bus bandwidth would be exceeded");
111  else if (err == err_get_code(kIOReturnNotResponding)) errText = strdup("device not responding");
112  else if (err == err_get_code(kIOReturnIsoTooOld)) errText = strdup("isochronous I/O request for distant past");
113  else if (err == err_get_code(kIOReturnIsoTooNew)) errText = strdup("isochronous I/O request for distant future");
114  else if (err == err_get_code(kIOReturnNotFound)) errText = strdup("data was not found");
115  else if (err == err_get_code(kIOReturnInvalid)) errText = strdup("invalid");
116  else
117  asprintf(&errText, "unknown(0x%04x)", err);
118 
119  char *text;
120  asprintf(&text, "%s %s: %s", sysText, subText, errText);
121  free(sysText);
122  free(subText);
123  free(errText);
124  return text;
125 }