| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <zircon/status.h> |
| |
| #include "private.h" |
| |
| const char* _zx_status_get_string(zx_status_t status) { |
| switch (status) { |
| case ZX_OK: return "ZX_OK"; |
| case ZX_ERR_INTERNAL: return "ZX_ERR_INTERNAL"; |
| case ZX_ERR_NOT_SUPPORTED: return "ZX_ERR_NOT_SUPPORTED"; |
| case ZX_ERR_NO_RESOURCES: return "ZX_ERR_NO_RESOURCES"; |
| case ZX_ERR_NO_MEMORY: return "ZX_ERR_NO_MEMORY"; |
| case ZX_ERR_INTERNAL_INTR_RETRY: return "ZX_ERR_INTERNAL_INTR_RETRY"; |
| case ZX_ERR_INVALID_ARGS: return "ZX_ERR_INVALID_ARGS"; |
| case ZX_ERR_BAD_HANDLE: return "ZX_ERR_BAD_HANDLE"; |
| case ZX_ERR_WRONG_TYPE: return "ZX_ERR_WRONG_TYPE"; |
| case ZX_ERR_BAD_SYSCALL: return "ZX_ERR_BAD_SYSCALL"; |
| case ZX_ERR_OUT_OF_RANGE: return "ZX_ERR_OUT_OF_RANGE"; |
| case ZX_ERR_BUFFER_TOO_SMALL: return "ZX_ERR_BUFFER_TOO_SMALL"; |
| case ZX_ERR_BAD_STATE: return "ZX_ERR_BAD_STATE"; |
| case ZX_ERR_TIMED_OUT: return "ZX_ERR_TIMED_OUT"; |
| case ZX_ERR_SHOULD_WAIT: return "ZX_ERR_SHOULD_WAIT"; |
| case ZX_ERR_CANCELED: return "ZX_ERR_CANCELED"; |
| case ZX_ERR_PEER_CLOSED: return "ZX_ERR_PEER_CLOSED"; |
| case ZX_ERR_NOT_FOUND: return "ZX_ERR_NOT_FOUND"; |
| case ZX_ERR_ALREADY_EXISTS: return "ZX_ERR_ALREADY_EXISTS"; |
| case ZX_ERR_ALREADY_BOUND: return "ZX_ERR_ALREADY_BOUND"; |
| case ZX_ERR_UNAVAILABLE: return "ZX_ERR_UNAVAILABLE"; |
| case ZX_ERR_ACCESS_DENIED: return "ZX_ERR_ACCESS_DENIED"; |
| case ZX_ERR_IO: return "ZX_ERR_IO"; |
| case ZX_ERR_IO_REFUSED: return "ZX_ERR_IO_REFUSED"; |
| case ZX_ERR_IO_DATA_INTEGRITY: return "ZX_ERR_IO_DATA_INTEGRITY"; |
| case ZX_ERR_IO_DATA_LOSS: return "ZX_ERR_IO_DATA_LOSS"; |
| case ZX_ERR_IO_NOT_PRESENT: return "ZX_ERR_IO_NOT_PRESENT"; |
| case ZX_ERR_IO_OVERRUN: return "ZX_ERR_IO_OVERRUN"; |
| case ZX_ERR_IO_MISSED_DEADLINE: return "ZX_ERR_IO_MISSED_DEADLINE"; |
| case ZX_ERR_IO_INVALID: return "ZX_ERR_IO_INVALID"; |
| case ZX_ERR_BAD_PATH: return "ZX_ERR_BAD_PATH"; |
| case ZX_ERR_NOT_DIR: return "ZX_ERR_NOT_DIR"; |
| case ZX_ERR_NOT_FILE: return "ZX_ERR_NOT_FILE"; |
| case ZX_ERR_FILE_BIG: return "ZX_ERR_FILE_BIG"; |
| case ZX_ERR_NO_SPACE: return "ZX_ERR_NO_SPACE"; |
| case ZX_ERR_NOT_EMPTY: return "ZX_ERR_NOT_EMPTY"; |
| case ZX_ERR_STOP: return "ZX_ERR_STOP"; |
| case ZX_ERR_NEXT: return "ZX_ERR_NEXT"; |
| case ZX_ERR_ASYNC: return "ZX_ERR_ASYNC"; |
| case ZX_ERR_PROTOCOL_NOT_SUPPORTED: return "ZX_ERR_PROTOCOL_NOT_SUPPORTED"; |
| case ZX_ERR_ADDRESS_UNREACHABLE: return "ZX_ERR_ADDRESS_UNREACHABLE"; |
| case ZX_ERR_ADDRESS_IN_USE: return "ZX_ERR_ADDRESS_IN_USE"; |
| case ZX_ERR_NOT_CONNECTED: return "ZX_ERR_NOT_CONNECTED"; |
| case ZX_ERR_CONNECTION_REFUSED: return "ZX_ERR_CONNECTION_REFUSED"; |
| case ZX_ERR_CONNECTION_RESET: return "ZX_ERR_CONNECTION_RESET"; |
| case ZX_ERR_CONNECTION_ABORTED: return "ZX_ERR_CONNECTION_ABORTED"; |
| default: return "(UNKNOWN)"; |
| |
| // TODO(mcgrathr): Having this extra case here (a value far away from |
| // the other values) forces LLVM to disable its switch->table-lookup |
| // optimization. That optimization produces a table of pointers in |
| // rodata, which is not PIC-friendly (requires a dynamic reloc for each |
| // element) and so makes the vDSO build bomb out at link time. Some |
| // day we'll teach LLVM either to disable this optimization in PIC mode |
| // when it would result in dynamic relocs, or (ideally) to generate a |
| // PIC-friendly lookup table like it does for jump tables. |
| case 99999: return "(UNKNOWN)"; |
| } |
| } |
| |
| VDSO_INTERFACE_FUNCTION(zx_status_get_string); |
| |
| // Generated with: |
| #if 0 |
| grep '#define' system/public/zircon/errors.h | |
| grep -v ZX_OK | |
| grep -v _ERRORS_H_ | |
| sed 's/.*ZX_ERR_/ZX_ERR_/g' | sed 's/\s.*//g' | |
| awk '{print "case "$1": return \""$1"\";";}' |
| #endif |