Jim Wintermyre writes:
> At 10:36 PM +0930 5/15/07, Michael Smith wrote:
> >On May 15, 2007, at 5:48 PM, Jim Wintermyre wrote:
> >
> >>So my question is, is this safe? Is there a better way to do this?
> >>I have control over all the clients that will ever call this
> >>function, so I can guarantee that any necessary cleanup will happen
> >>(i.e. if the process crashes in Init while holding the lock that it
> >>will release it etc.).
> >
> >It's really bogus. Better to keep a state variable in the
> >userclient instance and enforce per-client serialisation that way.
>
> OK, so suppose I keep a static in the userclient that the user
> process can set when it needs to trigger serialization across
> processes and multiple driver calls. What do I call from the
> userclient to block the user process thread until the flag is clear?
It is gross, but if you stick with your current model, the only other
alternative is building your own mutex/condvar, which seems "grosser
than gross" to take a term from my elementary school days :)
Can you re-design the protocol with your userclient, such that there
is a single call up front which allocates per-client state and further
calls simply setup that per-client state, so there is no need for
serialization across multiple calls?