extern void efi_snp_hii_uninstall ( struct efi_snp_device *snpdev );
extern struct efi_snp_device * find_snpdev ( EFI_HANDLE handle );
extern struct efi_snp_device * last_opened_snpdev ( void );
-extern void efi_snp_set_claimed ( int claimed );
+extern void efi_snp_add_claim ( int delta );
/**
* Claim network devices for use by iPXE
*
*/
static inline void efi_snp_claim ( void ) {
- efi_snp_set_claimed ( 1 );
+ efi_snp_add_claim ( +1 );
}
/**
*
*/
static inline void efi_snp_release ( void ) {
- efi_snp_set_claimed ( 0 );
+ efi_snp_add_claim ( -1 );
}
#endif /* _IPXE_EFI_SNP_H */
}
/**
- * Set SNP claimed/released state
+ * Add to SNP claimed/released count
*
- * @v claimed Network devices are claimed for use by iPXE
+ * @v delta Claim count change
*/
-void efi_snp_set_claimed ( int claimed ) {
+void efi_snp_add_claim ( int delta ) {
struct efi_snp_device *snpdev;
/* Claim SNP devices */
- efi_snp_claimed = claimed;
+ efi_snp_claimed += delta;
+ assert ( efi_snp_claimed >= 0 );
/* Update SNP mode state for each interface */
list_for_each_entry ( snpdev, &efi_snp_devices, list )