// 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.

#ifndef SRC_DEVELOPER_DEBUG_SHARED_ZX_STATUS_DEFINITIONS_H_
#define SRC_DEVELOPER_DEBUG_SHARED_ZX_STATUS_DEFINITIONS_H_

#include <stdint.h>

namespace debug {

// This file tracks //zircon/system/public/zircon/errors.h
// That file holds the zx_status_t definitions and it's not bound to change much, so copying it
// should not provide much headaches.
//
// The constant naming convention is an exception and is maintained to be consistent with the naming
// used in zircon.

// As defined in zircon/types.h
using zx_status_t = int32_t;

constexpr zx_status_t kZxOk = 0;

// ======= Internal failures =======
// ZX_ERR_INTERNAL: The system encountered an otherwise unspecified error
// while performing the operation.
constexpr zx_status_t kZxErrInternal = -1;

// ZX_ERR_NOT_SUPPORTED: The operation is not implemented, supported,
// or enabled.
constexpr zx_status_t kZxErrNotSupported = -2;

// ZX_ERR_NO_RESOURCES: The system was not able to allocate some resource
// needed for the operation.
constexpr zx_status_t kZxErrNoResources = -3;

// ZX_ERR_NO_MEMORY: The system was not able to allocate memory needed
// for the operation.
constexpr zx_status_t kZxErrNoMemory = -4;

// -5 used to be ZX_ERR_CALL_FAILED.

// ZX_ERR_INTERNAL_INTR_RETRY: The system call was interrupted, but should be
// retried.  This should not be seen outside of the VDSO.
constexpr zx_status_t kZxErrInternalIntrRetry = -6;

// ======= Parameter errors =======
// ZX_ERR_INVALID_ARGS: an argument is invalid, ex. null pointer
constexpr zx_status_t kZxErrInvalidArgs = -10;

// ZX_ERR_BAD_HANDLE: A specified handle value does not refer to a handle.
constexpr zx_status_t kZxErrBadHandle = -11;

// ZX_ERR_WRONG_TYPE: The subject of the operation is the wrong type to
// perform the operation.
// Example: Attempting a message_read on a thread handle.
constexpr zx_status_t kZxErrWrongType = -12;

// ZX_ERR_BAD_SYSCALL: The specified syscall number is invalid.
constexpr zx_status_t kZxErrBadSyscall = -13;

// ZX_ERR_OUT_OF_RANGE: An argument is outside the valid range for this
// operation.
constexpr zx_status_t kZxErrOutOfRange = -14;

// ZX_ERR_BUFFER_TOO_SMALL: A caller provided buffer is too small for
// this operation.
constexpr zx_status_t kZxErrBufferTooSmall = -15;

// ======= Precondition or state errors =======
// ZX_ERR_BAD_STATE: operation failed because the current state of the
// object does not allow it, or a precondition of the operation is
// not satisfied
constexpr zx_status_t kZxErrBadState = -20;

// ZX_ERR_TIMED_OUT: The time limit for the operation elapsed before
// the operation completed.
constexpr zx_status_t kZxErrTimedOut = -21;

// ZX_ERR_SHOULD_WAIT: The operation cannot be performed currently but
// potentially could succeed if the caller waits for a prerequisite
// to be satisfied, for example waiting for a handle to be readable
// or writable.
// Example: Attempting to read from a channel that has no
// messages waiting but has an open remote will return ZX_ERR_SHOULD_WAIT.
// Attempting to read from a channel that has no messages waiting
// and has a closed remote end will return ZX_ERR_PEER_CLOSED.
constexpr zx_status_t kZxErrShouldWait = -22;

// ZX_ERR_CANCELED: The in-progress operation (e.g. a wait) has been
// canceled.
constexpr zx_status_t kZxErrCanceled = -23;

// ZX_ERR_PEER_CLOSED: The operation failed because the remote end of the
// subject of the operation was closed.
constexpr zx_status_t kZxErrPeerClosed = -24;

// ZX_ERR_NOT_FOUND: The requested entity is not found.
constexpr zx_status_t kZxErrNotFound = -25;

// ZX_ERR_ALREADY_EXISTS: An object with the specified identifier
// already exists.
// Example: Attempting to create a file when a file already exists
// with that name.
constexpr zx_status_t kZxErrAlreadyExists = -26;

// ZX_ERR_ALREADY_BOUND: The operation failed because the named entity
// is already owned or controlled by another entity. The operation
// could succeed later if the current owner releases the entity.
constexpr zx_status_t kZxErrAlreadyBound = -27;

// ZX_ERR_UNAVAILABLE: The subject of the operation is currently unable
// to perform the operation.
// Note: This is used when there's no direct way for the caller to
// observe when the subject will be able to perform the operation
// and should thus retry.
constexpr zx_status_t kZxErrUnavailable = -28;

// ======= Permission check errors =======
// ZX_ERR_ACCESS_DENIED: The caller did not have permission to perform
// the specified operation.
constexpr zx_status_t kZxErrAccessDenied = -30;

// ======= Input-output errors =======
// ZX_ERR_IO: Otherwise unspecified error occurred during I/O.
constexpr zx_status_t kZxErrIO = -40;

// ZX_ERR_REFUSED: The entity the I/O operation is being performed on
// rejected the operation.
// Example: an I2C device NAK'ing a transaction or a disk controller
// rejecting an invalid command, or a stalled USB endpoint.
constexpr zx_status_t kZxErrIoRefused = -41;

// ZX_ERR_IO_DATA_INTEGRITY: The data in the operation failed an integrity
// check and is possibly corrupted.
// Example: CRC or Parity error.
constexpr zx_status_t kZxErrIoDataIntegrity = -42;

// ZX_ERR_IO_DATA_LOSS: The data in the operation is currently unavailable
// and may be permanently lost.
// Example: A disk block is irrecoverably damaged.
constexpr zx_status_t kZxErrIoDataLoss = -43;

// ZX_ERR_IO_NOT_PRESENT: The device is no longer available (has been
// unplugged from the system, powered down, or the driver has been
// unloaded)
constexpr zx_status_t kZxErrIoNotPresent = -44;

// ZX_ERR_IO_OVERRUN: More data was received from the device than expected.
// Example: a USB "babble" error due to a device sending more data than
// the host queued to receive.
constexpr zx_status_t kZxErrIoOverrun = -45;

// ZX_ERR_IO_MISSED_DEADLINE: An operation did not complete within the required
// timeframe. Example: A USB isochronous transfer that failed to complete due to
// an overrun or underrun.
constexpr zx_status_t kZxErrIoMissedDeadline = -46;

// ZX_ERR_IO_INVALID: The data in the operation is invalid parameter or is out
// of range. Example: A USB transfer that failed to complete with TRB Error
constexpr zx_status_t kZxErrIoInvalid = -47;

// ======== Filesystem Errors ========
// ZX_ERR_BAD_PATH: Path name is too long.
constexpr zx_status_t kZxErrBadPath = -50;

// ZX_ERR_NOT_DIR: Object is not a directory or does not support
// directory operations.
// Example: Attempted to open a file as a directory or
// attempted to do directory operations on a file.
constexpr zx_status_t kZxErrNotDir = -51;

// ZX_ERR_NOT_FILE: Object is not a regular file.
constexpr zx_status_t kZxErrNotFile = -52;

// ZX_ERR_FILE_BIG: This operation would cause a file to exceed a
// filesystem-specific size limit
constexpr zx_status_t kZxErrFileBig = -53;

// ZX_ERR_NO_SPACE: Filesystem or device space is exhausted.
constexpr zx_status_t kZxErrNoSpace = -54;

// ZX_ERR_NOT_EMPTY: Directory is not empty.
constexpr zx_status_t kZxErrNotEmpty = -55;

// ======== Flow Control ========
// These are not errors, as such, and will never be returned
// by a syscall or public API.  They exist to allow callbacks
// to request changes in operation.
//
// ZX_ERR_STOP: Do not call again.
// Example: A notification callback will be called on every
// event until it returns something other than ZX_OK.
// This status allows differentiation between "stop due to
// an error" and "stop because the work is done."
constexpr zx_status_t kZxErrStop = -60;

// ZX_ERR_NEXT: Advance to the next item.
// Example: A notification callback will use this response
// to indicate it did not "consume" an item passed to it,
// but by choice, not due to an error condition.
constexpr zx_status_t kZxErrNext = -61;

// ZX_ERR_ASYNC: Ownership of the item has moved to an asynchronous worker.
//
// Unlike ZX_ERR_STOP, which implies that iteration on an object
// should stop, and ZX_ERR_NEXT, which implies that iteration
// should continue to the next item, ZX_ERR_ASYNC implies
// that an asynchronous worker is responsible for continuing iteration.
//
// Example: A notification callback will be called on every
// event, but one event needs to handle some work asynchronously
// before it can continue. ZX_ERR_ASYNC implies the worker is
// responsible for resuming iteration once its work has completed.
constexpr zx_status_t kZxErrAsync = -62;

// ======== Network-related errors ========

// ZX_ERR_PROTOCOL_NOT_SUPPORTED: Specified protocol is not
// supported.
constexpr zx_status_t kZxErrProtocolNotSupported = -70;

// ZX_ERR_ADDRESS_UNREACHABLE: Host is unreachable.
constexpr zx_status_t kZxErrAddressUnreachable = -71;

// ZX_ERR_ADDRESS_IN_USE: Address is being used by someone else.
constexpr zx_status_t kZxErrAddressInUse = -72;

// ZX_ERR_NOT_CONNECTED: Socket is not connected.
constexpr zx_status_t kZxErrNotConnected = -73;

// ZX_ERR_CONNECTION_REFUSED: Remote peer rejected the connection.
constexpr zx_status_t kZxErrConnectionRefused = -74;

// ZX_ERR_CONNECTION_RESET: Connection was reset.
constexpr zx_status_t kZxErrConnectionReset = -75;

// ZX_ERR_CONNECTION_ABORTED: Connection was aborted.
constexpr zx_status_t kZxErrConnectionAborted = -76;

}  // namespace debug

#endif  // SRC_DEVELOPER_DEBUG_SHARED_ZX_STATUS_DEFINITIONS_H_
