david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2015-07-08 16:24:11 +01:00
parent 6bc3d99496
commit 81c80c8ba9
2 changed files with 30 additions and 0 deletions

View File

@ -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 );
}

View File

@ -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;