Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Sep 2013 07:45:38 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r255729 - in stable/9/sys: kern sys
Message-ID:  <201309200745.r8K7jcMc071749@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri Sep 20 07:45:37 2013
New Revision: 255729
URL: http://svnweb.freebsd.org/changeset/base/255729

Log:
  MFC r255527:
  Use TAILQ instead of STAILQ for kqeueue filedescriptors to ensure constant
  time removal on kqueue close.

Modified:
  stable/9/sys/kern/kern_event.c
  stable/9/sys/sys/event.h
  stable/9/sys/sys/eventvar.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/sys/   (props changed)

Modified: stable/9/sys/kern/kern_event.c
==============================================================================
--- stable/9/sys/kern/kern_event.c	Fri Sep 20 07:35:08 2013	(r255728)
+++ stable/9/sys/kern/kern_event.c	Fri Sep 20 07:45:37 2013	(r255729)
@@ -707,7 +707,7 @@ sys_kqueue(struct thread *td, struct kqu
 	TASK_INIT(&kq->kq_task, 0, kqueue_task, kq);
 
 	FILEDESC_XLOCK(fdp);
-	SLIST_INSERT_HEAD(&fdp->fd_kqlist, kq, kq_list);
+	TAILQ_INSERT_HEAD(&fdp->fd_kqlist, kq, kq_list);
 	FILEDESC_XUNLOCK(fdp);
 
 	finit(fp, FREAD | FWRITE, DTYPE_KQUEUE, kq, &kqueueops);
@@ -1708,7 +1708,7 @@ kqueue_close(struct file *fp, struct thr
 	KQ_UNLOCK(kq);
 
 	FILEDESC_XLOCK(fdp);
-	SLIST_REMOVE(&fdp->fd_kqlist, kq, kqueue, kq_list);
+	TAILQ_REMOVE(&fdp->fd_kqlist, kq, kq_list);
 	FILEDESC_XUNLOCK(fdp);
 
 	seldrain(&kq->kq_sel);
@@ -2044,7 +2044,7 @@ knote_fdclose(struct thread *td, int fd)
 	 * We shouldn't have to worry about new kevents appearing on fd
 	 * since filedesc is locked.
 	 */
-	SLIST_FOREACH(kq, &fdp->fd_kqlist, kq_list) {
+	TAILQ_FOREACH(kq, &fdp->fd_kqlist, kq_list) {
 		KQ_LOCK(kq);
 
 again:

Modified: stable/9/sys/sys/event.h
==============================================================================
--- stable/9/sys/sys/event.h	Fri Sep 20 07:35:08 2013	(r255728)
+++ stable/9/sys/sys/event.h	Fri Sep 20 07:45:37 2013	(r255729)
@@ -134,7 +134,7 @@ struct kevent {
 struct knote;
 SLIST_HEAD(klist, knote);
 struct kqueue;
-SLIST_HEAD(kqlist, kqueue);
+TAILQ_HEAD(kqlist, kqueue);
 struct knlist {
 	struct	klist	kl_list;
 	void    (*kl_lock)(void *);	/* lock function */

Modified: stable/9/sys/sys/eventvar.h
==============================================================================
--- stable/9/sys/sys/eventvar.h	Fri Sep 20 07:35:08 2013	(r255728)
+++ stable/9/sys/sys/eventvar.h	Fri Sep 20 07:45:37 2013	(r255729)
@@ -41,7 +41,7 @@
 struct kqueue {
 	struct		mtx kq_lock;
 	int		kq_refcnt;
-	SLIST_ENTRY(kqueue)	kq_list;
+	TAILQ_ENTRY(kqueue)	kq_list;
 	TAILQ_HEAD(, knote)	kq_head;	/* list of pending event */
 	int		kq_count;		/* number of pending events */
 	struct		selinfo kq_sel;



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