mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-03 03:32:37 +00:00
303 lines
14 KiB
Odin
303 lines
14 KiB
Odin
#+build haiku
|
|
package sys_haiku
|
|
|
|
import "core:sys/posix"
|
|
|
|
foreign import libroot "system:c"
|
|
|
|
USE_POSITIVE_POSIX_ERRORS :: posix._HAIKU_USE_POSITIVE_POSIX_ERRORS
|
|
POSIX_ERROR_FACTOR :: posix._POSIX_ERROR_FACTOR
|
|
|
|
// Error baselines
|
|
GENERAL_ERROR_BASE :: min(i32)
|
|
OS_ERROR_BASE :: GENERAL_ERROR_BASE + 0x1000
|
|
APP_ERROR_BASE :: GENERAL_ERROR_BASE + 0x2000
|
|
INTERFACE_ERROR_BASE :: GENERAL_ERROR_BASE + 0x3000
|
|
MEDIA_ERROR_BASE :: GENERAL_ERROR_BASE + 0x4000
|
|
TRANSLATION_ERROR_BASE :: GENERAL_ERROR_BASE + 0x4800
|
|
MIDI_ERROR_BASE :: GENERAL_ERROR_BASE + 0x5000
|
|
STORAGE_ERROR_BASE :: GENERAL_ERROR_BASE + 0x6000
|
|
POSIX_ERROR_BASE :: GENERAL_ERROR_BASE + 0x7000
|
|
MAIL_ERROR_BASE :: GENERAL_ERROR_BASE + 0x8000
|
|
PRINT_ERROR_BASE :: GENERAL_ERROR_BASE + 0x9000
|
|
DEVICE_ERROR_BASE :: GENERAL_ERROR_BASE + 0xA000
|
|
|
|
// Developer-defined errors start at (ERRORS_END+1)
|
|
ERRORS_END :: GENERAL_ERROR_BASE + 0xFFFF
|
|
|
|
Errno :: enum i32 {
|
|
// General Errors
|
|
NO_MEMORY = GENERAL_ERROR_BASE + 0,
|
|
IO_ERROR = GENERAL_ERROR_BASE + 1,
|
|
PERMISSION_DENIED = GENERAL_ERROR_BASE + 2,
|
|
BAD_INDEX = GENERAL_ERROR_BASE + 3,
|
|
BAD_TYPE = GENERAL_ERROR_BASE + 4,
|
|
BAD_VALUE = GENERAL_ERROR_BASE + 5,
|
|
MISMATCHED_VALUES = GENERAL_ERROR_BASE + 6,
|
|
NAME_NOT_FOUND = GENERAL_ERROR_BASE + 7,
|
|
NAME_IN_USE = GENERAL_ERROR_BASE + 8,
|
|
TIMED_OUT = GENERAL_ERROR_BASE + 9,
|
|
INTERRUPTED = GENERAL_ERROR_BASE + 10,
|
|
WOULD_BLOCK = GENERAL_ERROR_BASE + 11,
|
|
CANCELED = GENERAL_ERROR_BASE + 12,
|
|
NO_INIT = GENERAL_ERROR_BASE + 13,
|
|
NOT_INITIALIZED = GENERAL_ERROR_BASE + 13,
|
|
BUSY = GENERAL_ERROR_BASE + 14,
|
|
NOT_ALLOWED = GENERAL_ERROR_BASE + 15,
|
|
BAD_DATA = GENERAL_ERROR_BASE + 16,
|
|
DONT_DO_THAT = GENERAL_ERROR_BASE + 17,
|
|
|
|
ERROR = -1,
|
|
OK = 0,
|
|
NO_ERROR = 0,
|
|
|
|
// Kernel Kit Errors
|
|
BAD_SEM_ID = OS_ERROR_BASE + 0,
|
|
NO_MORE_SEMS = OS_ERROR_BASE + 1,
|
|
BAD_THREAD_ID = OS_ERROR_BASE + 0x100,
|
|
NO_MORE_THREADS = OS_ERROR_BASE + 0x101,
|
|
BAD_THREAD_STATE = OS_ERROR_BASE + 0x102,
|
|
BAD_TEAM_ID = OS_ERROR_BASE + 0x103,
|
|
NO_MORE_TEAMS = OS_ERROR_BASE + 0x104,
|
|
BAD_PORT_ID = OS_ERROR_BASE + 0x200,
|
|
NO_MORE_PORTS = OS_ERROR_BASE + 0x201,
|
|
BAD_IMAGE_ID = OS_ERROR_BASE + 0x300,
|
|
BAD_ADDRESS = OS_ERROR_BASE + 0x301,
|
|
NOT_AN_EXECUTABLE = OS_ERROR_BASE + 0x302,
|
|
MISSING_LIBRARY = OS_ERROR_BASE + 0x303,
|
|
MISSING_SYMBOL = OS_ERROR_BASE + 0x304,
|
|
UNKNOWN_EXECUTABLE = OS_ERROR_BASE + 0x305,
|
|
LEGACY_EXECUTABLE = OS_ERROR_BASE + 0x306,
|
|
|
|
DEBUGGER_ALREADY_INSTALLED = OS_ERROR_BASE + 0x400,
|
|
|
|
// Application Kit Errors
|
|
BAD_REPLY = APP_ERROR_BASE + 0,
|
|
DUPLICATE_REPLY = APP_ERROR_BASE + 1,
|
|
MESSAGE_TO_SELF = APP_ERROR_BASE + 2,
|
|
BAD_HANDLER = APP_ERROR_BASE + 3,
|
|
ALREADY_RUNNING = APP_ERROR_BASE + 4,
|
|
LAUNCH_FAILED = APP_ERROR_BASE + 5,
|
|
AMBIGUOUS_APP_LAUNCH = APP_ERROR_BASE + 6,
|
|
UNKNOWN_MIME_TYPE = APP_ERROR_BASE + 7,
|
|
BAD_SCRIPT_SYNTAX = APP_ERROR_BASE + 8,
|
|
LAUNCH_FAILED_NO_RESOLVE_LINK = APP_ERROR_BASE + 9,
|
|
LAUNCH_FAILED_EXECUTABLE = APP_ERROR_BASE + 10,
|
|
LAUNCH_FAILED_APP_NOT_FOUND = APP_ERROR_BASE + 11,
|
|
LAUNCH_FAILED_APP_IN_TRASH = APP_ERROR_BASE + 12,
|
|
LAUNCH_FAILED_NO_PREFERRED_APP = APP_ERROR_BASE + 13,
|
|
LAUNCH_FAILED_FILES_APP_NOT_FOUND = APP_ERROR_BASE + 14,
|
|
BAD_MIME_SNIFFER_RULE = APP_ERROR_BASE + 15,
|
|
NOT_A_MESSAGE = APP_ERROR_BASE + 16,
|
|
SHUTDOWN_CANCELLED = APP_ERROR_BASE + 17,
|
|
SHUTTING_DOWN = APP_ERROR_BASE + 18,
|
|
|
|
// Storage Kit/File System Errors
|
|
FILE_ERROR = STORAGE_ERROR_BASE + 0,
|
|
// 1 was B_FILE_NOT_FOUND (deprecated)
|
|
FILE_EXISTS = STORAGE_ERROR_BASE + 2,
|
|
ENTRY_NOT_FOUND = STORAGE_ERROR_BASE + 3,
|
|
NAME_TOO_LONG = STORAGE_ERROR_BASE + 4,
|
|
NOT_A_DIRECTORY = STORAGE_ERROR_BASE + 5,
|
|
DIRECTORY_NOT_EMPTY = STORAGE_ERROR_BASE + 6,
|
|
DEVICE_FULL = STORAGE_ERROR_BASE + 7,
|
|
READ_ONLY_DEVICE = STORAGE_ERROR_BASE + 8,
|
|
IS_A_DIRECTORY = STORAGE_ERROR_BASE + 9,
|
|
NO_MORE_FDS = STORAGE_ERROR_BASE + 10,
|
|
CROSS_DEVICE_LINK = STORAGE_ERROR_BASE + 11,
|
|
LINK_LIMIT = STORAGE_ERROR_BASE + 12,
|
|
BUSTED_PIPE = STORAGE_ERROR_BASE + 13,
|
|
UNSUPPORTED = STORAGE_ERROR_BASE + 14,
|
|
PARTITION_TOO_SMALL = STORAGE_ERROR_BASE + 15,
|
|
PARTIAL_READ = STORAGE_ERROR_BASE + 16,
|
|
PARTIAL_WRITE = STORAGE_ERROR_BASE + 17,
|
|
|
|
EIO = posix.EIO,
|
|
EACCES = posix.EACCES,
|
|
EINVAL = posix.EINVAL,
|
|
ETIMEDOUT = posix.ETIMEDOUT,
|
|
EINTR = posix.EINTR,
|
|
EAGAIN = posix.EAGAIN,
|
|
EWOULDBLOCK = posix.EWOULDBLOCK,
|
|
EBUSY = posix.EBUSY,
|
|
EPERM = posix.EPERM,
|
|
EFAULT = posix.EFAULT,
|
|
ENOEXEC = posix.ENOEXEC,
|
|
EBADF = posix.EBADF,
|
|
EEXIST = posix.EEXIST,
|
|
ENOENT = posix.ENOENT,
|
|
ENAMETOOLONG = posix.ENAMETOOLONG,
|
|
ENOTDIR = posix.ENOTDIR,
|
|
ENOTEMPTY = posix.ENOTEMPTY,
|
|
ENOSPC = posix.ENOSPC,
|
|
EROFS = posix.EROFS,
|
|
EISDIR = posix.EISDIR,
|
|
EMFILE = posix.EMFILE,
|
|
EXDEV = posix.EXDEV,
|
|
ELOOP = posix.ELOOP,
|
|
EPIPE = posix.EPIPE,
|
|
ENOMEM = posix.ENOMEM,
|
|
E2BIG = posix.E2BIG,
|
|
ECHILD = posix.ECHILD,
|
|
EDEADLK = posix.EDEADLK,
|
|
EFBIG = posix.EFBIG,
|
|
EMLINK = posix.EMLINK,
|
|
ENFILE = posix.ENFILE,
|
|
ENODEV = posix.ENODEV,
|
|
ENOLCK = posix.ENOLCK,
|
|
ENOSYS = posix.ENOSYS,
|
|
ENOTTY = posix.ENOTTY,
|
|
ENXIO = posix.ENXIO,
|
|
ESPIPE = posix.ESPIPE,
|
|
ESRCH = posix.ESRCH,
|
|
EDOM = posix.EDOM,
|
|
ERANGE = posix.ERANGE,
|
|
EPROTOTYPE = posix.EPROTOTYPE,
|
|
EPROTONOSUPPORT = posix.EPROTONOSUPPORT,
|
|
EAFNOSUPPORT = posix.EAFNOSUPPORT,
|
|
EADDRINUSE = posix.EADDRINUSE,
|
|
EADDRNOTAVAIL = posix.EADDRNOTAVAIL,
|
|
ENETDOWN = posix.ENETDOWN,
|
|
ENETUNREACH = posix.ENETUNREACH,
|
|
ENETRESET = posix.ENETRESET,
|
|
ECONNABORTED = posix.ECONNABORTED,
|
|
ECONNRESET = posix.ECONNRESET,
|
|
EISCONN = posix.EISCONN,
|
|
ENOTCONN = posix.ENOTCONN,
|
|
ECONNREFUSED = posix.ECONNREFUSED,
|
|
EHOSTUNREACH = posix.EHOSTUNREACH,
|
|
ENOPROTOOPT = posix.ENOPROTOOPT,
|
|
ENOBUFS = posix.ENOBUFS,
|
|
EINPROGRESS = posix.EINPROGRESS,
|
|
EALREADY = posix.EALREADY,
|
|
EILSEQ = posix.EILSEQ,
|
|
ENOMSG = posix.ENOMSG,
|
|
ESTALE = posix.ESTALE,
|
|
EOVERFLOW = posix.EOVERFLOW,
|
|
EMSGSIZE = posix.EMSGSIZE,
|
|
EOPNOTSUPP = posix.EOPNOTSUPP,
|
|
ENOTSOCK = posix.ENOTSOCK,
|
|
EBADMSG = posix.EBADMSG,
|
|
ECANCELED = posix.ECANCELED,
|
|
EDESTADDRREQ = posix.EDESTADDRREQ,
|
|
EDQUOT = posix.EDQUOT,
|
|
EIDRM = posix.EIDRM,
|
|
EMULTIHOP = posix.EMULTIHOP,
|
|
ENODATA = posix.ENODATA,
|
|
ENOLINK = posix.ENOLINK,
|
|
ENOSR = posix.ENOSR,
|
|
ENOSTR = posix.ENOSTR,
|
|
ENOTSUP = posix.ENOTSUP,
|
|
EPROTO = posix.EPROTO,
|
|
ETIME = posix.ETIME,
|
|
ETXTBSY = posix.ETXTBSY,
|
|
ENOTRECOVERABLE = posix.ENOTRECOVERABLE,
|
|
EOWNERDEAD = posix.EOWNERDEAD,
|
|
|
|
// New error codes that can be mapped to POSIX errors
|
|
TOO_MANY_ARGS = POSIX_ERROR_FACTOR * E2BIG,
|
|
FILE_TOO_LARGE = POSIX_ERROR_FACTOR * EFBIG,
|
|
DEVICE_NOT_FOUND = POSIX_ERROR_FACTOR * ENODEV,
|
|
RESULT_NOT_REPRESENTABLE = POSIX_ERROR_FACTOR * ERANGE,
|
|
BUFFER_OVERFLOW = POSIX_ERROR_FACTOR * EOVERFLOW,
|
|
NOT_SUPPORTED = POSIX_ERROR_FACTOR * EOPNOTSUPP,
|
|
|
|
// Media Kit Errors
|
|
STREAM_NOT_FOUND = MEDIA_ERROR_BASE + 0,
|
|
SERVER_NOT_FOUND = MEDIA_ERROR_BASE + 1,
|
|
RESOURCE_NOT_FOUND = MEDIA_ERROR_BASE + 2,
|
|
RESOURCE_UNAVAILABLE = MEDIA_ERROR_BASE + 3,
|
|
BAD_SUBSCRIBER = MEDIA_ERROR_BASE + 4,
|
|
SUBSCRIBER_NOT_ENTERED = MEDIA_ERROR_BASE + 5,
|
|
BUFFER_NOT_AVAILABLE = MEDIA_ERROR_BASE + 6,
|
|
LAST_BUFFER_ERROR = MEDIA_ERROR_BASE + 7,
|
|
MEDIA_SYSTEM_FAILURE = MEDIA_ERROR_BASE + 100,
|
|
MEDIA_BAD_NODE = MEDIA_ERROR_BASE + 101,
|
|
MEDIA_NODE_BUSY = MEDIA_ERROR_BASE + 102,
|
|
MEDIA_BAD_FORMAT = MEDIA_ERROR_BASE + 103,
|
|
MEDIA_BAD_BUFFER = MEDIA_ERROR_BASE + 104,
|
|
MEDIA_TOO_MANY_NODES = MEDIA_ERROR_BASE + 105,
|
|
MEDIA_TOO_MANY_BUFFERS = MEDIA_ERROR_BASE + 106,
|
|
MEDIA_NODE_ALREADY_EXISTS = MEDIA_ERROR_BASE + 107,
|
|
MEDIA_BUFFER_ALREADY_EXISTS = MEDIA_ERROR_BASE + 108,
|
|
MEDIA_CANNOT_SEEK = MEDIA_ERROR_BASE + 109,
|
|
MEDIA_CANNOT_CHANGE_RUN_MODE = MEDIA_ERROR_BASE + 110,
|
|
MEDIA_APP_ALREADY_REGISTERED = MEDIA_ERROR_BASE + 111,
|
|
MEDIA_APP_NOT_REGISTERED = MEDIA_ERROR_BASE + 112,
|
|
MEDIA_CANNOT_RECLAIM_BUFFERS = MEDIA_ERROR_BASE + 113,
|
|
MEDIA_BUFFERS_NOT_RECLAIMED = MEDIA_ERROR_BASE + 114,
|
|
MEDIA_TIME_SOURCE_STOPPED = MEDIA_ERROR_BASE + 115,
|
|
MEDIA_TIME_SOURCE_BUSY = MEDIA_ERROR_BASE + 116,
|
|
MEDIA_BAD_SOURCE = MEDIA_ERROR_BASE + 117,
|
|
MEDIA_BAD_DESTINATION = MEDIA_ERROR_BASE + 118,
|
|
MEDIA_ALREADY_CONNECTED = MEDIA_ERROR_BASE + 119,
|
|
MEDIA_NOT_CONNECTED = MEDIA_ERROR_BASE + 120,
|
|
MEDIA_BAD_CLIP_FORMAT = MEDIA_ERROR_BASE + 121,
|
|
MEDIA_ADDON_FAILED = MEDIA_ERROR_BASE + 122,
|
|
MEDIA_ADDON_DISABLED = MEDIA_ERROR_BASE + 123,
|
|
MEDIA_CHANGE_IN_PROGRESS = MEDIA_ERROR_BASE + 124,
|
|
MEDIA_STALE_CHANGE_COUNT = MEDIA_ERROR_BASE + 125,
|
|
MEDIA_ADDON_RESTRICTED = MEDIA_ERROR_BASE + 126,
|
|
MEDIA_NO_HANDLER = MEDIA_ERROR_BASE + 127,
|
|
MEDIA_DUPLICATE_FORMAT = MEDIA_ERROR_BASE + 128,
|
|
MEDIA_REALTIME_DISABLED = MEDIA_ERROR_BASE + 129,
|
|
MEDIA_REALTIME_UNAVAILABLE = MEDIA_ERROR_BASE + 130,
|
|
|
|
// Mail Kit Errors
|
|
MAIL_NO_DAEMON = MAIL_ERROR_BASE + 0,
|
|
MAIL_UNKNOWN_USER = MAIL_ERROR_BASE + 1,
|
|
MAIL_WRONG_PASSWORD = MAIL_ERROR_BASE + 2,
|
|
MAIL_UNKNOWN_HOST = MAIL_ERROR_BASE + 3,
|
|
MAIL_ACCESS_ERROR = MAIL_ERROR_BASE + 4,
|
|
MAIL_UNKNOWN_FIELD = MAIL_ERROR_BASE + 5,
|
|
MAIL_NO_RECIPIENT = MAIL_ERROR_BASE + 6,
|
|
MAIL_INVALID_MAIL = MAIL_ERROR_BASE + 7,
|
|
|
|
// Printing Errors
|
|
NO_PRINT_SERVER = PRINT_ERROR_BASE + 0,
|
|
|
|
// Device Kit Errors
|
|
DEV_INVALID_IOCTL = DEVICE_ERROR_BASE + 0,
|
|
DEV_NO_MEMORY = DEVICE_ERROR_BASE + 1,
|
|
DEV_BAD_DRIVE_NUM = DEVICE_ERROR_BASE + 2,
|
|
DEV_NO_MEDIA = DEVICE_ERROR_BASE + 3,
|
|
DEV_UNREADABLE = DEVICE_ERROR_BASE + 4,
|
|
DEV_FORMAT_ERROR = DEVICE_ERROR_BASE + 5,
|
|
DEV_TIMEOUT = DEVICE_ERROR_BASE + 6,
|
|
DEV_RECALIBRATE_ERROR = DEVICE_ERROR_BASE + 7,
|
|
DEV_SEEK_ERROR = DEVICE_ERROR_BASE + 8,
|
|
DEV_ID_ERROR = DEVICE_ERROR_BASE + 9,
|
|
DEV_READ_ERROR = DEVICE_ERROR_BASE + 10,
|
|
DEV_WRITE_ERROR = DEVICE_ERROR_BASE + 11,
|
|
DEV_NOT_READY = DEVICE_ERROR_BASE + 12,
|
|
DEV_MEDIA_CHANGED = DEVICE_ERROR_BASE + 13,
|
|
DEV_MEDIA_CHANGE_REQUESTED = DEVICE_ERROR_BASE + 14,
|
|
DEV_RESOURCE_CONFLICT = DEVICE_ERROR_BASE + 15,
|
|
DEV_CONFIGURATION_ERROR = DEVICE_ERROR_BASE + 16,
|
|
DEV_DISABLED_BY_USER = DEVICE_ERROR_BASE + 17,
|
|
DEV_DOOR_OPEN = DEVICE_ERROR_BASE + 18,
|
|
DEV_INVALID_PIPE = DEVICE_ERROR_BASE + 19,
|
|
DEV_CRC_ERROR = DEVICE_ERROR_BASE + 20,
|
|
DEV_STALLED = DEVICE_ERROR_BASE + 21,
|
|
DEV_BAD_PID = DEVICE_ERROR_BASE + 22,
|
|
DEV_UNEXPECTED_PID = DEVICE_ERROR_BASE + 23,
|
|
DEV_DATA_OVERRUN = DEVICE_ERROR_BASE + 24,
|
|
DEV_DATA_UNDERRUN = DEVICE_ERROR_BASE + 25,
|
|
DEV_FIFO_OVERRUN = DEVICE_ERROR_BASE + 26,
|
|
DEV_FIFO_UNDERRUN = DEVICE_ERROR_BASE + 27,
|
|
DEV_PENDING = DEVICE_ERROR_BASE + 28,
|
|
DEV_MULTIPLE_ERRORS = DEVICE_ERROR_BASE + 29,
|
|
DEV_TOO_LATE = DEVICE_ERROR_BASE + 30,
|
|
|
|
// Translation Kit Errors
|
|
TRANSLATION_BASE_ERROR = TRANSLATION_ERROR_BASE + 0,
|
|
NO_TRANSLATOR = TRANSLATION_ERROR_BASE + 1,
|
|
ILLEGAL_DATA = TRANSLATION_ERROR_BASE + 2,
|
|
}
|
|
|
|
@(default_calling_convention="c")
|
|
foreign libroot {
|
|
_to_positive_error :: proc(error: i32) -> i32 ---
|
|
_to_negative_error :: proc(error: i32) -> i32 ---
|
|
}
|