File: c.lua

package info (click to toggle)
lua-ljsyscall 0.12-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,732 kB
  • sloc: ansic: 434; sh: 59; makefile: 3
file content (443 lines) | stat: -rw-r--r-- 18,225 bytes parent folder | download | duplicates (3)
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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
-- define C functions for rump

-- TODO merge into NetBSD ones, generate

local require, error, assert, tonumber, tostring,
setmetatable, pairs, ipairs, unpack, rawget, rawset,
pcall, type, table, string = 
require, error, assert, tonumber, tostring,
setmetatable, pairs, ipairs, unpack, rawget, rawset,
pcall, type, table, string

local abi = require "syscall.abi"

local h = require "syscall.helpers"
local err64 = h.err64
local errpointer = h.errpointer

local ffi = require "ffi"

local cdef

if abi.types == abi.host or abi.types == "linux" then -- types same on host and rump or using Linux so no renaming
  cdef = function(s)
    s = string.gsub(s, "_netbsd_", "")
    ffi.cdef(s)
  end
else
  cdef = ffi.cdef -- use as provided
end

cdef [[
ssize_t rump___sysimpl_read(int, void *, size_t);
ssize_t rump___sysimpl_write(int, const void *, size_t);
int rump___sysimpl_open(const char *, int, _netbsd_mode_t);
int rump___sysimpl_close(int);
int rump___sysimpl_link(const char *, const char *);
int rump___sysimpl_unlink(const char *);
int rump___sysimpl_chdir(const char *);
int rump___sysimpl_fchdir(int);
int rump___sysimpl_mknod50(const char *, _netbsd_mode_t, _netbsd_dev_t);
int rump___sysimpl_chmod(const char *, _netbsd_mode_t);
int rump___sysimpl_chown(const char *, uid_t, gid_t);
pid_t rump___sysimpl_getpid(void);
int rump___sysimpl_unmount(const char *, int);
int rump___sysimpl_setuid(uid_t);
uid_t rump___sysimpl_getuid(void);
uid_t rump___sysimpl_geteuid(void);
ssize_t rump___sysimpl_recvmsg(int, struct _netbsd_msghdr *, int);
ssize_t rump___sysimpl_sendmsg(int, const struct _netbsd_msghdr *, int);
ssize_t rump___sysimpl_recvfrom(int, void *, size_t, int, struct _netbsd_sockaddr *, socklen_t *);
int rump___sysimpl_accept(int, struct _netbsd_sockaddr *, socklen_t *);
int rump___sysimpl_getpeername(int, struct _netbsd_sockaddr *, socklen_t *);
int rump___sysimpl_getsockname(int, struct _netbsd_sockaddr *, socklen_t *);
int rump___sysimpl_access(const char *, int);
int rump___sysimpl_chflags(const char *, unsigned long);
int rump___sysimpl_fchflags(int, unsigned long);
void rump___sysimpl_sync(void);
pid_t rump___sysimpl_getppid(void);
int rump___sysimpl_dup(int);
gid_t rump___sysimpl_getegid(void);
gid_t rump___sysimpl_getgid(void);
int rump___sysimpl___getlogin(char *, size_t);
int rump___sysimpl___setlogin(const char *);
int rump___sysimpl_ioctl(int, unsigned long, void *);
int rump___sysimpl_revoke(const char *);
int rump___sysimpl_symlink(const char *, const char *);
ssize_t rump___sysimpl_readlink(const char *, char *, size_t);
_netbsd_mode_t rump___sysimpl_umask(_netbsd_mode_t);
int rump___sysimpl_chroot(const char *);
int rump___sysimpl_getgroups(int, gid_t *);
int rump___sysimpl_setgroups(int, const gid_t *);
int rump___sysimpl_getpgrp(void);
int rump___sysimpl_setpgid(pid_t, pid_t);
int rump___sysimpl_dup2(int, int);
int rump___sysimpl_fcntl(int, int, ...);
int rump___sysimpl_select50(int, _netbsd_fd_set *, _netbsd_fd_set *, _netbsd_fd_set *, struct _netbsd_timeval *);
int rump___sysimpl_fsync(int);
int rump___sysimpl_connect(int, const struct _netbsd_sockaddr *, socklen_t);
int rump___sysimpl_bind(int, const struct _netbsd_sockaddr *, socklen_t);
int rump___sysimpl_setsockopt(int, int, int, const void *, socklen_t);
int rump___sysimpl_listen(int, int);
int rump___sysimpl_getsockopt(int, int, int, void *, socklen_t *);
ssize_t rump___sysimpl_readv(int, const struct iovec *, int);
ssize_t rump___sysimpl_writev(int, const struct iovec *, int);
int rump___sysimpl_fchown(int, uid_t, gid_t);
int rump___sysimpl_fchmod(int, _netbsd_mode_t);
int rump___sysimpl_setreuid(uid_t, uid_t);
int rump___sysimpl_setregid(gid_t, gid_t);
int rump___sysimpl_rename(const char *, const char *);
int rump___sysimpl_flock(int, int);
int rump___sysimpl_mkfifo(const char *, _netbsd_mode_t);
ssize_t rump___sysimpl_sendto(int, const void *, size_t, int, const struct _netbsd_sockaddr *, socklen_t);
int rump___sysimpl_shutdown(int, int);
int rump___sysimpl_socketpair(int, int, int, int *);
int rump___sysimpl_mkdir(const char *, _netbsd_mode_t);
int rump___sysimpl_rmdir(const char *);
int rump___sysimpl_utimes50(const char *, const struct _netbsd_timeval *);
int rump___sysimpl_setsid(void);
int rump___sysimpl_nfssvc(int, void *);
ssize_t rump___sysimpl_pread(int, void *, size_t, off_t);
ssize_t rump___sysimpl_pwrite(int, const void *, size_t, off_t);
int rump___sysimpl_setgid(gid_t);
int rump___sysimpl_setegid(gid_t);
int rump___sysimpl_seteuid(uid_t);
long rump___sysimpl_pathconf(const char *, int);
long rump___sysimpl_fpathconf(int, int);
int rump___sysimpl_getrlimit(int, struct _netbsd_rlimit *);
int rump___sysimpl_setrlimit(int, const struct _netbsd_rlimit *);
off_t rump___sysimpl_lseek(int, off_t, int);
int rump___sysimpl_truncate(const char *, off_t);
int rump___sysimpl_ftruncate(int, off_t);
int rump___sysimpl_futimes50(int, const struct _netbsd_timeval *);
pid_t rump___sysimpl_getpgid(pid_t);
int rump___sysimpl_reboot(int, char *);
int rump___sysimpl_poll(struct _netbsd_pollfd *, unsigned int, int);
int rump___sysimpl_fdatasync(int);
int rump___sysimpl_modctl(int, void *);
int rump___sysimpl__ksem_init(unsigned int, intptr_t *);
int rump___sysimpl__ksem_open(const char *, int, _netbsd_mode_t, unsigned int, intptr_t *);
int rump___sysimpl__ksem_unlink(const char *);
int rump___sysimpl__ksem_close(intptr_t);
int rump___sysimpl__ksem_post(intptr_t);
int rump___sysimpl__ksem_wait(intptr_t);
int rump___sysimpl__ksem_trywait(intptr_t);
int rump___sysimpl__ksem_getvalue(intptr_t, unsigned int *);
int rump___sysimpl__ksem_destroy(intptr_t);
int rump___sysimpl__ksem_timedwait(intptr_t, const struct _netbsd_timespec *);
int rump___sysimpl_lchmod(const char *, _netbsd_mode_t);
int rump___sysimpl_lchown(const char *, uid_t, gid_t);
int rump___sysimpl_lutimes50(const char *, const struct _netbsd_timeval *);
pid_t rump___sysimpl_getsid(pid_t);
ssize_t rump___sysimpl_preadv(int, const struct iovec *, int, off_t);
ssize_t rump___sysimpl_pwritev(int, const struct iovec *, int, off_t);
int rump___sysimpl___getcwd(char *, size_t);
int rump___sysimpl_fchroot(int);
int rump___sysimpl_lchflags(const char *, unsigned long);
int rump___sysimpl_issetugid(void);
int rump___sysimpl_kqueue(void);
int rump___sysimpl_kevent50(int, const struct _netbsd_kevent *, size_t, struct _netbsd_kevent *, size_t, const struct _netbsd_timespec *);
int rump___sysimpl_fsync_range(int, int, off_t, off_t);
int rump___sysimpl_getvfsstat(struct _netbsd_statvfs *, size_t, int);
int rump___sysimpl_statvfs1(const char *, struct _netbsd_statvfs *, int);
int rump___sysimpl_fstatvfs1(int, struct _netbsd_statvfs *, int);
int rump___sysimpl_extattrctl(const char *, int, const char *, int, const char *);
int rump___sysimpl_extattr_set_file(const char *, int, const char *, const void *, size_t);
ssize_t rump___sysimpl_extattr_get_file(const char *, int, const char *, void *, size_t);
int rump___sysimpl_extattr_delete_file(const char *, int, const char *);
int rump___sysimpl_extattr_set_fd(int, int, const char *, const void *, size_t);
ssize_t rump___sysimpl_extattr_get_fd(int, int, const char *, void *, size_t);
int rump___sysimpl_extattr_delete_fd(int, int, const char *);
int rump___sysimpl_extattr_set_link(const char *, int, const char *, const void *, size_t);
ssize_t rump___sysimpl_extattr_get_link(const char *, int, const char *, void *, size_t);
int rump___sysimpl_extattr_delete_link(const char *, int, const char *);
ssize_t rump___sysimpl_extattr_list_fd(int, int, void *, size_t);
ssize_t rump___sysimpl_extattr_list_file(const char *, int, void *, size_t);
ssize_t rump___sysimpl_extattr_list_link(const char *, int, void *, size_t);
int rump___sysimpl_pselect50(int, _netbsd_fd_set *, _netbsd_fd_set *, _netbsd_fd_set *, const struct _netbsd_timespec *, const _netbsd_sigset_t *);
int rump___sysimpl_pollts50(struct _netbsd_pollfd *, unsigned int, const struct _netbsd_timespec *, const _netbsd_sigset_t *);
int rump___sysimpl_setxattr(const char *, const char *, const void *, size_t, int);
int rump___sysimpl_lsetxattr(const char *, const char *, const void *, size_t, int);
int rump___sysimpl_fsetxattr(int, const char *, const void *, size_t, int);
int rump___sysimpl_getxattr(const char *, const char *, void *, size_t);
int rump___sysimpl_lgetxattr(const char *, const char *, void *, size_t);
int rump___sysimpl_fgetxattr(int, const char *, void *, size_t);
int rump___sysimpl_listxattr(const char *, char *, size_t);
int rump___sysimpl_llistxattr(const char *, char *, size_t);
int rump___sysimpl_flistxattr(int, char *, size_t);
int rump___sysimpl_removexattr(const char *, const char *);
int rump___sysimpl_lremovexattr(const char *, const char *);
int rump___sysimpl_fremovexattr(int, const char *);
int rump___sysimpl_stat50(const char *, struct _netbsd_stat *);
int rump___sysimpl_fstat50(int, struct _netbsd_stat *);
int rump___sysimpl_lstat50(const char *, struct _netbsd_stat *);
int rump___sysimpl_getdents30(int, char *, size_t);
int rump___sysimpl_socket30(int, int, int);
int rump___sysimpl_getfh30(const char *, void *, size_t *);
int rump___sysimpl_fhopen40(const void *, size_t, int);
int rump___sysimpl_fhstatvfs140(const void *, size_t, struct _netbsd_statvfs *, int);
int rump___sysimpl_fhstat50(const void *, size_t, struct _netbsd_stat *);
int rump___sysimpl_mount50(const char *, const char *, int, void *, size_t);
int rump___sysimpl_posix_fadvise50(int, off_t, off_t, int);
int rump___sysimpl_pipe2(int *, int);
int rump___sysimpl_dup3(int, int, int);
int rump___sysimpl_kqueue1(int);
int rump___sysimpl_paccept(int, struct _netbsd_sockaddr *, socklen_t *, const _netbsd_sigset_t *, int);
int rump___sysimpl_linkat(int, const char *, int, const char *, int);
int rump___sysimpl_renameat(int, const char *, int, const char *);
int rump___sysimpl_mkfifoat(int, const char *, _netbsd_mode_t);
int rump___sysimpl_mknodat(int, const char *, _netbsd_mode_t, _netbsd_dev_t);
int rump___sysimpl_mkdirat(int, const char *, _netbsd_mode_t);
int rump___sysimpl_faccessat(int, const char *, int, int);
int rump___sysimpl_fchmodat(int, const char *, _netbsd_mode_t, int);
int rump___sysimpl_fchownat(int, const char *, uid_t, gid_t, int);
int rump___sysimpl_fstatat(int, const char *, struct _netbsd_stat *, int);
int rump___sysimpl_utimensat(int, const char *, const struct _netbsd_timespec *, int);
int rump___sysimpl_openat(int, const char *, int, int);
int rump___sysimpl_readlinkat(int, const char *, char *, size_t);
int rump___sysimpl_symlinkat(const char *, int, const char *);
int rump___sysimpl_unlinkat(int, const char *, int);
int rump___sysimpl_futimens(int, const struct _netbsd_timespec *);
int rump___sysimpl___quotactl(const char *, struct _netbsd_quotactl_args *);
int rump___sysimpl_ktrace(const char *tracefile, int ops, int trpoints, pid_t pid);
int rump___sysimpl_fktrace(int fd, int ops, int trpoints, pid_t pid);
int rump___sysimpl_utrace(const char *, void *, size_t);
int rump___sysimpl_recvmmsg(int, struct _netbsd_mmsghdr *, unsigned int, unsigned int, struct _netbsd_timespec *);
int rump___sysimpl_sendmmsg(int, struct _netbsd_mmsghdr *, unsigned int, unsigned int);

int rump___sysimpl_gettimeofday50(struct _netbsd_timeval *, void *);
int rump___sysimpl_settimeofday50(const struct _netbsd_timeval *, const void *);
int rump___sysimpl_adjtime50(const struct _netbsd_timeval *, struct _netbsd_timeval *);
int rump___sysimpl_setitimer50(int, const struct _netbsd_itimerval *, struct _netbsd_itimerval *);
int rump___sysimpl_getitimer50(int, struct _netbsd_itimerval *);
int rump___sysimpl_clock_gettime50(_netbsd_clockid_t, struct _netbsd_timespec *);
int rump___sysimpl_clock_settime50(_netbsd_clockid_t, const struct _netbsd_timespec *);
int rump___sysimpl_clock_getres50(_netbsd_clockid_t, struct _netbsd_timespec *);
int rump___sysimpl_nanosleep50(const struct _netbsd_timespec *, struct _netbsd_timespec *);
int rump___sysimpl_timer_settime50(_netbsd_timer_t, int, const struct _netbsd_itimerspec *, struct _netbsd_itimerspec *);
int rump___sysimpl_timer_gettime50(_netbsd_timer_t, struct _netbsd_itimerspec *);
int rump___sysimpl_clock_nanosleep(_netbsd_clockid_t, int, const struct _netbsd_timespec *, struct _netbsd_timespec *);
int rump___sysimpl_timer_create(_netbsd_clockid_t, struct _netbsd_sigevent *, _netbsd_timer_t *);
int rump___sysimpl_timer_delete(_netbsd_timer_t);
int rump___sysimpl_timer_getoverrun(_netbsd_timer_t);

int rump___sysimpl_aio_cancel(int, struct aiocb *);
int rump___sysimpl_aio_error(const struct aiocb *);
int rump___sysimpl_aio_fsync(int, struct aiocb *);
int rump___sysimpl_aio_read(struct aiocb *);
int rump___sysimpl_aio_return(struct aiocb *);
int rump___sysimpl_aio_write(struct aiocb *);
int rump___sysimpl_lio_listio(int, struct aiocb *const *, int, struct sigevent *);
int rump___sysimpl_aio_suspend(const struct aiocb *const *, int, const struct timespec *);

int rump___sysimpl___sysctl(const int *, unsigned int, void *, size_t *, const void *, size_t);

int rump_sys_pipe(int *);
]]

