> lis_head_put_fcn() is the deepest and most contorted
> atomic_dec_and_test that I have seen.
I have some similar concerns about lis_setqsched()function.
It takes lis_spin_lock_irqsave() at the beginning and then it is
possible that it will do a number of lis_up() calls while still
holding that lock. (inside ... /* find a sleeping thread */ loop)
The lis_setqsched() algorithms is overall a bit questionable.
Comments says intention was not to wake up a new proc if
enough of them are already running. But looking through code I see
that it always will either call lis_run_queues() directly or will
wake up new process(es).
Some minor things like repetitive initialization:
queue_load_thresh = 4 * queues_running ;
int qthreshold = 4*queues_running ;
or
if (lis_atomic_read(&lis_runq_cnt) == 0)
{
}
runq_cnt = lis_atomic_read(&lis_runq_cnt) ;
Although, that function possible ineffeciencies do not
explain pipe or my module loopback performance problems.
With the loopback streamimg that function does not do anything.
Nevertheless it may affect wire transfers.
--
Eugene
__________________________________________________________________
Introducing the New Netscape Internet Service.
Only $9.95 a month -- Sign up today at http://isp.netscape.com/register
Netscape. Just the Net You Need.
New! Netscape Toolbar for Internet Explorer
Search from anywhere on the Web and block those annoying pop-ups.
Download now at http://channels.netscape.com/ns/search/install.jsp
_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams