dumb KSE question

Julian Elischer julian at elischer.org
Sat Jul 12 12:27:12 PDT 2003



On Sat, 12 Jul 2003, Petri Helenius wrote:

> Julian Elischer wrote:
> 
> >On Fri, 11 Jul 2003, Andrew Gallatin wrote:
> >
> >  
> >
> >>We have a driver which will block a thread in a cv_timewait_sig()
> >>after it calls into driver via an ioctl.  Under libc_r, this will
> >>naturally block the entire process until the driver wakes it up via a
> >>cv_signal().
> >>
> >>I assume that with KSE, the UTS will schedule another thread to run as
> >>a result of calling the cv_timewait_sig()?  Ie, it won't block the
> >>entire process?
> >>    
> >>
> >
> >yes, both libthr and libkse will allow your process to continue, sans
> >thread.
> >
> >  
> >
> Would this also work with netgraph? Say an userland process  waiting for
> "go ahead" signal at  an ioctl  in netgraph node (no data transfer 
> neccessary)?

ANY thread that blocks in ANY WAY will cause the spawning of a new
thread to do more work.
Assuming that the ioctl blocks.
netgraph doesn; impliment ioctls so I don't see how 
this si a netgraph question, unless the netgraph node is CALLING
code that blocks..
(which would be a no-no)

> 
> How expensive in relative terms is cv_signal? Should I moderate calls to
> it if the above works fine othervise? In most cases the wait list would
> be empty, so the question more or less is if I should have a separate 
> indication

Userland cv stuff is relatively cheap in linkse. A bit more expensive in
libthr but still cheap.

> of somebody waiting for the condition or if the infrastructure of cv_* is
> optimized enough to do that for me. I would probably be calling cv_signal
> every time going out from interrupt context in the  driver receiving 
> packets.

Are you talking anout kernel or userland CVs?
I need more info to understand the question..

> 
> Pete
> 
> 
> 



More information about the freebsd-threads mailing list