On Mon, 2007-06-04 at 10:51 -0700, Stephen Hemminger wrote: > > 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 > > > > Yes, the following patch makes iperf work better than ever. > But are other broken applications going to have same problem. > Sounds like the old "who runs first" fork() problems. Not really. The fork() "who runs first" problem is nowhere specified. usleep(0) is well defined: .... If the value of useconds is 0, then the call has no effect. So the call into the kernel has been wrong for quite a time. 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