local clist = {
  accept = "accept",
  access = "access",
  bind = "bind",
  chdir = "chdir",
  chflags = "chflags",
  chmod = "chmod",
  chown = "chown",
  chroot = "chroot",
  close = "close",
  connect = "connect",
  dup2 = "dup2",
  dup3 = "dup3",
  dup = "dup",
  extattrctl = "extattrctl",
  extattr_delete_fd = "extattr_delete_fd",
  extattr_delete_file = "extattr_delete_file",
  extattr_delete_link = "extattr_delete_link",
  extattr_get_fd = "extattr_get_fd",
  extattr_get_file = "extattr_get_file",
  extattr_get_link = "extattr_get_link",
  extattr_list_fd = "extattr_list_fd",
  extattr_list_file = "extattr_list_file",
  extattr_list_link = "extattr_list_link",
  extattr_set_fd = "extattr_set_fd",
  extattr_set_file = "extattr_set_file",
  extattr_set_link = "extattr_set_link",
  faccessat = "faccessat",
  fchdir = "fchdir",
  fchflags = "fchflags",
  fchmodat = "fchmodat",
  fchmod = "fchmod",
  fchownat = "fchownat",
  fchown = "fchown",
  fchroot = "fchroot",
  fcntl = "fcntl",
  fdatasync = "fdatasync",
  fgetxattr = "fgetxattr",
  fktrace = "fktrace",
  flistxattr = "flistxattr",
  flock = "flock",
  fpathconf = "fpathconf",
  fremovexattr = "fremovexattr",
  fsetxattr = "fsetxattr",
  fstatat = "fstatat",
  fstatvfs1 = "fstatvfs1",
  fsync_range = "fsync_range",
  fsync = "fsync",
  ftruncate = "ftruncate",
  futimens = "futimens",
  getcwd = "__getcwd",
  getegid = "getegid",
  geteuid = "geteuid",
  getgid = "getgid",
  getgroups = "getgroups",
  __getlogin = "__getlogin",
  getpeername = "getpeername",
  getpgid = "getpgid",
  getpgrp = "getpgrp",
  getpid = "getpid",
  getppid = "getppid",
  getrlimit = "getrlimit",
  getsid = "getsid",
  getsockname = "getsockname",
  getsockopt = "getsockopt",
  getuid = "getuid",
  getvfsstat = "getvfsstat",
  getxattr = "getxattr",
  ioctl = "ioctl",
  issetugid = "issetugid",
  kqueue1 = "kqueue1",
  kqueue = "kqueue",
  _ksem_close = "_ksem_close",
  _ksem_destroy = "_ksem_destroy",
  _ksem_getvalue = "_ksem_getvalue",
  _ksem_init = "_ksem_init",
  _ksem_open = "_ksem_open",
  _ksem_post = "_ksem_post",
  _ksem_timedwait = "_ksem_timedwait",
  _ksem_trywait = "_ksem_trywait",
  _ksem_unlink = "_ksem_unlink",
  _ksem_wait = "_ksem_wait",
  ktrace = "ktrace",
  lchflags = "lchflags",
  lchmod = "lchmod",
  lchown = "lchown",
  lgetxattr = "lgetxattr",
  linkat = "linkat",
  link = "link",
  listen = "listen",
  listxattr = "listxattr",
  llistxattr = "llistxattr",
  lremovexattr = "lremovexattr",
  lseek = "lseek",
  lsetxattr = "lsetxattr",
  mkdirat = "mkdirat",
  mkdir = "mkdir",
  mkfifoat = "mkfifoat",
  mkfifo = "mkfifo",
  mknodat = "mknodat",
  modctl = "modctl",
  nfssvc = "nfssvc",
  openat = "openat",
  open = "open",
  paccept = "paccept",
  pathconf = "pathconf",
  pipe2 = "pipe2",
  poll = "poll",
  pread = "pread",
  preadv = "preadv",
  pwrite = "pwrite",
  pwritev = "pwritev",
  __quotactl = "__quotactl",
  readlinkat = "readlinkat",
  readlink = "readlink",
  read = "read",
  readv = "readv",
  reboot = "reboot",
  recvfrom = "recvfrom",
  recvmsg = "recvmsg",
  removexattr = "removexattr",
  renameat = "renameat",
  rename = "rename",
  revoke = "revoke",
  rmdir = "rmdir",
  sendmsg = "sendmsg",
  sendto = "sendto",
  setegid = "setegid",
  seteuid = "seteuid",
  setgid = "setgid",
  setgroups = "setgroups",
  __setlogin = "__setlogin",
  setpgid = "setpgid",
  setregid = "setregid",
  setreuid = "setreuid",
  setrlimit = "setrlimit",
  setsid = "setsid",
  setsockopt = "setsockopt",
  setuid = "setuid",
  setxattr = "setxattr",
  shutdown = "shutdown",
  socketpair = "socketpair",
  statvfs1 = "statvfs1",
  symlinkat = "symlinkat",
  symlink = "symlink",
  sync = "sync",
  sysctl = "__sysctl",
  truncate = "truncate",
  umask = "umask",
  unlinkat = "unlinkat",
  unlink = "unlink",
  unmount = "unmount",
  utimensat = "utimensat",
  utrace = "utrace",
  write = "write",
  writev = "writev",
  recvmmsg = "recvmmsg",
  sendmmsg = "sendmmsg",
-- version calls
  fhopen = "fhopen40",
  fhstat = "fhstat50",
  fhstatvfs = "fhstatvfs140",
  fstat = "fstat50",
  futimes = "futimes50",
  getdents = "getdents30",
  getfh = "getfh30",
  kevent = "kevent50",
  lstat = "lstat50",
  lutimes = "lutimes50",
  mknod = "mknod50",
  mount = "mount50",
  posix_fadvise = "posix_fadvise50",
  pselect = "pselect50",
  select = "select50",
  socket = "socket30",
  stat = "stat50",
  utimes = "utimes50",
  pollts = "pollts50",
-- time functions
  gettimeofday = "gettimeofday50",
  settimeofday = "settimeofday50",
  adjtime = "adjtime50",
  setitimer = "setitimer50",
  getitimer = "getitimer50",
  clock_gettime = "clock_gettime50",
  clock_settime = "clock_settime50",
  clock_getres = "clock_getres50",
  nanosleep = "nanosleep50",
  timer_settime = "timer_settime50",
  timer_gettime = "timer_gettime50",
  clock_nanosleep = "clock_nanosleep",
  timer_create = "timer_create",
  timer_delete = "timer_delete",
  timer_getoverrun = "timer_getoverrun",
}

local C = {}

for k, v in pairs(clist) do C[k] = ffi.C["rump___sysimpl_" .. v] end

-- different naming convention due to return value
C.pipe = ffi.C.rump_sys_pipe

return C