long sys_proc_info(uint32_t callnum, int32_t pid, uint32_t flavor, uint64_t arg, void* buffer, int32_t bufsize) { switch (callnum) { case 4: // proc_kmsgbuf { int ret; ret = __linux_syslog(SYSLOG_ACTION_READ_ALL, (char*) buffer, bufsize); if (ret < 0) return errno_linux_to_bsd(ret); return ret; } case 1: // proc_listpids case 2: // proc_pidinfo case 3: // proc_pidfdinfo default: __simple_printf("sys_proc_info(): Unsupported callnum: %d\n", callnum); return -ENOTSUP; } }
void SPIError (const uint8_t err, ...) { va_list list; char str[18] = "SPI Error %u: %s\n"; switch (err) { case SPI_INVALID_PIN: __simple_printf(str, (err - SPI_ERRORS_BASE), "Invalid pin"); break; case SPI_INVALID_MODE: __simple_printf(str, (err - SPI_ERRORS_BASE), "Invalid mode"); break; case SPI_INVALID_PIN_MASK: __simple_printf(str, (err - SPI_ERRORS_BASE), "Invalid pin mask"); break; case SPI_TOO_MANY_BITS: __simple_printf(str, (err - SPI_ERRORS_BASE), "Incapable of handling so many bits in an argument"); break; case SPI_TIMEOUT: va_start(list, err); __simple_printf("SPI Error %u: %s\n\tCalling function was %s\n", (err - SPI_ERRORS_BASE), "Timed out during parameter passing", va_arg(list, char *)); va_end(list); break; case SPI_TIMEOUT_RD: __simple_printf(str, (err - SPI_ERRORS_BASE), "Timed out during parameter read"); break; case SPI_COG_NOT_STARTED: __simple_printf(str, (err - SPI_ERRORS_BASE), "SPI's GAS cog was not started"); break; case SPI_MODULE_NOT_RUNNING: __simple_printf(str, (err - SPI_ERRORS_BASE), "SPI GAS cog not running"); break; case SPI_INVALID_FREQ: __simple_printf(str, (err - SPI_ERRORS_BASE), "Frequency set too high"); break; case SPI_ADDR_MISALIGN: __simple_printf(str, (err - SPI_ERRORS_BASE), "Passed in address is miss aligned"); break; default: // Is the error an SPI error? if (err > SPI_ERRORS_BASE && err < (SPI_ERRORS_BASE + SPI_ERRORS_LIMIT)) __simple_printf("Unknown SPI error %u\n", (err - SPI_ERRORS_BASE)); else __simple_printf("Unknown error %u\n", (err)); break; } while (1) ; }