blob: 9d7a497539cbbea1fbd3bb181b783250205a90fb [file] [log] [blame]
// 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