Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Locking in kernel across user space calls



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?

Drew
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-drivers mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-drivers/email@hidden

This email sent to email@hidden

References: 
 >Locking in kernel across user space calls (From: Jim Wintermyre <email@hidden>)
 >Re: Locking in kernel across user space calls (From: Jim Wintermyre <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.