sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-08-21 03:05:03 +00:00
parent cb9f36df51
commit 6b5b190599
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
48 changed files with 1492 additions and 422 deletions

View file

@ -1,10 +1,10 @@
/* $OpenBSD: init_sysent.c,v 1.267 2023/07/24 19:33:29 miod Exp $ */
/* $OpenBSD: init_sysent.c,v 1.268 2023/08/20 15:14:20 visa Exp $ */
/*
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
* created from; OpenBSD: syscalls.master,v 1.249 2023/07/24 19:32:23 miod Exp
* created from; OpenBSD: syscalls.master,v 1.250 2023/08/20 15:13:43 visa Exp
*/
#include <sys/param.h>
@ -604,8 +604,8 @@ const struct sysent sysent[] = {
sys_nosys }, /* 268 = obsolete pad_pwritev */
{ 0, 0, SY_NOLOCK | 0,
sys_kqueue }, /* 269 = kqueue */
{ 0, 0, 0,
sys_nosys }, /* 270 = obsolete t32_kevent */
{ 1, s(struct sys_kqueue1_args), SY_NOLOCK | 0,
sys_kqueue1 }, /* 270 = kqueue1 */
{ 1, s(struct sys_mlockall_args), 0,
sys_mlockall }, /* 271 = mlockall */
{ 0, 0, 0,

View file

@ -1,4 +1,4 @@
/* $OpenBSD: kern_event.c,v 1.197 2023/08/13 08:29:28 visa Exp $ */
/* $OpenBSD: kern_event.c,v 1.198 2023/08/20 15:13:43 visa Exp $ */
/*-
* Copyright (c) 1999,2000,2001 Jonathan Lemon <jlemon@FreeBSD.org>
@ -60,6 +60,7 @@
#define KLIST_ASSERT_LOCKED(kl) ((void)(kl))
#endif
int dokqueue(struct proc *, int, register_t *);
struct kqueue *kqueue_alloc(struct filedesc *);
void kqueue_terminate(struct proc *p, struct kqueue *);
void KQREF(struct kqueue *);
@ -912,12 +913,14 @@ kqueue_alloc(struct filedesc *fdp)
}
int
sys_kqueue(struct proc *p, void *v, register_t *retval)
dokqueue(struct proc *p, int flags, register_t *retval)
{
struct filedesc *fdp = p->p_fd;
struct kqueue *kq;
struct file *fp;
int fd, error;
int cloexec, error, fd;
cloexec = (flags & O_CLOEXEC) ? UF_EXCLOSE : 0;
kq = kqueue_alloc(fdp);
@ -925,14 +928,14 @@ sys_kqueue(struct proc *p, void *v, register_t *retval)
error = falloc(p, &fp, &fd);
if (error)
goto out;
fp->f_flag = FREAD | FWRITE;
fp->f_flag = FREAD | FWRITE | (flags & FNONBLOCK);
fp->f_type = DTYPE_KQUEUE;
fp->f_ops = &kqueueops;
fp->f_data = kq;
*retval = fd;
LIST_INSERT_HEAD(&fdp->fd_kqlist, kq, kq_next);
kq = NULL;
fdinsert(fdp, fd, 0, fp);
fdinsert(fdp, fd, cloexec, fp);
FRELE(fp, p);
out:
fdpunlock(fdp);
@ -941,6 +944,24 @@ out:
return (error);
}
int
sys_kqueue(struct proc *p, void *v, register_t *retval)
{
return (dokqueue(p, 0, retval));
}
int
sys_kqueue1(struct proc *p, void *v, register_t *retval)
{
struct sys_kqueue1_args /* {
syscallarg(int) flags;
} */ *uap = v;
if (SCARG(uap, flags) & ~(O_CLOEXEC | FNONBLOCK))
return (EINVAL);
return (dokqueue(p, SCARG(uap, flags), retval));
}
int
sys_kevent(struct proc *p, void *v, register_t *retval)
{

View file

@ -1,4 +1,4 @@
/* $OpenBSD: kern_pledge.c,v 1.306 2023/06/02 17:44:29 cheloha Exp $ */
/* $OpenBSD: kern_pledge.c,v 1.307 2023/08/20 15:13:43 visa Exp $ */
/*
* Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
@ -209,6 +209,7 @@ const uint64_t pledge_syscalls[SYS_MAXSYSCALL] = {
[SYS_ppoll] = PLEDGE_STDIO,
[SYS_kevent] = PLEDGE_STDIO,
[SYS_kqueue] = PLEDGE_STDIO,
[SYS_kqueue1] = PLEDGE_STDIO,
[SYS_select] = PLEDGE_STDIO,
[SYS_pselect] = PLEDGE_STDIO,

View file

@ -1,10 +1,10 @@
/* $OpenBSD: syscalls.c,v 1.265 2023/07/24 19:33:29 miod Exp $ */
/* $OpenBSD: syscalls.c,v 1.266 2023/08/20 15:14:20 visa Exp $ */
/*
* System call names.
*
* DO NOT EDIT-- this file is automatically generated.
* created from; OpenBSD: syscalls.master,v 1.249 2023/07/24 19:32:23 miod Exp
* created from; OpenBSD: syscalls.master,v 1.250 2023/08/20 15:13:43 visa Exp
*/
const char *const syscallnames[] = {
@ -312,7 +312,7 @@ const char *const syscallnames[] = {
"#267 (obsolete pad_preadv)", /* 267 = obsolete pad_preadv */
"#268 (obsolete pad_pwritev)", /* 268 = obsolete pad_pwritev */
"kqueue", /* 269 = kqueue */
"#270 (obsolete t32_kevent)", /* 270 = obsolete t32_kevent */
"kqueue1", /* 270 = kqueue1 */
"mlockall", /* 271 = mlockall */
"munlockall", /* 272 = munlockall */
"#273 (unimplemented sys_getpeereid)", /* 273 = unimplemented sys_getpeereid */

View file

@ -1,4 +1,4 @@
; $OpenBSD: syscalls.master,v 1.249 2023/07/24 19:32:23 miod Exp $
; $OpenBSD: syscalls.master,v 1.250 2023/08/20 15:13:43 visa Exp $
; $NetBSD: syscalls.master,v 1.32 1996/04/23 10:24:21 mycroft Exp $
; @(#)syscalls.master 8.2 (Berkeley) 1/13/94
@ -462,7 +462,7 @@
267 OBSOL pad_preadv
268 OBSOL pad_pwritev
269 STD NOLOCK { int sys_kqueue(void); }
270 OBSOL t32_kevent
270 STD NOLOCK { int sys_kqueue1(int flags); }
271 STD { int sys_mlockall(int flags); }
272 STD { int sys_munlockall(void); }
273 UNIMPL sys_getpeereid