linux - Add syscalls
authorSamuel J. Greear <sjg@thesjg.com>
Wed, 24 Mar 2010 17:50:05 +0000 (11:50 -0600)
committerSamuel J. Greear <sjg@thesjg.com>
Wed, 24 Mar 2010 17:50:05 +0000 (11:50 -0600)
* Stub out a number of syscalls using the DUMMY macro

* Add a preliminary implementation of pipe2

sys/emulation/linux/i386/linux_dummy.c
sys/emulation/linux/i386/linux_machdep.c
sys/emulation/linux/i386/linux_proto.h
sys/emulation/linux/i386/linux_syscall.h
sys/emulation/linux/i386/linux_sysent.c
sys/emulation/linux/i386/linux_union.h
sys/emulation/linux/i386/syscalls.master

index c3dd683..97995c6 100644 (file)
@@ -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                                                            \
index af6b1ee..39d4d50 100644 (file)
@@ -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
  */
index 8e246be..c95ffc9 100644 (file)
@@ -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_
index 85cf4ed..94e8019 100644 (file)
 #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
 #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
index c6948bb..06ffaf7 100644 (file)
@@ -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 */
index 0351fee..0263161 100644 (file)
@@ -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;
 };
index 38716d4..31c8d0d 100644 (file)
 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); }
 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, \
 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
 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