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

#pragma once

// Zircon statuses are signed 32 bit integers. The space of values is
// divided as follows:
// - The zero value is for the OK status.
// - Negative values are defined by the system, in this file.
// - Positive values are reserved for protocol-specific error values,
//   and will never be defined by the system.

#define ZX_OK (0)

// ======= Internal failures =======
// ZX_ERR_INTERNAL: The system encountered an otherwise unspecified error
// while performing the operation.
#define ZX_ERR_INTERNAL (-1)

// ZX_ERR_NOT_SUPPORTED: The operation is not implemented, supported,
// or enabled.
#define ZX_ERR_NOT_SUPPORTED (-2)

// ZX_ERR_NO_RESOURCES: The system was not able to allocate some resource
// needed for the operation.
#define ZX_ERR_NO_RESOURCES (-3)

// ZX_ERR_NO_MEMORY: The system was not able to allocate memory needed
// for the operation.
#define ZX_ERR_NO_MEMORY (-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.
#define ZX_ERR_INTERNAL_INTR_RETRY (-6)

// ======= Parameter errors =======
// ZX_ERR_INVALID_ARGS: an argument is invalid, ex. null pointer
#define ZX_ERR_INVALID_ARGS (-10)

// ZX_ERR_BAD_HANDLE: A specified handle value does not refer to a handle.
#define ZX_ERR_BAD_HANDLE (-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.
#define ZX_ERR_WRONG_TYPE (-12)

// ZX_ERR_BAD_SYSCALL: The specified syscall number is invalid.
#define ZX_ERR_BAD_SYSCALL (-13)

// ZX_ERR_OUT_OF_RANGE: An argument is outside the valid range for this
// operation.
#define ZX_ERR_OUT_OF_RANGE (-14)

// ZX_ERR_BUFFER_TOO_SMALL: A caller provided buffer is too small for
// this operation.
#define ZX_ERR_BUFFER_TOO_SMALL (-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
#define ZX_ERR_BAD_STATE (-20)

// ZX_ERR_TIMED_OUT: The time limit for the operation elapsed before
// the operation completed.
#define ZX_ERR_TIMED_OUT (-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.
#define ZX_ERR_SHOULD_WAIT (-22)

// ZX_ERR_CANCELED: The in-progress operation (e.g. a wait) has been
// canceled.
#define ZX_ERR_CANCELED (-23)

// ZX_ERR_PEER_CLOSED: The operation failed because the remote end of the
// subject of the operation was closed.
#define ZX_ERR_PEER_CLOSED (-24)

// ZX_ERR_NOT_FOUND: The requested entity is not found.
#define ZX_ERR_NOT_FOUND (-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.
#define ZX_ERR_ALREADY_EXISTS (-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.
#define ZX_ERR_ALREADY_BOUND (-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.
#define ZX_ERR_UNAVAILABLE (-28)


// ======= Permission check errors =======
// ZX_ERR_ACCESS_DENIED: The caller did not have permission to perform
// the specified operation.
#define ZX_ERR_ACCESS_DENIED (-30)

// ======= Input-output errors =======
// ZX_ERR_IO: Otherwise unspecified error occurred during I/O.
#define ZX_ERR_IO (-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.
#define ZX_ERR_IO_REFUSED (-41)

// ZX_ERR_IO_DATA_INTEGRITY: The data in the operation failed an integrity
// check and is possibly corrupted.
// Example: CRC or Parity error.
#define ZX_ERR_IO_DATA_INTEGRITY (-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.
#define ZX_ERR_IO_DATA_LOSS (-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)
#define ZX_ERR_IO_NOT_PRESENT (-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.
#define ZX_ERR_IO_OVERRUN (-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.
#define ZX_ERR_IO_MISSED_DEADLINE (-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
#define ZX_ERR_IO_INVALID (-47)

// ======== Filesystem Errors ========
// ZX_ERR_BAD_PATH: Path name is too long.
#define ZX_ERR_BAD_PATH (-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.
#define ZX_ERR_NOT_DIR (-51)

// ZX_ERR_NOT_FILE: Object is not a regular file.
#define ZX_ERR_NOT_FILE (-52)

// ZX_ERR_FILE_BIG: This operation would cause a file to exceed a
// filesystem-specific size limit
#define ZX_ERR_FILE_BIG (-53)

// ZX_ERR_NO_SPACE: Filesystem or device space is exhausted.
#define ZX_ERR_NO_SPACE (-54)

// ZX_ERR_NOT_EMPTY: Directory is not empty.
#define ZX_ERR_NOT_EMPTY (-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."
#define ZX_ERR_STOP (-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.
#define ZX_ERR_NEXT (-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.
#define ZX_ERR_ASYNC (-62)

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

// ZX_ERR_PROTOCOL_NOT_SUPPORTED: Specified protocol is not
// supported.
#define ZX_ERR_PROTOCOL_NOT_SUPPORTED (-70)

// ZX_ERR_ADDRESS_UNREACHABLE: Host is unreachable.
#define ZX_ERR_ADDRESS_UNREACHABLE (-71)

// ZX_ERR_ADDRESS_IN_USE: Address is being used by someone else.
#define ZX_ERR_ADDRESS_IN_USE (-72)

// ZX_ERR_NOT_CONNECTED: Socket is not connected.
#define ZX_ERR_NOT_CONNECTED (-73)

// ZX_ERR_CONNECTION_REFUSED: Remote peer rejected the connection.
#define ZX_ERR_CONNECTION_REFUSED (-74)

// ZX_ERR_CONNECTION_RESET: Connection was reset.
#define ZX_ERR_CONNECTION_RESET (-75)

// ZX_ERR_CONNECTION_ABORTED: Connection was aborted.
#define ZX_ERR_CONNECTION_ABORTED (-76)
