On Mon, 2007-06-04 at 09:59 -0700, Stephen Hemminger wrote: > > > gettimeofday({1180973726, 982754}, NULL) = 0 > > > recv(4, "\0\0\0\0\0\0\0\1\0\0\23\211\0\0\0\0\0\0\0\0\377\377\364"..., 8192, 0) = 8192 > > > gettimeofday({1180973726, 983790}, NULL) = 0 > > > > Well, gettimeofday() is not affected by the highres code, but > > > > > nanosleep({0, 0}, NULL) = 0 > > > nanosleep({0, 0}, NULL) = 0 > > > > is. The nanosleep call with a relative timeout of 0 returns immediately > > with highres enabled, while it sleeps at least until the next tick > > arrives when highres is off. Are there more of those stupid sleeps in > > the code ? > > GLIBC pthread_mutex does it, YES it is a problem! > Looks like the old behavior is required for ABI compatibility. > > iperf server has several threads. One thread is using pthread_mutex_lock > to wait for the other thread. It looks like pthread_mutex_lock is using > nanosleep as yield(). I doubt that. This is in the iperf code itself. void thread_rest ( void ) { #if defined( HAVE_THREAD ) #if defined( HAVE_POSIX_THREAD ) // TODO add checks for sched_yield or pthread_yield and call that // if available usleep( 0 ); ----------^^^^ It results in a nanosleep({0,0}, NULL) tglx - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html