mirror of
https://github.com/ipxe/ipxe
synced 2025-12-12 06:22:01 +03:00
[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:
@@ -311,3 +311,28 @@ void intf_restart ( struct interface *intf, int rc ) {
|
|||||||
*/
|
*/
|
||||||
intf->desc = desc;
|
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_shutdown ( struct interface *intf, int rc );
|
||||||
extern void intf_restart ( 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_descriptor null_intf_desc;
|
||||||
extern struct interface null_intf;
|
extern struct interface null_intf;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user