mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 04:20:17 +03:00
[interface] Provide intf_reinit() to reinitialise nullified interfaces
Provide an abstraction intf_reinit() to restore the descriptor of a previously nullified interface. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -123,6 +123,11 @@ struct interface {
|
||||
struct refcnt *refcnt;
|
||||
/** Interface descriptor */
|
||||
struct interface_descriptor *desc;
|
||||
/** Original interface descriptor
|
||||
*
|
||||
* Used by intf_reinit().
|
||||
*/
|
||||
struct interface_descriptor *original;
|
||||
};
|
||||
|
||||
extern void intf_plug ( struct interface *intf, struct interface *dest );
|
||||
@@ -166,6 +171,7 @@ static inline void intf_init ( struct interface *intf,
|
||||
intf->dest = &null_intf;
|
||||
intf->refcnt = refcnt;
|
||||
intf->desc = desc;
|
||||
intf->original = desc;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,6 +183,7 @@ static inline void intf_init ( struct interface *intf,
|
||||
.dest = &null_intf, \
|
||||
.refcnt = NULL, \
|
||||
.desc = &(descriptor), \
|
||||
.original = &(descriptor), \
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -236,4 +243,15 @@ static inline void intf_init ( struct interface *intf,
|
||||
*/
|
||||
#define INTF_INTF_DBG( intf, dest ) INTF_DBG ( intf ), INTF_DBG ( dest )
|
||||
|
||||
/**
|
||||
* Reinitialise an object interface
|
||||
*
|
||||
* @v intf Object interface
|
||||
*/
|
||||
static inline void intf_reinit ( struct interface *intf ) {
|
||||
|
||||
/* Restore original interface descriptor */
|
||||
intf->desc = intf->original;
|
||||
}
|
||||
|
||||
#endif /* _IPXE_INTERFACE_H */
|
||||
|
||||
Reference in New Issue
Block a user