From 144eb720f113177d91e27277175b71186da030cf Mon Sep 17 00:00:00 2001 From: "Samuel J. Greear" Date: Wed, 24 Mar 2010 11:50:05 -0600 Subject: [PATCH] linux - Add syscalls * Stub out a number of syscalls using the DUMMY macro * Add a preliminary implementation of pipe2 --- sys/emulation/linux/i386/linux_dummy.c | 28 ++++ sys/emulation/linux/i386/linux_machdep.c | 39 +++++ sys/emulation/linux/i386/linux_proto.h | 204 +++++++++++++++++++++++ sys/emulation/linux/i386/linux_syscall.h | 29 ++++ sys/emulation/linux/i386/linux_sysent.c | 62 +++---- sys/emulation/linux/i386/linux_union.h | 29 ++++ sys/emulation/linux/i386/syscalls.master | 62 +++---- 7 files changed, 391 insertions(+), 62 deletions(-) diff --git a/sys/emulation/linux/i386/linux_dummy.c b/sys/emulation/linux/i386/linux_dummy.c index c3dd683fc1..97995c6bba 100644 --- a/sys/emulation/linux/i386/linux_dummy.c +++ b/sys/emulation/linux/i386/linux_dummy.c @@ -71,6 +71,34 @@ DUMMY(pivot_root); DUMMY(mincore); DUMMY(fadvise64); DUMMY(statfs64); +DUMMY(fstatfs64); +DUMMY(fadvise64_64); +DUMMY(mbind); +DUMMY(get_mempolicy); +DUMMY(set_mempolicy); +DUMMY(kexec_load); +DUMMY(waitid); +DUMMY(add_key); +DUMMY(request_key); +DUMMY(keyctl); +DUMMY(ioprio_set); +DUMMY(ioprio_get); +DUMMY(inotify_init); +DUMMY(inotify_add_watch); +DUMMY(inotify_rm_watch); +DUMMY(migrate_pages); +DUMMY(pselect6); +DUMMY(ppoll); +DUMMY(unshare); +DUMMY(splice); +DUMMY(sync_file_range); +DUMMY(tee); +DUMMY(vmsplice); +DUMMY(move_pages); +DUMMY(epoll_pwait); +DUMMY(signalfd); +DUMMY(timerfd); +DUMMY(eventfd); #define DUMMY_XATTR(s) \ int \ diff --git a/sys/emulation/linux/i386/linux_machdep.c b/sys/emulation/linux/i386/linux_machdep.c index af6b1eeae5..39d4d502b4 100644 --- a/sys/emulation/linux/i386/linux_machdep.c +++ b/sys/emulation/linux/i386/linux_machdep.c @@ -809,6 +809,45 @@ sys_linux_pipe(struct linux_pipe_args *args) return (0); } +/* + * XXX: Preliminary + */ +int +sys_linux_pipe2(struct linux_pipe2_args *args) +{ + struct thread *td = curthread; + int error; + int reg_edx; + struct pipe_args bsd_args; + union fcntl_dat dat; + + reg_edx = args->sysmsg_fds[1]; + error = sys_pipe(&bsd_args); + if (error) { + args->sysmsg_fds[1] = reg_edx; + return (error); + } + +// if (args->flags & LINUX_O_CLOEXEC) { +// } + + if (args->flags & LINUX_O_NONBLOCK) { + dat.fc_flags = O_NONBLOCK; + kern_fcntl(bsd_args.sysmsg_fds[0], F_SETFL, &dat, td->td_ucred); + kern_fcntl(bsd_args.sysmsg_fds[1], F_SETFL, &dat, td->td_ucred); + } + + error = copyout(bsd_args.sysmsg_fds, args->pipefds, 2*sizeof(int)); + if (error) { + args->sysmsg_fds[1] = reg_edx; + return (error); + } + + args->sysmsg_fds[1] = reg_edx; + args->sysmsg_fds[0] = 0; + return (0); +} + /* * MPSAFE */ diff --git a/sys/emulation/linux/i386/linux_proto.h b/sys/emulation/linux/i386/linux_proto.h index 8e246be00a..c95ffc9b1b 100644 --- a/sys/emulation/linux/i386/linux_proto.h +++ b/sys/emulation/linux/i386/linux_proto.h @@ -1312,6 +1312,12 @@ struct linux_statfs64_args { #endif register_t dummy; }; +struct linux_fstatfs64_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_tgkill_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1327,6 +1333,30 @@ struct linux_utimes_args { char * fname; char fname_[PAD_(char *)]; struct l_timeval * tptr; char tptr_[PAD_(struct l_timeval *)]; }; +struct linux_fadvise64_64_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_mbind_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_get_mempolicy_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_set_mempolicy_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_mq_open_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1344,6 +1374,72 @@ struct linux_mq_getsetattr_args { const struct mq_attr * attr; char attr_[PAD_(const struct mq_attr *)]; struct mq_attr * oattr; char oattr_[PAD_(struct mq_attr *)]; }; +struct linux_kexec_load_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_waitid_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_add_key_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_request_key_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_keyctl_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_ioprio_set_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_ioprio_get_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_inotify_init_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_inotify_add_watch_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_inotify_rm_watch_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_migrate_pages_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_openat_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1457,6 +1553,24 @@ struct linux_faccessat_args { char * filename; char filename_[PAD_(char *)]; l_int mode; char mode_[PAD_(l_int)]; }; +struct linux_pselect6_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_ppoll_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_unshare_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_set_robust_list_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1472,6 +1586,36 @@ struct linux_get_robust_list_args { struct linux_robust_list_head ** head; char head_[PAD_(struct linux_robust_list_head **)]; l_size_t * len; char len_[PAD_(l_size_t *)]; }; +struct linux_splice_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_sync_file_range_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_tee_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_vmsplice_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_move_pages_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_getcpu_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1480,6 +1624,12 @@ struct linux_getcpu_args { l_uint * pnode; char pnode_[PAD_(l_uint *)]; void * ptcache; char ptcache_[PAD_(void *)]; }; +struct linux_epoll_pwait_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; struct linux_utimensat_args { #ifdef _KERNEL struct sysmsg sysmsg; @@ -1489,6 +1639,31 @@ struct linux_utimensat_args { struct l_timespec * tptr; char tptr_[PAD_(struct l_timespec *)]; l_int flag; char flag_[PAD_(l_int)]; }; +struct linux_signalfd_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_timerfd_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_eventfd_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + register_t dummy; +}; +struct linux_pipe2_args { +#ifdef _KERNEL + struct sysmsg sysmsg; +#endif + l_ulong * pipefds; char pipefds_[PAD_(l_ulong *)]; + l_int flags; char flags_[PAD_(l_int)]; +}; #ifdef COMPAT_43 @@ -1702,10 +1877,26 @@ int sys_linux_clock_gettime (struct linux_clock_gettime_args *); int sys_linux_clock_getres (struct linux_clock_getres_args *); int sys_linux_clock_nanosleep (struct linux_clock_nanosleep_args *); int sys_linux_statfs64 (struct linux_statfs64_args *); +int sys_linux_fstatfs64 (struct linux_fstatfs64_args *); int sys_linux_tgkill (struct linux_tgkill_args *); int sys_linux_utimes (struct linux_utimes_args *); +int sys_linux_fadvise64_64 (struct linux_fadvise64_64_args *); +int sys_linux_mbind (struct linux_mbind_args *); +int sys_linux_get_mempolicy (struct linux_get_mempolicy_args *); +int sys_linux_set_mempolicy (struct linux_set_mempolicy_args *); int sys_linux_mq_open (struct linux_mq_open_args *); int sys_linux_mq_getsetattr (struct linux_mq_getsetattr_args *); +int sys_linux_kexec_load (struct linux_kexec_load_args *); +int sys_linux_waitid (struct linux_waitid_args *); +int sys_linux_add_key (struct linux_add_key_args *); +int sys_linux_request_key (struct linux_request_key_args *); +int sys_linux_keyctl (struct linux_keyctl_args *); +int sys_linux_ioprio_set (struct linux_ioprio_set_args *); +int sys_linux_ioprio_get (struct linux_ioprio_get_args *); +int sys_linux_inotify_init (struct linux_inotify_init_args *); +int sys_linux_inotify_add_watch (struct linux_inotify_add_watch_args *); +int sys_linux_inotify_rm_watch (struct linux_inotify_rm_watch_args *); +int sys_linux_migrate_pages (struct linux_migrate_pages_args *); int sys_linux_openat (struct linux_openat_args *); int sys_linux_mkdirat (struct linux_mkdirat_args *); int sys_linux_mknodat (struct linux_mknodat_args *); @@ -1719,10 +1910,23 @@ int sys_linux_symlinkat (struct linux_symlinkat_args *); int sys_linux_readlinkat (struct linux_readlinkat_args *); int sys_linux_fchmodat (struct linux_fchmodat_args *); int sys_linux_faccessat (struct linux_faccessat_args *); +int sys_linux_pselect6 (struct linux_pselect6_args *); +int sys_linux_ppoll (struct linux_ppoll_args *); +int sys_linux_unshare (struct linux_unshare_args *); int sys_linux_set_robust_list (struct linux_set_robust_list_args *); int sys_linux_get_robust_list (struct linux_get_robust_list_args *); +int sys_linux_splice (struct linux_splice_args *); +int sys_linux_sync_file_range (struct linux_sync_file_range_args *); +int sys_linux_tee (struct linux_tee_args *); +int sys_linux_vmsplice (struct linux_vmsplice_args *); +int sys_linux_move_pages (struct linux_move_pages_args *); int sys_linux_getcpu (struct linux_getcpu_args *); +int sys_linux_epoll_pwait (struct linux_epoll_pwait_args *); int sys_linux_utimensat (struct linux_utimensat_args *); +int sys_linux_signalfd (struct linux_signalfd_args *); +int sys_linux_timerfd (struct linux_timerfd_args *); +int sys_linux_eventfd (struct linux_eventfd_args *); +int sys_linux_pipe2 (struct linux_pipe2_args *); #endif /* !_LINUX_SYSPROTO_H_ */ #undef PAD_ diff --git a/sys/emulation/linux/i386/linux_syscall.h b/sys/emulation/linux/i386/linux_syscall.h index 85cf4ed38a..94e80198c9 100644 --- a/sys/emulation/linux/i386/linux_syscall.h +++ b/sys/emulation/linux/i386/linux_syscall.h @@ -241,14 +241,30 @@ #define LINUX_SYS_linux_clock_getres 266 #define LINUX_SYS_linux_clock_nanosleep 267 #define LINUX_SYS_linux_statfs64 268 +#define LINUX_SYS_linux_fstatfs64 269 #define LINUX_SYS_linux_tgkill 270 #define LINUX_SYS_linux_utimes 271 +#define LINUX_SYS_linux_fadvise64_64 272 +#define LINUX_SYS_linux_mbind 274 +#define LINUX_SYS_linux_get_mempolicy 275 +#define LINUX_SYS_linux_set_mempolicy 276 #define LINUX_SYS_linux_mq_open 277 #define LINUX_SYS_mq_unlink 278 #define LINUX_SYS_mq_timedsend 279 #define LINUX_SYS_mq_timedreceive 280 #define LINUX_SYS_mq_notify 281 #define LINUX_SYS_linux_mq_getsetattr 282 +#define LINUX_SYS_linux_kexec_load 283 +#define LINUX_SYS_linux_waitid 284 +#define LINUX_SYS_linux_add_key 286 +#define LINUX_SYS_linux_request_key 287 +#define LINUX_SYS_linux_keyctl 288 +#define LINUX_SYS_linux_ioprio_set 289 +#define LINUX_SYS_linux_ioprio_get 290 +#define LINUX_SYS_linux_inotify_init 291 +#define LINUX_SYS_linux_inotify_add_watch 292 +#define LINUX_SYS_linux_inotify_rm_watch 293 +#define LINUX_SYS_linux_migrate_pages 294 #define LINUX_SYS_linux_openat 295 #define LINUX_SYS_linux_mkdirat 296 #define LINUX_SYS_linux_mknodat 297 @@ -262,8 +278,21 @@ #define LINUX_SYS_linux_readlinkat 305 #define LINUX_SYS_linux_fchmodat 306 #define LINUX_SYS_linux_faccessat 307 +#define LINUX_SYS_linux_pselect6 308 +#define LINUX_SYS_linux_ppoll 309 +#define LINUX_SYS_linux_unshare 310 #define LINUX_SYS_linux_set_robust_list 311 #define LINUX_SYS_linux_get_robust_list 312 +#define LINUX_SYS_linux_splice 313 +#define LINUX_SYS_linux_sync_file_range 314 +#define LINUX_SYS_linux_tee 315 +#define LINUX_SYS_linux_vmsplice 316 +#define LINUX_SYS_linux_move_pages 317 #define LINUX_SYS_linux_getcpu 318 +#define LINUX_SYS_linux_epoll_pwait 319 #define LINUX_SYS_linux_utimensat 320 +#define LINUX_SYS_linux_signalfd 321 +#define LINUX_SYS_linux_timerfd 322 +#define LINUX_SYS_linux_eventfd 323 +#define LINUX_SYS_linux_pipe2 331 #define LINUX_SYS_MAXSYSCALL 338 diff --git a/sys/emulation/linux/i386/linux_sysent.c b/sys/emulation/linux/i386/linux_sysent.c index c6948bbdea..06ffaf72fd 100644 --- a/sys/emulation/linux/i386/linux_sysent.c +++ b/sys/emulation/linux/i386/linux_sysent.c @@ -287,32 +287,32 @@ struct sysent linux_sysent[] = { { AS(linux_clock_getres_args), (sy_call_t *)sys_linux_clock_getres }, /* 266 = linux_clock_getres */ { AS(linux_clock_nanosleep_args), (sy_call_t *)sys_linux_clock_nanosleep }, /* 267 = linux_clock_nanosleep */ { 0, (sy_call_t *)sys_linux_statfs64 }, /* 268 = linux_statfs64 */ - { 0, (sy_call_t *)sys_nosys }, /* 269 = linux_fstatfs64 */ + { 0, (sy_call_t *)sys_linux_fstatfs64 }, /* 269 = linux_fstatfs64 */ { AS(linux_tgkill_args), (sy_call_t *)sys_linux_tgkill }, /* 270 = linux_tgkill */ { AS(linux_utimes_args), (sy_call_t *)sys_linux_utimes }, /* 271 = linux_utimes */ - { 0, (sy_call_t *)sys_nosys }, /* 272 = linux_fadvise64_64 */ - { 0, (sy_call_t *)sys_nosys }, /* 273 = linux_nonexistant */ - { 0, (sy_call_t *)sys_nosys }, /* 274 = linux_mbind */ - { 0, (sy_call_t *)sys_nosys }, /* 275 = linux_get_mempolicy */ - { 0, (sy_call_t *)sys_nosys }, /* 276 = linux_set_mempolicy */ + { 0, (sy_call_t *)sys_linux_fadvise64_64 }, /* 272 = linux_fadvise64_64 */ + { 0, (sy_call_t *)sys_nosys }, /* 273 = / */ + { 0, (sy_call_t *)sys_linux_mbind }, /* 274 = linux_mbind */ + { 0, (sy_call_t *)sys_linux_get_mempolicy }, /* 275 = linux_get_mempolicy */ + { 0, (sy_call_t *)sys_linux_set_mempolicy }, /* 276 = linux_set_mempolicy */ { AS(linux_mq_open_args), (sy_call_t *)sys_linux_mq_open }, /* 277 = linux_mq_open */ { AS(mq_unlink_args), (sy_call_t *)sys_mq_unlink }, /* 278 = mq_unlink */ { AS(mq_timedsend_args), (sy_call_t *)sys_mq_timedsend }, /* 279 = mq_timedsend */ { AS(mq_timedreceive_args), (sy_call_t *)sys_mq_timedreceive }, /* 280 = mq_timedreceive */ { AS(mq_notify_args), (sy_call_t *)sys_mq_notify }, /* 281 = mq_notify */ { AS(linux_mq_getsetattr_args), (sy_call_t *)sys_linux_mq_getsetattr }, /* 282 = linux_mq_getsetattr */ - { 0, (sy_call_t *)sys_nosys }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)sys_nosys }, /* 284 = linux_waitid */ - { 0, (sy_call_t *)sys_nosys }, /* 285 = linux_nonexistant2 */ - { 0, (sy_call_t *)sys_nosys }, /* 286 = linux_add_key */ - { 0, (sy_call_t *)sys_nosys }, /* 287 = linux_request_key */ - { 0, (sy_call_t *)sys_nosys }, /* 288 = linux_keyctl */ - { 0, (sy_call_t *)sys_nosys }, /* 289 = linux_ioprio_set */ - { 0, (sy_call_t *)sys_nosys }, /* 290 = linux_ioprio_get */ - { 0, (sy_call_t *)sys_nosys }, /* 291 = linux_inotify_init */ - { 0, (sy_call_t *)sys_nosys }, /* 292 = linux_inotify_add_watch */ - { 0, (sy_call_t *)sys_nosys }, /* 293 = linux_inotify_rm_watch */ - { 0, (sy_call_t *)sys_nosys }, /* 294 = linux_migrate_pages */ + { 0, (sy_call_t *)sys_linux_kexec_load }, /* 283 = linux_kexec_load */ + { 0, (sy_call_t *)sys_linux_waitid }, /* 284 = linux_waitid */ + { 0, (sy_call_t *)sys_nosys }, /* 285 = / */ + { 0, (sy_call_t *)sys_linux_add_key }, /* 286 = linux_add_key */ + { 0, (sy_call_t *)sys_linux_request_key }, /* 287 = linux_request_key */ + { 0, (sy_call_t *)sys_linux_keyctl }, /* 288 = linux_keyctl */ + { 0, (sy_call_t *)sys_linux_ioprio_set }, /* 289 = linux_ioprio_set */ + { 0, (sy_call_t *)sys_linux_ioprio_get }, /* 290 = linux_ioprio_get */ + { 0, (sy_call_t *)sys_linux_inotify_init }, /* 291 = linux_inotify_init */ + { 0, (sy_call_t *)sys_linux_inotify_add_watch }, /* 292 = linux_inotify_add_watch */ + { 0, (sy_call_t *)sys_linux_inotify_rm_watch }, /* 293 = linux_inotify_rm_watch */ + { 0, (sy_call_t *)sys_linux_migrate_pages }, /* 294 = linux_migrate_pages */ { AS(linux_openat_args), (sy_call_t *)sys_linux_openat }, /* 295 = linux_openat */ { AS(linux_mkdirat_args), (sy_call_t *)sys_linux_mkdirat }, /* 296 = linux_mkdirat */ { AS(linux_mknodat_args), (sy_call_t *)sys_linux_mknodat }, /* 297 = linux_mknodat */ @@ -326,22 +326,22 @@ struct sysent linux_sysent[] = { { AS(linux_readlinkat_args), (sy_call_t *)sys_linux_readlinkat }, /* 305 = linux_readlinkat */ { AS(linux_fchmodat_args), (sy_call_t *)sys_linux_fchmodat }, /* 306 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)sys_linux_faccessat }, /* 307 = linux_faccessat */ - { 0, (sy_call_t *)sys_nosys }, /* 308 = linux_pselect6 */ - { 0, (sy_call_t *)sys_nosys }, /* 309 = linux_ppoll */ - { 0, (sy_call_t *)sys_nosys }, /* 310 = linux_unshare */ + { 0, (sy_call_t *)sys_linux_pselect6 }, /* 308 = linux_pselect6 */ + { 0, (sy_call_t *)sys_linux_ppoll }, /* 309 = linux_ppoll */ + { 0, (sy_call_t *)sys_linux_unshare }, /* 310 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)sys_linux_set_robust_list }, /* 311 = linux_set_robust_list */ { AS(linux_get_robust_list_args), (sy_call_t *)sys_linux_get_robust_list }, /* 312 = linux_get_robust_list */ - { 0, (sy_call_t *)sys_nosys }, /* 313 = linux_splice */ - { 0, (sy_call_t *)sys_nosys }, /* 314 = linux_sync_file_range */ - { 0, (sy_call_t *)sys_nosys }, /* 315 = linux_tee */ - { 0, (sy_call_t *)sys_nosys }, /* 316 = linux_vmsplice */ - { 0, (sy_call_t *)sys_nosys }, /* 317 = linux_move_pages */ + { 0, (sy_call_t *)sys_linux_splice }, /* 313 = linux_splice */ + { 0, (sy_call_t *)sys_linux_sync_file_range }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)sys_linux_tee }, /* 315 = linux_tee */ + { 0, (sy_call_t *)sys_linux_vmsplice }, /* 316 = linux_vmsplice */ + { 0, (sy_call_t *)sys_linux_move_pages }, /* 317 = linux_move_pages */ { AS(linux_getcpu_args), (sy_call_t *)sys_linux_getcpu }, /* 318 = linux_getcpu */ - { 0, (sy_call_t *)sys_nosys }, /* 319 = linux_epoll_pwait */ + { 0, (sy_call_t *)sys_linux_epoll_pwait }, /* 319 = linux_epoll_pwait */ { AS(linux_utimensat_args), (sy_call_t *)sys_linux_utimensat }, /* 320 = linux_utimensat */ - { 0, (sy_call_t *)sys_nosys }, /* 321 = linux_signalfd */ - { 0, (sy_call_t *)sys_nosys }, /* 322 = linux_timerfd_create */ - { 0, (sy_call_t *)sys_nosys }, /* 323 = linux_eventfd */ + { 0, (sy_call_t *)sys_linux_signalfd }, /* 321 = linux_signalfd */ + { 0, (sy_call_t *)sys_linux_timerfd }, /* 322 = linux_timerfd */ + { 0, (sy_call_t *)sys_linux_eventfd }, /* 323 = linux_eventfd */ { 0, (sy_call_t *)sys_nosys }, /* 324 = linux_fallocate */ { 0, (sy_call_t *)sys_nosys }, /* 325 = linux_timerfd_settime */ { 0, (sy_call_t *)sys_nosys }, /* 326 = linux_timerfd_gettime */ @@ -349,7 +349,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)sys_nosys }, /* 328 = linux_eventfd2 */ { 0, (sy_call_t *)sys_nosys }, /* 329 = linux_epoll_create1 */ { 0, (sy_call_t *)sys_nosys }, /* 330 = linux_dup3 */ - { 0, (sy_call_t *)sys_nosys }, /* 331 = linux_pipe2 */ + { AS(linux_pipe2_args), (sy_call_t *)sys_linux_pipe2 }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)sys_nosys }, /* 332 = linux_inotify_init1 */ { 0, (sy_call_t *)sys_nosys }, /* 333 = linux_preadv */ { 0, (sy_call_t *)sys_nosys }, /* 334 = linux_pwritev */ diff --git a/sys/emulation/linux/i386/linux_union.h b/sys/emulation/linux/i386/linux_union.h index 0351fee53d..0263161f7c 100644 --- a/sys/emulation/linux/i386/linux_union.h +++ b/sys/emulation/linux/i386/linux_union.h @@ -195,10 +195,26 @@ union sysunion { struct linux_clock_getres_args linux_clock_getres; struct linux_clock_nanosleep_args linux_clock_nanosleep; struct linux_statfs64_args linux_statfs64; + struct linux_fstatfs64_args linux_fstatfs64; struct linux_tgkill_args linux_tgkill; struct linux_utimes_args linux_utimes; + struct linux_fadvise64_64_args linux_fadvise64_64; + struct linux_mbind_args linux_mbind; + struct linux_get_mempolicy_args linux_get_mempolicy; + struct linux_set_mempolicy_args linux_set_mempolicy; struct linux_mq_open_args linux_mq_open; struct linux_mq_getsetattr_args linux_mq_getsetattr; + struct linux_kexec_load_args linux_kexec_load; + struct linux_waitid_args linux_waitid; + struct linux_add_key_args linux_add_key; + struct linux_request_key_args linux_request_key; + struct linux_keyctl_args linux_keyctl; + struct linux_ioprio_set_args linux_ioprio_set; + struct linux_ioprio_get_args linux_ioprio_get; + struct linux_inotify_init_args linux_inotify_init; + struct linux_inotify_add_watch_args linux_inotify_add_watch; + struct linux_inotify_rm_watch_args linux_inotify_rm_watch; + struct linux_migrate_pages_args linux_migrate_pages; struct linux_openat_args linux_openat; struct linux_mkdirat_args linux_mkdirat; struct linux_mknodat_args linux_mknodat; @@ -212,8 +228,21 @@ union sysunion { struct linux_readlinkat_args linux_readlinkat; struct linux_fchmodat_args linux_fchmodat; struct linux_faccessat_args linux_faccessat; + struct linux_pselect6_args linux_pselect6; + struct linux_ppoll_args linux_ppoll; + struct linux_unshare_args linux_unshare; struct linux_set_robust_list_args linux_set_robust_list; struct linux_get_robust_list_args linux_get_robust_list; + struct linux_splice_args linux_splice; + struct linux_sync_file_range_args linux_sync_file_range; + struct linux_tee_args linux_tee; + struct linux_vmsplice_args linux_vmsplice; + struct linux_move_pages_args linux_move_pages; struct linux_getcpu_args linux_getcpu; + struct linux_epoll_pwait_args linux_epoll_pwait; struct linux_utimensat_args linux_utimensat; + struct linux_signalfd_args linux_signalfd; + struct linux_timerfd_args linux_timerfd; + struct linux_eventfd_args linux_eventfd; + struct linux_pipe2_args linux_pipe2; }; diff --git a/sys/emulation/linux/i386/syscalls.master b/sys/emulation/linux/i386/syscalls.master index 38716d46f0..31c8d0d8b9 100644 --- a/sys/emulation/linux/i386/syscalls.master +++ b/sys/emulation/linux/i386/syscalls.master @@ -397,15 +397,15 @@ 267 STD LINUX { int linux_clock_nanosleep(clockid_t which, int flags, \ struct l_timespec *rqtp, struct l_timespec *rmtp); } 268 STD LINUX { int linux_statfs64(void); } -269 UNIMPL LINUX linux_fstatfs64 +269 STD LINUX { int linux_fstatfs64(void); } 270 STD LINUX { int linux_tgkill(int tgid, int pid, int sig); } 271 STD LINUX { int linux_utimes(char *fname, \ struct l_timeval *tptr); } -272 UNIMPL LINUX linux_fadvise64_64 -273 UNIMPL LINUX linux_nonexistant -274 UNIMPL LINUX linux_mbind -275 UNIMPL LINUX linux_get_mempolicy -276 UNIMPL LINUX linux_set_mempolicy +272 STD LINUX { int linux_fadvise64_64(void); } +273 UNIMPL LINUX /* sys_vserver */ +274 STD LINUX { int linux_mbind(void); } +275 STD LINUX { int linux_get_mempolicy(void); } +276 STD LINUX { int linux_set_mempolicy(void); } 277 STD LINUX { int linux_mq_open(const char *name, int oflag, mode_t mode, \ struct mq_attr *attr); } 278 NOPROTO LINUX { int mq_unlink(const char *name); } @@ -418,18 +418,18 @@ 281 NOPROTO LINUX { int mq_notify(l_mqd_t mqd, const struct sigevent *notification); } 282 STD LINUX { int linux_mq_getsetattr(l_mqd_t mqd, const struct mq_attr *attr, \ struct mq_attr *oattr); } -283 UNIMPL LINUX linux_kexec_load -284 UNIMPL LINUX linux_waitid -285 UNIMPL LINUX linux_nonexistant2 -286 UNIMPL LINUX linux_add_key -287 UNIMPL LINUX linux_request_key -288 UNIMPL LINUX linux_keyctl -289 UNIMPL LINUX linux_ioprio_set -290 UNIMPL LINUX linux_ioprio_get -291 UNIMPL LINUX linux_inotify_init -292 UNIMPL LINUX linux_inotify_add_watch -293 UNIMPL LINUX linux_inotify_rm_watch -294 UNIMPL LINUX linux_migrate_pages +283 STD LINUX { int linux_kexec_load(void); } +284 STD LINUX { int linux_waitid(void); } +285 UNIMPL LINUX /* available */ +286 STD LINUX { int linux_add_key(void); } +287 STD LINUX { int linux_request_key(void); } +288 STD LINUX { int linux_keyctl(void); } +289 STD LINUX { int linux_ioprio_set(void); } +290 STD LINUX { int linux_ioprio_get(void); } +291 STD LINUX { int linux_inotify_init(void); } +292 STD LINUX { int linux_inotify_add_watch(void); } +293 STD LINUX { int linux_inotify_rm_watch(void); } +294 STD LINUX { int linux_migrate_pages(void); } 295 STD LINUX { int linux_openat(l_int dfd, char *path, \ l_int flags, l_int mode); } 296 STD LINUX { int linux_mkdirat(l_int dfd, char *path, \ @@ -455,25 +455,25 @@ 306 STD LINUX { int linux_fchmodat(l_int dfd, char *filename, \ l_mode_t mode); } 307 STD LINUX { int linux_faccessat(l_int dfd, char *filename, l_int mode); } -308 UNIMPL LINUX linux_pselect6 -309 UNIMPL LINUX linux_ppoll -310 UNIMPL LINUX linux_unshare +308 STD LINUX { int linux_pselect6(void); } +309 STD LINUX { int linux_ppoll(void); } +310 STD LINUX { int linux_unshare(void); } 311 STD LINUX { int linux_set_robust_list(struct linux_robust_list_head *head, \ l_size_t len); } 312 STD LINUX { int linux_get_robust_list(l_int pid, struct linux_robust_list_head **head, \ l_size_t *len); } -313 UNIMPL LINUX linux_splice -314 UNIMPL LINUX linux_sync_file_range -315 UNIMPL LINUX linux_tee -316 UNIMPL LINUX linux_vmsplice -317 UNIMPL LINUX linux_move_pages +313 STD LINUX { int linux_splice(void); } +314 STD LINUX { int linux_sync_file_range(void); } +315 STD LINUX { int linux_tee(void); } +316 STD LINUX { int linux_vmsplice(void); } +317 STD LINUX { int linux_move_pages(void); } 318 STD LINUX { int linux_getcpu(l_uint *pcpu, l_uint *pnode, void *ptcache); } -319 UNIMPL LINUX linux_epoll_pwait +319 STD LINUX { int linux_epoll_pwait(void); } 320 STD LINUX { int linux_utimensat(l_int dfd, char *fname, \ struct l_timespec *tptr, l_int flag); } -321 UNIMPL LINUX linux_signalfd -322 UNIMPL LINUX linux_timerfd_create -323 UNIMPL LINUX linux_eventfd +321 STD LINUX { int linux_signalfd(void); } +322 STD LINUX { int linux_timerfd(void); } +323 STD LINUX { int linux_eventfd(void); } 324 UNIMPL LINUX linux_fallocate 325 UNIMPL LINUX linux_timerfd_settime 326 UNIMPL LINUX linux_timerfd_gettime @@ -481,7 +481,7 @@ 328 UNIMPL LINUX linux_eventfd2 329 UNIMPL LINUX linux_epoll_create1 330 UNIMPL LINUX linux_dup3 -331 UNIMPL LINUX linux_pipe2 +331 STD LINUX { int linux_pipe2(l_ulong *pipefds, l_int flags); } 332 UNIMPL LINUX linux_inotify_init1 333 UNIMPL LINUX linux_preadv 334 UNIMPL LINUX linux_pwritev -- 2.41.0