diff options
author | dchagin <dchagin@FreeBSD.org> | 2017-03-30 20:08:25 +0000 |
---|---|---|
committer | dchagin <dchagin@FreeBSD.org> | 2017-03-30 20:08:25 +0000 |
commit | 9a78265c32475a07e7c0b167183d65908ac80eef (patch) | |
tree | 3f66dea791d83ca5e79e5699fb2ec09f1eb67db2 /sys/i386 | |
parent | 5b761cd12823827d9fe7fa1c6304d79bd41e4528 (diff) | |
download | FreeBSD-src-9a78265c32475a07e7c0b167183d65908ac80eef.zip FreeBSD-src-9a78265c32475a07e7c0b167183d65908ac80eef.tar.gz |
MFC r314312:
Change Linux epoll_pwait syscall definition to match Linux actual one.
MFC r314313:
Regen for r314312 (Linux epoll_pwait).
MFC r314314:
Return EINVAL in case when an invalid size of signal mask specified.
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/linux/linux_proto.h | 1 | ||||
-rw-r--r-- | sys/i386/linux/linux_systrace_args.c | 6 | ||||
-rw-r--r-- | sys/i386/linux/syscalls.master | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/sys/i386/linux/linux_proto.h b/sys/i386/linux/linux_proto.h index cf98962..54dac5d 100644 --- a/sys/i386/linux/linux_proto.h +++ b/sys/i386/linux/linux_proto.h @@ -1070,6 +1070,7 @@ struct linux_epoll_pwait_args { char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; struct linux_utimensat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; diff --git a/sys/i386/linux/linux_systrace_args.c b/sys/i386/linux/linux_systrace_args.c index 6b7dd2d..62a6cc7 100644 --- a/sys/i386/linux/linux_systrace_args.c +++ b/sys/i386/linux/linux_systrace_args.c @@ -2245,7 +2245,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) iarg[2] = p->maxevents; /* l_int */ iarg[3] = p->timeout; /* l_int */ uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */ - *n_args = 5; + iarg[5] = p->sigsetsize; /* l_size_t */ + *n_args = 6; break; } /* linux_utimensat */ @@ -6212,6 +6213,9 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) case 4: p = "l_sigset_t *"; break; + case 5: + p = "l_size_t"; + break; default: break; }; diff --git a/sys/i386/linux/syscalls.master b/sys/i386/linux/syscalls.master index 50c5a63..7ef682a 100644 --- a/sys/i386/linux/syscalls.master +++ b/sys/i386/linux/syscalls.master @@ -541,7 +541,8 @@ ; linux 2.6.19: 318 AUE_NULL STD { int linux_getcpu(void); } 319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ - l_int maxevents, l_int timeout, l_sigset_t *mask); } + l_int maxevents, l_int timeout, l_sigset_t *mask, \ + l_size_t sigsetsize); } ; linux 2.6.22: 320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ const struct l_timespec *times, l_int flags); } |