#ifndef syscall_h #define syscall_h /* Cesar project {{{ * * Copyright (C) 2007 Spidcom * * <<>> * * }}} */ /** * \file syscall.h * \brief Linux System Calls redefinition * \ingroup host * * Redefinition of Linux System Calls only when we don't compile for tests */ #include "ecos/packages/hal/maximus/arch/current/include/hal_syscall.h" #include #include /** flags redefinition */ /* open/fcntl flags */ #define O_RDONLY CYG_HAL_SYS_O_RDONLY #define O_WRONLY CYG_HAL_SYS_O_WRONLY #define O_RDWR CYG_HAL_SYS_O_RDWR #define O_CREAT CYG_HAL_SYS_O_CREAT #define O_EXCL CYG_HAL_SYS_O_EXCL #define O_NOCTTY CYG_HAL_SYS_O_NOCTTY #define O_TRUNC CYG_HAL_SYS_O_TRUNC #define O_APPEND CYG_HAL_SYS_O_APPEND #define O_NONBLOCK CYG_HAL_SYS_O_NONBLOCK #define O_NDELAY CYG_HAL_SYS_O_NDELAY #define O_SYNC CYG_HAL_SYS_O_SYNC #define O_FSYNC CYG_HAL_SYS_O_FSYNC #define O_ASYN CYG_HAL_SYS_O_ASYNC /* open mode flags */ #define S_IRUSR CYG_HAL_SYS_S_IRUSR #define S_IREAD CYG_HAL_SYS_S_IREAD #define S_IWUSR CYG_HAL_SYS_S_IWUSR #define S_IWRITE CYG_HAL_SYS_S_IWRITE #define S_IXUSR CYG_HAL_SYS_S_IXUSR #define S_IEXEC CYG_HAL_SYS_S_IEXEC #define S_IRWXU CYG_HAL_SYS_S_IRWXU #define S_IRWXG CYG_HAL_SYS_S_IRWXG #define S_IRGRP CYG_HAL_SYS_S_IRGRP #define S_IWGRP CYG_HAL_SYS_S_IWGRP #define S_IXGRP CYG_HAL_SYS_S_IXGRP #define S_IRWXO CYG_HAL_SYS_S_IRWXO #define S_IROTH CYG_HAL_SYS_S_IROTH #define S_IWOTH CYG_HAL_SYS_S_IWOTH #define S_IXOTH CYG_HAL_SYS_S_IXOTH /* stat flags */ #define S_IFMT CYG_HAL_SYS_S_IFMT #define S_IFSOCK CYG_HAL_SYS_S_IFSOCK #define S_IFLNK CYG_HAL_SYS_S_IFLNK #define S_IFREG CYG_HAL_SYS_S_IFREG #define S_IFBLK CYG_HAL_SYS_S_IFBLK #define S_IFDIR CYG_HAL_SYS_S_IFDIR #define S_IFCHR CYG_HAL_SYS_S_IFCHR #define S_IFIFO CYG_HAL_SYS_S_IFIFO #define S_ISUID CYG_HAL_SYS_S_ISUID #define S_ISGID CYG_HAL_SYS_S_ISGID #define S_ISVTX CYG_HAL_SYS_S_ISVTX /** structures redefinition */ #define fd_set struct cyg_hal_sys_fd_set #define timeval cyg_hal_sys_timeval /** macros redefinition */ #define FD_ZERO CYG_HAL_SYS_FD_ZERO #define FD_SET CYG_HAL_SYS_FD_SET #define FD_CLR CYG_HAL_SYS_FD_CLR /** functions redefinition */ /*#define system_adapt(function) { \ int result; \ if((result = function(##args)) < 0) \ errno = -result; \ result = -1; \ } \ return result; \ } #define open(args...) system_adapt(cyg_hal_sys_open)*/ static inline int open(const char *pathname, int flags, mode_t mode) { int result; if((result = cyg_hal_sys_open(pathname, flags, mode)) < 0) { errno = -result; result = -1; } return result; } static inline int close(int fd) { int result; if((result = cyg_hal_sys_close(fd)) < 0) { errno = -result; result = -1; } return result; } static inline ssize_t read(int fd, void *buf, size_t count) { int result; if((result = cyg_hal_sys_read(fd, buf, count)) < 0) { errno = -result; result = -1; } return result; } static inline ssize_t write(int fd, const void *buf, size_t count) { int result; if ((result = (ssize_t)cyg_hal_sys_write(fd, buf, count)) < 0) { errno = -result; result = -1; } return result; } static inline int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { int result; if((result = cyg_hal_sys_select(nfds, readfds, writefds, exceptfds, timeout)) < 0) { errno = -result; result = -1; } return result; } static inline int mknod(const char *pathname, mode_t mode, dev_t dev) { int result; if((result = cyg_hal_sys_mknod(pathname, mode, dev)) < 0) { errno = -result; result = -1; } return result; } static inline int unlink(const char *pathname) { int result; if((result = cyg_hal_sys_unlink(pathname)) < 0) { errno = -result; result = -1; } return result; } #define getpid cyg_hal_sys_getpid /*static inline pid_t getpid(void) { int result; if((result = cyg_hal_sys_getpid()) < 0) { errno = -result; result = -1; } return result; }*/ /** socket redefinition */ #define AF_UNIX HOST_AF_UNIX #define PF_UNIX HOST_PF_UNIX #define SOCK_STREAM HOST_SOCK_STREAM #define SOL_SOCKET HOST_SOL_SOCKET #define SO_SNDBUF HOST_SO_SNDBUF #define SO_RCVBUF HOST_SO_RCVBUF #define sockaddr host_sockaddr #define sockaddr_un host_sockaddr_un #define socketcall cyg_hal_sys_socketcall #define socket host_socket #define socketpair host_socketpair #define bind host_bind #define getsockname host_getsockname #define connect host_connect #define getpeername host_getpeername #define send host_send #define recv host_recv #define sendto host_sendto #define recvfrom host_recvfrom #define getsockopt host_getsockopt #define setsockopt host_setsockopt #define listen host_listen #define accept host_accept #define shutdown host_shutdown #endif /* syscall_h */