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




On May 16, 2007, at 2:03 AM, Jim Wintermyre wrote:

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?

I understood from your description that the state was per-client, not global to all clients.


If that's the case, use an ivar in the userclient class. If the state is global to all user clients then keep the state in the driver class; this gets a bit uglier because you need to handle client death (use the clientDied[?] method in the userclient to handle this and revoke your state).

 = Mike

_______________________________________________
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.