source: asp3_tinet_ecnl_rx/trunk/ntshell/src/syscall.c@ 359

Last change on this file since 359 was 359, checked in by coas-nagasima, 6 years ago

SDカードの挿抜を検知するよう更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 10.1 KB
Line 
1/*
2 * TOPPERS ECHONET Lite Communication Middleware
3 *
4 * Copyright (C) 2018 Cores Co., Ltd. Japan
5 *
6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
11 * スコード中に含まれていること.
12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
15 * の無保証規定を掲載すること.
16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
18 * と.
19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
20 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
22 * 報告すること.
23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
27 * 免責すること.
28 *
29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
33 * の責任を負わない.
34 *
35 * @(#) $Id$
36 */
37#include "bits/syscall.h"
38#include "shellif.h"
39#include <t_syslog.h>
40
41void *thread_area;
42void *tid_address;
43
44long no_implement(const char *text)
45{
46 syslog(LOG_ERROR, text);
47 DebugBreak();
48 return -ENOSYS;
49}
50
51long __syscall_nr(long n, ...)
52{
53 long ret = -ENOSYS;
54 va_list ap;
55
56 va_start(ap, n);
57
58 switch (n) {
59 case __NR_setresgid:
60 no_implement("setresgid");
61 break;
62 case __NR_setresuid:
63 no_implement("setresuid");
64 break;
65 case __NR_setgid:
66 no_implement("setgid");
67 break;
68 case __NR_setregid:
69 no_implement("setregid");
70 break;
71 case __NR_setreuid:
72 no_implement("setreuid");
73 break;
74 case __NR_setuid:
75 no_implement("setuid");
76 break;
77 default:
78 no_implement("syscall");
79 break;
80 }
81
82 va_end(ap);
83
84 return ret;
85}
86
87long SYS__llseek(long a, long b, long c, long d, long e) {
88 return shell_llseek((int)a, ((off_t)b << 32) | (off_t)c, (off_t *)d, (int)e);
89}
90
91long SYS__newselect(long a, long b, long c, long d, long e) {
92 return shell_select((int)a, (fd_set *)b, (fd_set *)c, (fd_set *)d, (struct timeval *)e);
93}
94
95long SYS_accept(long a, long b, long c) {
96 return shell_accept((int)a, (struct sockaddr *)b, (socklen_t *)c);
97}
98
99long SYS_access(long a, long b) {
100 return shell_access((const char *)a, (int)b);
101}
102
103long SYS_bind(long a, long b, long c) {
104 return shell_bind((int)a, (const struct sockaddr *)b, (socklen_t)c);
105}
106
107long SYS_brk(long a) {
108 return (long)shell_brk((void *)a);
109}
110
111long SYS_chdir(long a) {
112 return shell_chdir((const char *)a);
113}
114
115long SYS_chmod(long a, long b) {
116 return shell_chmod((const char *)a, (mode_t)b);
117}
118
119long SYS_chroot(long a) {
120 return shell_chroot((const char *)a);
121}
122
123long SYS_clock_getres(long a, long b) {
124 return shell_clock_getres((clockid_t)a, (struct timespec *)b);
125}
126
127long SYS_clock_gettime(long a, long b) {
128 return shell_clock_gettime((clockid_t)a, (struct timespec *)b);
129}
130
131long SYS_clock_settime(long a, long b) {
132 return shell_clock_settime((clockid_t)a, (const struct timespec *)b);
133}
134
135long SYS_close(long a) {
136 return shell_close((int)a);
137}
138
139long SYS_connect(long a, long b, long c) {
140 return shell_connect((int)a, (const struct sockaddr *)b, (socklen_t)c);
141}
142
143long SYS_exit(long a) {
144 shell_exit((int)a);
145 return 0;
146}
147
148long SYS_exit_group(long a) {
149 shell_exit_group((int)a);
150 return 0;
151}
152
153long SYS_fcntl64(long a, long b, long c) {
154 return shell_fcntl((int)a, (int)b, (void *)c);
155}
156
157long SYS_fdatasync() {
158 return no_implement("fdatasync\n");
159}
160
161long SYS_fstat64(long a, long b) {
162 return shell_fstat((int)a, (struct stat *)b);
163}
164
165long SYS_fsync(long a) {
166 return shell_fsync((int)a);
167}
168
169long SYS_ftruncate64(long a, long b, long c) {
170 return shell_ftruncate((int)a, ((off_t)b << 32) | (off_t)c);
171}
172
173long SYS_futex() {
174 return no_implement("futex\n");
175}
176
177long SYS_futimesat() {
178 return no_implement("futimesat\n");
179}
180
181long SYS_getcwd(long a, long b) {
182 return (long)shell_getcwd((char *)a, (size_t)b);
183}
184
185long SYS_getdents64(long a, long b, long c) {
186 return shell_getdents((int)a, (struct dirent *)b, (size_t)c);
187}
188
189long SYS_getpeername(long a, long b, long c) {
190 return shell_getpeername((int)a, (struct sockaddr *)b, (socklen_t *)c);
191}
192
193long SYS_getsockname(long a, long b, long c) {
194 return shell_getsockname((int)a, (struct sockaddr *)b, (socklen_t *)c);
195}
196
197long SYS_getpid() {
198 return shell_getpid();
199}
200
201long SYS_getsockopt(long a, long b, long c, long d, long e) {
202 return shell_getsockopt((int)a, (int)b, (int)c, (void *)d, (socklen_t *)e);
203}
204
205long SYS_gettid() {
206 return shell_gettid();
207}
208
209long SYS_gettimeofday(long a, long b) {
210 return shell_gettimeofday((struct timeval *)a, (void *)b);
211}
212
213long SYS_getuid32() {
214 return no_implement("getuid\n");
215}
216
217long SYS_ioctl(long a, long b, long c) {
218 return shell_ioctl((int)a, (int)b, (void *)c);
219}
220
221long SYS_kill(long a, long b) {
222 return shell_kill((int)a, (int)b);
223}
224
225long SYS_link(long a, long b) {
226 return shell_link((const char *)a, (const char *)b);
227}
228
229long SYS_listen(long a, long b) {
230 return shell_listen((int)a, (int)b);
231}
232
233long SYS_lstat64(long a, long b) {
234 return shell_lstat((const char *__restrict)a, (struct stat *__restrict)b);
235}
236
237long SYS_madvise(long a, long b, long c) {
238 return shell_madvise((void *)a, (size_t)b, (int)c);
239}
240
241long SYS_mkdir(long a, long b) {
242 return shell_mkdir((const char *)a, (mode_t)b);
243}
244
245long SYS_mmap2(long a, long b, long c, long d, long e, long f, long g) {
246 return (int)shell_mmap2((void *)a, (size_t)b, (int)c, (int)d, (int)e, ((off_t)f << 32) | (off_t)g);
247}
248
249long SYS_mprotect(long a, long b, long c) {
250 return shell_mprotect((void *)a, (size_t)b, (int)c);
251}
252
253long SYS_munmap() {
254 return no_implement("munmap\n");
255}
256
257long SYS_open(long a, long b, long c) {
258 return shell_open((const char *)a, (int)b, (void *)c);
259}
260
261long SYS_poll(long a, long b, long c) {
262 return shell_poll((struct pollfd *)a, (nfds_t)b, (int)c);
263}
264
265long SYS_pread64() {
266 return no_implement("pread64\n");
267}
268
269long SYS_pwrite64() {
270 return no_implement("pwrite64\n");
271}
272
273long SYS_read(long a, long b, long c) {
274 return shell_read((int)a, (void *)b, (size_t)c);
275}
276
277long SYS_readv(long a, long b, long c) {
278 return shell_readv((int)a, (const struct iovec *)b, (int)c);
279}
280
281long SYS_recv(long a, long b, long c, long d) {
282 return shell_recv((int)a, (void *)b, (size_t)c, (int)d);
283}
284
285long SYS_recvfrom(long a, long b, long c, long d, long e, long f) {
286 if (a == 0)
287 return shell_recv(a, (void *)b, (size_t)c, (int)d);
288 else
289 return shell_recvfrom(a, (void *)b, (size_t)c, (int)d, (struct sockaddr *)e, (socklen_t *)f);
290}
291
292long SYS_recvmsg(long a, long b, long c) {
293 return shell_recvmsg((int)a, (struct msghdr *)b, (size_t)c);
294}
295
296long SYS_rename(long a, long b) {
297 return shell_rename((const char *)a, (const char *)b);
298}
299
300long SYS_rmdir(long a) {
301 return shell_rmdir((const char *)a);
302}
303
304long SYS_rt_sigaction(long a, long b, long c) {
305 return shell_sigaction((int)a, (const struct sigaction *)b, (struct sigaction *)c);
306}
307
308long SYS_rt_sigprocmask(long a, long b, long c) {
309 return shell_sigprocmask((int)a, (const sigset_t *)b, (sigset_t *)c);
310}
311
312long SYS_rt_sigqueueinfo() {
313 return no_implement("rt_sigqueueinfo\n");
314}
315
316long SYS_send(long a, long b, long c, long d) {
317 return shell_send((int)a, (const void *)b, (size_t)c, (int)d);
318}
319
320long SYS_sendmsg(long a, long b, long c) {
321 return shell_sendmsg((int)a, (const struct msghdr *)b, (size_t)c);
322}
323
324long SYS_sendto(long a, long b, long c, long d, long e, long f) {
325 if (a == 0)
326 return shell_send(a, (const void *)b, (size_t)c, (int)d);
327 else
328 return shell_sendto(a, (const void *)b, (size_t)c, (int)d, (const struct sockaddr *)e, (socklen_t)f);
329}
330
331long SYS_setsockopt(long a, long b, long c, long d, long e) {
332 return shell_setsockopt((int)a, (int)b, (int)c, (const void *)d, (socklen_t)e);
333}
334
335long SYS_shutdown(long a, long b) {
336 return shell_shutdown((int)a, (int)b);
337}
338
339long SYS_sched_setscheduler() {
340 return no_implement("sched_setscheduler\n");
341}
342
343long SYS_set_robust_list() {
344 return no_implement("set_robust_list\n");
345}
346
347#ifdef SYS_set_thread_area
348long SYS_set_thread_area(long a) {
349 thread_area = (void *)a;
350 return 0;
351}
352#endif
353
354long SYS_set_tid_address(long a) {
355 tid_address = (void *)a;
356 return 0;
357}
358
359long SYS_socket(long a, long b, long c) {
360 return shell_socket((int)a, (int)b, (int)c);
361}
362
363long SYS_stat64(long a, long b) {
364 return shell_stat((const char *)a, (struct stat *)b);
365}
366
367long SYS_tkill(long a, long b) {
368 return shell_tkill((int)a, (int)b);
369}
370
371long SYS_uname(long a) {
372 return shell_uname((struct utsname *)a);
373}
374
375long SYS_unlink(long a) {
376 return shell_unlink((const char *)a);
377}
378
379long SYS_utimensat() {
380 return no_implement("utimensat\n");
381}
382
383long SYS_utimes() {
384 return no_implement("utimes\n");
385}
386
387long SYS_write(long a, long b, long c) {
388 return shell_write((int)a, (const void *)b, (size_t)c);
389}
390
391long SYS_writev(long a, long b, long c) {
392 return shell_writev((int)a, (const struct iovec *)b, (size_t)c);
393}
Note: See TracBrowser for help on using the repository browser.