summaryrefslogtreecommitdiff
path: root/cesar/host/syscall.h
blob: a212e66cda4eb03d3dce4e9ea10c24769515085d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#ifndef syscall_h
#define syscall_h
/* Cesar project {{{
 *
 * Copyright (C) 2007 Spidcom
 *
 * <<<Licence>>>
 *
 * }}} */
/**
 * \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 <sys/types.h>
#include <errno.h>

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