svn commit: r238499 - projects/calloutng/sys/kern

Davide Italiano davide at FreeBSD.org
Sun Jul 15 19:32:02 UTC 2012


Author: davide
Date: Sun Jul 15 19:32:02 2012
New Revision: 238499
URL: http://svn.freebsd.org/changeset/base/238499

Log:
  Enable execution of callout from hw interrupt context rather than sw
  interrupt context for kern_nanosleep() and seltdwait(). This change improves
  precision for select()/poll()/usleep()/nanosleep() services.

Modified:
  projects/calloutng/sys/kern/kern_time.c
  projects/calloutng/sys/kern/sys_generic.c

Modified: projects/calloutng/sys/kern/kern_time.c
==============================================================================
--- projects/calloutng/sys/kern/kern_time.c	Sun Jul 15 19:10:00 2012	(r238498)
+++ projects/calloutng/sys/kern/kern_time.c	Sun Jul 15 19:32:02 2012	(r238499)
@@ -367,7 +367,7 @@ kern_nanosleep(struct thread *td, struct
 	for (;;) {
 		sleepq_lock(&nanowait);	
 		sleepq_add(&nanowait, NULL, "nanslp", PWAIT | PCATCH, 0);
-		sleepq_set_timeout_bt(&nanowait, &bt, 0);
+		sleepq_set_timeout_bt(&nanowait, &bt, C_DIRECT_EXEC);
 		error = sleepq_timedwait_sig(&nanowait, PWAIT | PCATCH);
 		binuptime(&bt2);
 		if (error != EWOULDBLOCK) {

Modified: projects/calloutng/sys/kern/sys_generic.c
==============================================================================
--- projects/calloutng/sys/kern/sys_generic.c	Sun Jul 15 19:10:00 2012	(r238498)
+++ projects/calloutng/sys/kern/sys_generic.c	Sun Jul 15 19:32:02 2012	(r238499)
@@ -1723,7 +1723,7 @@ seltdwait(struct thread *td, struct bint
 		error = cv_timedwait_sig(&stp->st_wait, &stp->st_mtx, timo);
 	else if (bt != NULL)
 		error = cv_timedwait_bt_sig(&stp->st_wait, &stp->st_mtx, 
-		    bt, 0);
+		    bt, C_DIRECT_EXEC);
 	else	
 		error = cv_wait_sig(&stp->st_wait, &stp->st_mtx);
 	mtx_unlock(&stp->st_mtx);


More information about the svn-src-projects mailing list