/** * Copyright (c) 2023-2024 Marcin Niestroj * * SPDX-License-Identifier: Apache-2.0 */ #include "nsos_errno.h" #ifndef ARRAY_SIZE #define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) #endif struct nsos_mid_errno_map { /** Zephyr/host error code */ int err; /** NSOS middleground error code */ int mid_err; }; #define ERR(_name) \ { _name, NSOS_MID_ ## _name } static const struct nsos_mid_errno_map map[] = { ERR(EPERM), ERR(ENOENT), ERR(ESRCH), ERR(EINTR), ERR(EIO), ERR(ENXIO), ERR(E2BIG), ERR(ENOEXEC), ERR(EBADF), ERR(ECHILD), ERR(EAGAIN), ERR(ENOMEM), ERR(EACCES), ERR(EFAULT), ERR(ENOTBLK), ERR(EBUSY), ERR(EEXIST), ERR(EXDEV), ERR(ENODEV), ERR(ENOTDIR), ERR(EISDIR), ERR(EINVAL), ERR(ENFILE), ERR(EMFILE), ERR(ENOTTY), ERR(ETXTBSY), ERR(EFBIG), ERR(ENOSPC), ERR(ESPIPE), ERR(EROFS), ERR(EMLINK), ERR(EPIPE), ERR(EDOM), ERR(ERANGE), ERR(ENOMSG), ERR(EDEADLK), ERR(ENOLCK), ERR(ENOSTR), ERR(ENODATA), ERR(ETIME), ERR(ENOSR), ERR(EPROTO), ERR(EBADMSG), ERR(ENOSYS), ERR(ENOTEMPTY), ERR(ENAMETOOLONG), ERR(ELOOP), ERR(EOPNOTSUPP), ERR(EPFNOSUPPORT), ERR(ECONNRESET), ERR(ENOBUFS), ERR(EAFNOSUPPORT), ERR(EPROTOTYPE), ERR(ENOTSOCK), ERR(ENOPROTOOPT), ERR(ESHUTDOWN), ERR(ECONNREFUSED), ERR(EADDRINUSE), ERR(ECONNABORTED), ERR(ENETUNREACH), ERR(ENETDOWN), ERR(ETIMEDOUT), ERR(EHOSTDOWN), ERR(EHOSTUNREACH), ERR(EINPROGRESS), ERR(EALREADY), ERR(EDESTADDRREQ), ERR(EMSGSIZE), ERR(EPROTONOSUPPORT), ERR(ESOCKTNOSUPPORT), ERR(EADDRNOTAVAIL), ERR(ENETRESET), ERR(EISCONN), ERR(ENOTCONN), ERR(ETOOMANYREFS), ERR(ENOTSUP), ERR(EILSEQ), ERR(EOVERFLOW), ERR(ECANCELED), }; int errno_to_nsos_mid(int err) { for (int i = 0; i < ARRAY_SIZE(map); i++) { if (map[i].err == err) { return map[i].mid_err; } } return err; } int errno_from_nsos_mid(int err) { for (int i = 0; i < ARRAY_SIZE(map); i++) { if (map[i].mid_err == err) { return map[i].err; } } return err; }