+ /* method available in Mac OS X 10.4 or later */
+/*!
+ @typedef Action
+ @discussion Type and arguments of callout C function that is used when
+a runCommand is executed by a client. Cast to this type when you want a C++
+member function to be used. Note the arg1 - arg3 parameters are passed straight pass through to the action callout.
+ @param target
+ Target of the function, can be used as a refcon. Note if a C++ function
+was specified, this parameter is implicitly the first parameter in the target
+member function's parameter list.
+ @param arg0 Argument to action from run operation.
+ @param arg1 Argument to action from run operation.
+ @param arg2 Argument to action from run operation.
+ @param arg3 Argument to action from run operation.
+*/
+ typedef IOReturn (*Action)(OSObject *target,
+ void *arg0, void *arg1,
+ void *arg2, void *arg3);
+
+/*! @function runPropertyAction
+ @abstract Single thread a call to an action w.r.t. the property lock
+ @discussion Client function that causes the given action to be called in a manner that syncrhonises with the registry iterators and serialisers. This functin can be used to synchronously manipulate the property table of this nub
+ @param action Pointer to function to be executed in work-loop context.
+ @param arg0 Parameter for action parameter, defaults to 0.
+ @param arg1 Parameter for action parameter, defaults to 0.
+ @param arg2 Parameter for action parameter, defaults to 0.
+ @param arg3 Parameter for action parameter, defaults to 0.
+ @result Returns the value of the Action callout.
+*/
+ virtual IOReturn runPropertyAction(Action action, OSObject *target,
+ void *arg0 = 0, void *arg1 = 0,
+ void *arg2 = 0, void *arg3 = 0);