Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Mar 2005 18:15:55 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 72266 for review
Message-ID:  <200503011815.j21IFttm079593@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=72266

Change 72266 by jhb@jhb_slimer on 2005/03/01 18:15:27

	IFC @72263.

Affected files ...

.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#16 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_util.c#14 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_util.h#12 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_windrv.c#2 integrate
.. //depot/projects/smpng/sys/kern/init_sysent.c#54 integrate
.. //depot/projects/smpng/sys/kern/kern_event.c#37 integrate
.. //depot/projects/smpng/sys/kern/syscalls.c#54 integrate
.. //depot/projects/smpng/sys/kern/syscalls.master#55 integrate
.. //depot/projects/smpng/sys/sys/event.h#14 integrate
.. //depot/projects/smpng/sys/sys/syscall.h#53 integrate
.. //depot/projects/smpng/sys/sys/syscall.mk#53 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#19 integrate
.. //depot/projects/smpng/sys/sys/sysproto.h#55 integrate

Differences ...

==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#16 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.29 2005/03/01 13:50:57 ps Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.30 2005/03/01 17:45:55 ps Exp $");
 
 #include "opt_compat.h"
 
@@ -556,44 +556,34 @@
 int
 freebsd32_kevent(struct thread *td, struct freebsd32_kevent_args *uap)
 {
-	int error;
-	caddr_t sg;
 	struct timespec32 ts32;
-	struct timespec ts;
+	struct timespec ts, *tsp;
+	struct kevent *ks;
 	struct kevent32 ks32;
-	struct kevent *ks;
-	struct kevent_args a;
-	int i;
-
-	sg = stackgap_init();
+	struct kevent *changes, *events;
+	int error, i;
 
-	a.fd = uap->fd;
-	a.changelist = (struct kevent *)uap->changelist;
-	a.nchanges = uap->nchanges;
-	a.eventlist = (struct kevent *)uap->eventlist;
-	a.nevents = uap->nevents;
-	a.timeout = NULL;
 
 	if (uap->timeout) {
-		a.timeout = stackgap_alloc(&sg, sizeof(struct timespec));
 		error = copyin(uap->timeout, &ts32, sizeof(ts32));
 		if (error)
 			return (error);
 		CP(ts32, ts, tv_sec);
 		CP(ts32, ts, tv_nsec);
-		error = copyout(&ts, (void *)(uintptr_t)a.timeout, sizeof(ts));
-		if (error)
-			return (error);
-	}
-	if (uap->changelist) {
-		a.changelist = (struct kevent *)stackgap_alloc(&sg,
-		    uap->nchanges * sizeof(struct kevent));
+		tsp = &ts;
+	} else
+		tsp = NULL;
+	if (uap->changelist && uap->nchanges > 0) {
+		changes = malloc(sizeof(struct kevent) * uap->nchanges, M_TEMP,
+		    M_WAITOK);
 		for (i = 0; i < uap->nchanges; i++) {
 			error = copyin(&uap->changelist[i], &ks32,
 			    sizeof(ks32));
-			if (error)
+			if (error) {
+				free(changes, M_TEMP);
 				return (error);
-			ks = (struct kevent *)(uintptr_t)&a.changelist[i];
+			}
+			ks = &changes[i];
 			CP(ks32, *ks, ident);
 			CP(ks32, *ks, filter);
 			CP(ks32, *ks, flags);
@@ -601,15 +591,19 @@
 			CP(ks32, *ks, data);
 			PTRIN_CP(ks32, *ks, udata);
 		}
-	}
-	if (uap->eventlist) {
-		a.eventlist = stackgap_alloc(&sg,
-		    uap->nevents * sizeof(struct kevent));
-	}
-	error = kevent(td, &a);
-	if (uap->eventlist && error > 0) {
-		for (i = 0; i < error; i++) {
-			ks = &a.eventlist[i];
+	} else
+		changes = NULL;
+	if (uap->eventlist && uap->nevents > 0)
+		events = malloc(sizeof(struct kevent) * uap->nevents, M_TEMP,
+		    M_WAITOK);
+	else
+		events = NULL;
+	error = kern_kevent(td, uap->fd, changes, uap->nchanges, UIO_SYSSPACE,
+	    events, uap->nevents, UIO_SYSSPACE, tsp);
+	free(changes, M_TEMP);
+	if (uap->eventlist && events && td->td_retval[0] > 0) {
+		for (i = 0; i < td->td_retval[0]; i++) {
+			ks = &events[i];
 			CP(*ks, ks32, ident);
 			CP(*ks, ks32, filter);
 			CP(*ks, ks32, flags);
@@ -619,10 +613,12 @@
 			error = copyout(&ks32, &uap->eventlist[i],
 			    sizeof(ks32));
 			if (error)
-				return (error);
+				break;
 		}
 	}
-	return error;
+	if (events)
+		free(events, M_TEMP);
+	return (error);
 }
 
 int

==== //depot/projects/smpng/sys/compat/linux/linux_util.c#14 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_util.c,v 1.28 2005/02/07 18:46:05 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_util.c,v 1.29 2005/03/01 17:57:45 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/lock.h>
@@ -57,39 +57,6 @@
  * be in exists.
  */
 int
-linux_emul_find(td, sgp, path, pbuf, cflag)
-	struct thread	 *td;
-	caddr_t		 *sgp;		/* Pointer to stackgap memory */
-	char		 *path;
-	char		**pbuf;
-	int		  cflag;
-{
-	char *newpath;
-	size_t sz;
-	int error;
-
-	error = linux_emul_convpath(td, path, (sgp == NULL) ? UIO_SYSSPACE :
-	    UIO_USERSPACE, &newpath, cflag);
-	if (newpath == NULL)
-		return (error);
-
-	if (sgp == NULL) {
-		*pbuf = newpath;
-		return (error);
-	}
-
-	sz = strlen(newpath);
-	*pbuf = stackgap_alloc(sgp, sz + 1);
-	if (*pbuf != NULL)
-		error = copyout(newpath, *pbuf, sz + 1);
-	else
-		error = ENAMETOOLONG;
-	free(newpath, M_TEMP);
-
-	return (error);
-}
-
-int
 linux_emul_convpath(td, path, pathseg, pbuf, cflag)
 	struct thread	 *td;
 	char		 *path;

==== //depot/projects/smpng/sys/compat/linux/linux_util.h#12 (text+ko) ====

@@ -28,7 +28,7 @@
  *
  * from: svr4_util.h,v 1.5 1994/11/18 02:54:31 christos Exp
  * from: linux_util.h,v 1.2 1995/03/05 23:23:50 fvdl Exp
- * $FreeBSD: src/sys/compat/linux/linux_util.h,v 1.24 2005/01/05 22:34:35 imp Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_util.h,v 1.25 2005/03/01 17:57:45 jhb Exp $
  */
 
 /*
@@ -78,19 +78,6 @@
 extern const char linux_emul_path[];
 
 int linux_emul_convpath(struct thread *, char *, enum uio_seg, char **, int);
-int linux_emul_find(struct thread *, caddr_t *, char *, char **, int);
-
-#define CHECKALT(td, sgp, path, i) 					\
-	do {								\
-		int _error;						\
-									\
-		_error = linux_emul_find(td, sgp, path, &path, i);	\
-		if (_error == EFAULT)					\
-			return (_error);				\
-	} while (0)
-
-#define CHECKALTEXIST(td, sgp, path) CHECKALT(td, sgp, path, 0)
-#define CHECKALTCREAT(td, sgp, path) CHECKALT(td, sgp, path, 1)
 
 #define LCONVPATH(td, upath, pathp, i) 					\
 	do {								\

==== //depot/projects/smpng/sys/compat/ndis/kern_windrv.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_windrv.c,v 1.4 2005/02/24 21:49:14 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_windrv.c,v 1.5 2005/03/01 17:21:25 wpaul Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -234,7 +234,7 @@
 	image_optional_header	opt_hdr;
 	driver_entry		entry;
 	struct drvdb_ent	*new;
-	struct driver_object	*dobj;
+	struct driver_object	*drv;
 	int			status;
 
 	/*
@@ -277,43 +277,43 @@
 	if (new == NULL)
 		return (ENOMEM);
 
-	dobj = malloc(sizeof(device_object), M_DEVBUF, M_NOWAIT|M_ZERO);
-	if (dobj == NULL) {
+	drv = malloc(sizeof(driver_object), M_DEVBUF, M_NOWAIT|M_ZERO);
+	if (drv == NULL) {
 		free (new, M_DEVBUF);
 		return (ENOMEM);
 	}
 
 	/* Allocate a driver extension structure too. */
 
-	dobj->dro_driverext = malloc(sizeof(driver_extension),
+	drv->dro_driverext = malloc(sizeof(driver_extension),
 	    M_DEVBUF, M_NOWAIT|M_ZERO);
 
-	if (dobj->dro_driverext == NULL) {
+	if (drv->dro_driverext == NULL) {
 		free(new, M_DEVBUF);
-		free(dobj, M_DEVBUF);
+		free(drv, M_DEVBUF);
 		return(ENOMEM);
 	}
 
-	INIT_LIST_HEAD((&dobj->dro_driverext->dre_usrext));
+	INIT_LIST_HEAD((&drv->dro_driverext->dre_usrext));
 
-	dobj->dro_driverstart = (void *)img;
-	dobj->dro_driversize = len;
+	drv->dro_driverstart = (void *)img;
+	drv->dro_driversize = len;
 
-	dobj->dro_drivername.us_len = strlen(DUMMY_REGISTRY_PATH) * 2;
-        dobj->dro_drivername.us_maxlen = strlen(DUMMY_REGISTRY_PATH) * 2;
-        dobj->dro_drivername.us_buf = NULL;
+	drv->dro_drivername.us_len = strlen(DUMMY_REGISTRY_PATH) * 2;
+        drv->dro_drivername.us_maxlen = strlen(DUMMY_REGISTRY_PATH) * 2;
+        drv->dro_drivername.us_buf = NULL;
         ndis_ascii_to_unicode(DUMMY_REGISTRY_PATH,
-	    &dobj->dro_drivername.us_buf);
+	    &drv->dro_drivername.us_buf);
 
-	new->windrv_object = dobj;
+	new->windrv_object = drv;
 
 	/* Now call the DriverEntry() function. */
 
-	status = MSCALL2(entry, dobj, &dobj->dro_drivername);
+	status = MSCALL2(entry, drv, &drv->dro_drivername);
 
 	if (status != STATUS_SUCCESS) {
-		free(dobj->dro_drivername.us_buf, M_DEVBUF);
-		free(dobj, M_DEVBUF);
+		free(drv->dro_drivername.us_buf, M_DEVBUF);
+		free(drv, M_DEVBUF);
 		free(new, M_DEVBUF);
 		return(ENODEV);
 	}

==== //depot/projects/smpng/sys/kern/init_sysent.c#54 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/init_sysent.c,v 1.185 2005/01/26 02:29:18 jeff Exp $
- * created from FreeBSD: src/sys/kern/syscalls.master,v 1.184 2005/01/24 10:49:26 jeff Exp 
+ * $FreeBSD: src/sys/kern/init_sysent.c,v 1.186 2005/03/01 17:44:34 ps Exp $
+ * created from FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp 
  */
 
 #include "opt_compat.h"

==== //depot/projects/smpng/sys/kern/kern_event.c#37 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.88 2005/02/22 13:11:33 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.89 2005/03/01 17:45:55 ps Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -54,6 +54,7 @@
 #include <sys/stat.h>
 #include <sys/sysctl.h>
 #include <sys/sysproto.h>
+#include <sys/syscallsubr.h>
 #include <sys/taskqueue.h>
 #include <sys/uio.h>
 
@@ -80,14 +81,17 @@
 
 TASKQUEUE_DEFINE_THREAD(kqueue);
 
+static int	kevent_copyout(struct kevent **eventlist, enum uio_seg eventseg,
+		    struct kevent *kevp, int count);
 static int	kqueue_aquire(struct file *fp, struct kqueue **kqp);
 static void	kqueue_release(struct kqueue *kq, int locked);
 static int	kqueue_expand(struct kqueue *kq, struct filterops *fops,
 		    uintptr_t ident, int waitok);
 static void	kqueue_task(void *arg, int pending);
 static int	kqueue_scan(struct kqueue *kq, int maxevents,
-		    struct kevent *ulistp, const struct timespec *timeout,
-		    struct kevent *keva, struct thread *td);
+		    struct kevent *eventlist, enum uio_seg eventseg,
+		    const struct timespec *timeout, struct kevent *keva,
+		    struct thread *td);
 static void 	kqueue_wakeup(struct kqueue *kq);
 static struct filterops *kqueue_fo_find(int filt);
 static void	kqueue_fo_release(int filt);
@@ -531,54 +535,91 @@
 int
 kevent(struct thread *td, struct kevent_args *uap)
 {
+	struct timespec ts, *tsp;
+	int error;
+
+	if (uap->timeout != NULL) {
+		error = copyin(uap->timeout, &ts, sizeof(ts));
+		if (error)
+			return (error);
+		tsp = &ts;
+	} else
+		tsp = NULL;
+
+	return (kern_kevent(td, uap->fd, uap->changelist, uap->nchanges,
+	    UIO_USERSPACE, uap->eventlist, uap->nevents, UIO_USERSPACE, tsp));
+}
+
+/*
+ * Copy 'count' items into the destination list pointd to by *eventlist.  The
+ * eventlist and nevents values are updated to point after the copied out
+ * item(s) upon return.
+ */
+static int
+kevent_copyout(struct kevent **eventlist, enum uio_seg eventseg,
+    struct kevent *kevp, int count)
+{
+	int error;
+
+	if (eventseg == UIO_USERSPACE)
+		error = copyout(kevp, *eventlist,
+		    sizeof(struct kevent) * count);
+	else {
+		bcopy(kevp, *eventlist, sizeof(struct kevent) * count);
+		error = 0;
+	}
+	*eventlist += count;
+	return (error);
+}
+
+int
+kern_kevent(struct thread *td, int fd, struct kevent *changelist, int nchanges,
+    enum uio_seg changeseg, struct kevent *eventlist, int nevents,
+    enum uio_seg eventseg, const struct timespec *timeout)
+{
 	struct kevent keva[KQ_NEVENTS];
-	struct kevent *kevp;
+	struct kevent *kevp, *changes;
 	struct kqueue *kq;
 	struct file *fp;
-	struct timespec ts;
 	int i, n, nerrors, error;
 
-	if ((error = fget(td, uap->fd, &fp)) != 0)
+	if ((error = fget(td, fd, &fp)) != 0)
 		return (error);
 	if ((error = kqueue_aquire(fp, &kq)) != 0)
 		goto done_norel;
 
-	if (uap->timeout != NULL) {
-		error = copyin(uap->timeout, &ts, sizeof(ts));
-		if (error)
-			goto done;
-		uap->timeout = &ts;
-	}
-
 	nerrors = 0;
 
-	while (uap->nchanges > 0) {
-		n = uap->nchanges > KQ_NEVENTS ? KQ_NEVENTS : uap->nchanges;
-		error = copyin(uap->changelist, keva,
-		    n * sizeof *keva);
-		if (error)
-			goto done;
+	while (nchanges > 0) {
+		if (changeseg == UIO_USERSPACE) {
+			n = nchanges > KQ_NEVENTS ? KQ_NEVENTS : nchanges;
+			error = copyin(changelist, keva, n * sizeof *keva);
+			if (error)
+				goto done;
+			changes = keva;
+		} else {
+			changes = changelist;
+			n = nchanges;
+		}
 		for (i = 0; i < n; i++) {
-			kevp = &keva[i];
+			kevp = &changes[i];
 			kevp->flags &= ~EV_SYSFLAGS;
 			error = kqueue_register(kq, kevp, td, 1);
 			if (error) {
-				if (uap->nevents != 0) {
+				if (nevents != 0) {
 					kevp->flags = EV_ERROR;
 					kevp->data = error;
-					(void) copyout(kevp,
-					    uap->eventlist,
-					    sizeof(*kevp));
-					uap->eventlist++;
-					uap->nevents--;
+					(void) kevent_copyout(&eventlist,
+					    eventseg, kevp, 1);
+					nevents--;
 					nerrors++;
 				} else {
 					goto done;
 				}
 			}
 		}
-		uap->nchanges -= n;
-		uap->changelist += n;
+		nchanges -= n;
+		changelist += n;
 	}
 	if (nerrors) {
 		td->td_retval[0] = nerrors;
@@ -586,7 +627,7 @@
 		goto done;
 	}
 
-	error = kqueue_scan(kq, uap->nevents, uap->eventlist, uap->timeout,
+	error = kqueue_scan(kq, nevents, eventlist, eventseg, timeout,
 	    keva, td);
 done:
 	kqueue_release(kq, 0);
@@ -1046,8 +1087,9 @@
  * We treat KN_MARKER knotes as if they are INFLUX.
  */
 static int
-kqueue_scan(struct kqueue *kq, int maxevents, struct kevent *ulistp,
-	const struct timespec *tsp, struct kevent *keva, struct thread *td)
+kqueue_scan(struct kqueue *kq, int maxevents, struct kevent *eventlist,
+    enum uio_seg eventseg, const struct timespec *tsp, struct kevent *keva,
+    struct thread *td)
 {
 	struct kevent *kevp;
 	struct timeval atv, rtv, ttv;
@@ -1200,8 +1242,8 @@
 
 		if (nkev == KQ_NEVENTS) {
 			KQ_UNLOCK_FLUX(kq);
-			error = copyout(keva, ulistp, sizeof *keva * nkev);
-			ulistp += nkev;
+			error = kevent_copyout(&eventlist, eventseg, keva,
+			    nkev);
 			nkev = 0;
 			kevp = keva;
 			KQ_LOCK(kq);
@@ -1218,7 +1260,7 @@
 done_nl:
 	KQ_NOTOWNED(kq);
 	if (nkev != 0)
-		error = copyout(keva, ulistp, sizeof *keva * nkev);
+		error = kevent_copyout(&eventlist, eventseg, keva, nkev);
 	td->td_retval[0] = maxevents - count;
 	return (error);
 }

==== //depot/projects/smpng/sys/kern/syscalls.c#54 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/syscalls.c,v 1.171 2005/01/26 02:29:18 jeff Exp $
- * created from FreeBSD: src/sys/kern/syscalls.master,v 1.184 2005/01/24 10:49:26 jeff Exp 
+ * $FreeBSD: src/sys/kern/syscalls.c,v 1.172 2005/03/01 17:44:34 ps Exp $
+ * created from FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp 
  */
 
 const char *syscallnames[] = {

==== //depot/projects/smpng/sys/kern/syscalls.master#55 (text+ko) ====

@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/kern/syscalls.master,v 1.185 2005/01/26 02:28:43 jeff Exp $
+ $FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp $
 ;	from: @(#)syscalls.master	8.2 (Berkeley) 1/13/94
 ;
 ; System call name/number master file.
@@ -515,7 +515,7 @@
 361	MSTD	{ int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
 362	MSTD	{ int kqueue(void); }
 363	MSTD	{ int kevent(int fd, \
-		    const struct kevent *changelist, int nchanges, \
+		    struct kevent *changelist, int nchanges, \
 		    struct kevent *eventlist, int nevents, \
 		    const struct timespec *timeout); }
 364	UNIMPL	__cap_get_proc

==== //depot/projects/smpng/sys/sys/event.h#14 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/event.h,v 1.26 2004/08/15 15:36:18 jmg Exp $
+ * $FreeBSD: src/sys/sys/event.h,v 1.27 2005/03/01 17:45:55 ps Exp $
  */
 
 #ifndef _SYS_EVENT_H_
@@ -221,7 +221,7 @@
 
 __BEGIN_DECLS
 int     kqueue(void);
-int     kevent(int kq, const struct kevent *changelist, int nchanges,
+int     kevent(int kq, struct kevent *changelist, int nchanges,
 	    struct kevent *eventlist, int nevents,
 	    const struct timespec *timeout);
 __END_DECLS

==== //depot/projects/smpng/sys/sys/syscall.h#53 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/sys/syscall.h,v 1.168 2005/01/26 02:29:18 jeff Exp $
- * created from FreeBSD: src/sys/kern/syscalls.master,v 1.184 2005/01/24 10:49:26 jeff Exp 
+ * $FreeBSD: src/sys/sys/syscall.h,v 1.169 2005/03/01 17:44:34 ps Exp $
+ * created from FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp 
  */
 
 #define	SYS_syscall	0

==== //depot/projects/smpng/sys/sys/syscall.mk#53 (text+ko) ====

@@ -1,7 +1,7 @@
 # FreeBSD system call names.
 # DO NOT EDIT-- this file is automatically generated.
-# $FreeBSD: src/sys/sys/syscall.mk,v 1.123 2005/01/26 02:29:18 jeff Exp $
-# created from FreeBSD: src/sys/kern/syscalls.master,v 1.184 2005/01/24 10:49:26 jeff Exp 
+# $FreeBSD: src/sys/sys/syscall.mk,v 1.124 2005/03/01 17:44:34 ps Exp $
+# created from FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp 
 MIASM =  \
 	syscall.o \
 	exit.o \

==== //depot/projects/smpng/sys/sys/syscallsubr.h#19 (text+ko) ====

@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.25 2005/02/13 17:37:20 sobomax Exp $
+ * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.26 2005/03/01 17:44:34 ps Exp $
  */
 
 #ifndef _SYS_SYSCALLSUBR_H_
@@ -43,6 +43,7 @@
 struct rusage;
 struct sockaddr;
 struct stat;
+struct kevent;
 
 int	kern___getcwd(struct thread *td, u_char *buf, enum uio_seg bufseg,
 	    u_int buflen);
@@ -69,6 +70,9 @@
 int	kern_getrusage(struct thread *td, int who, struct rusage *rup);
 int	kern_getsockopt(struct thread *td, int s, int level, int name,
 	    void *optval, enum uio_seg valseg, socklen_t *valsize);
+int	kern_kevent(struct thread *td, int fd, struct kevent *changelist,
+	    int nchanges, enum uio_seg changeseg, struct kevent *eventlist,
+	    int nevents, enum uio_seg eventseg, const struct timespec *timeout);
 int	kern_lchown(struct thread *td, char *path, enum uio_seg pathseg,
 	    int uid, int gid);
 int	kern_link(struct thread *td, char *path, char *link,

==== //depot/projects/smpng/sys/sys/sysproto.h#55 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/sys/sysproto.h,v 1.167 2005/01/26 02:29:18 jeff Exp $
- * created from FreeBSD: src/sys/kern/syscalls.master,v 1.184 2005/01/24 10:49:26 jeff Exp 
+ * $FreeBSD: src/sys/sys/sysproto.h,v 1.168 2005/03/01 17:44:34 ps Exp $
+ * created from FreeBSD: src/sys/kern/syscalls.master,v 1.186 2005/03/01 17:43:08 ps Exp 
  */
 
 #ifndef _SYS_SYSPROTO_H_
@@ -1009,7 +1009,7 @@
 };
 struct kevent_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
-	char changelist_l_[PADL_(const struct kevent *)]; const struct kevent * changelist; char changelist_r_[PADR_(const struct kevent *)];
+	char changelist_l_[PADL_(struct kevent *)]; struct kevent * changelist; char changelist_r_[PADR_(struct kevent *)];
 	char nchanges_l_[PADL_(int)]; int nchanges; char nchanges_r_[PADR_(int)];
 	char eventlist_l_[PADL_(struct kevent *)]; struct kevent * eventlist; char eventlist_r_[PADR_(struct kevent *)];
 	char nevents_l_[PADL_(int)]; int nevents; char nevents_r_[PADR_(int)];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503011815.j21IFttm079593>