mirror of https://github.com/ipxe/ipxe.git
[interface] Add intf_poke() helper
Reduce the cost of implementing object methods which convey no information beyond the fact that the method has been called. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/38/head
parent
6bc3d99496
commit
81c80c8ba9
|
@ -311,3 +311,28 @@ void intf_restart ( struct interface *intf, int rc ) {
|
|||
*/
|
||||
intf->desc = desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Poke an object interface
|
||||
*
|
||||
* @v intf Object interface
|
||||
* @v type Operation type
|
||||
*
|
||||
* This is a helper function to implement methods which take no
|
||||
* parameters and return nothing.
|
||||
*/
|
||||
void intf_poke ( struct interface *intf,
|
||||
void ( type ) ( struct interface *intf ) ) {
|
||||
struct interface *dest;
|
||||
intf_poke_TYPE ( void * ) *op =
|
||||
intf_get_dest_op_untyped ( intf, type, &dest );
|
||||
void *object = intf_object ( dest );
|
||||
|
||||
if ( op ) {
|
||||
op ( object );
|
||||
} else {
|
||||
/* Default is to do nothing */
|
||||
}
|
||||
|
||||
intf_put ( dest );
|
||||
}
|
||||
|
|
|
@ -145,6 +145,11 @@ extern void intf_close ( struct interface *intf, int rc );
|
|||
extern void intf_shutdown ( struct interface *intf, int rc );
|
||||
extern void intf_restart ( struct interface *intf, int rc );
|
||||
|
||||
extern void intf_poke ( struct interface *intf,
|
||||
void ( type ) ( struct interface *intf ) );
|
||||
#define intf_poke_TYPE( object_type ) \
|
||||
typeof ( void ( object_type ) )
|
||||
|
||||
extern struct interface_descriptor null_intf_desc;
|
||||
extern struct interface null_intf;
|
||||
|
||||
|
|
Loading…
Reference in New Issue