123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- #+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 ---
- }
|