[block] Centralise "san-drive" setting

The concept of the SAN drive number is meaningful only in a BIOS
environment, where it represents the INT13 drive number (0x80 for the
first hard disk).  We retain this concept in a UEFI environment to
allow for a simple way for iPXE commands to refer to SAN drives.

Centralise the concept of the default drive number, since it is shared
between all supported environments.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2017-03-06 12:25:20 +00:00
parent 4adc7b0290
commit e7ee2eda4b
7 changed files with 40 additions and 51 deletions

View File

@@ -15,13 +15,4 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define SANBOOT_PREFIX_efi __efi_
#endif
static inline __always_inline unsigned int
SANBOOT_INLINE ( efi, san_default_drive ) ( void ) {
/* Drive numbers don't exist as a concept under EFI. We
* arbitarily choose to use drive 0x80 to minimise differences
* with a standard BIOS.
*/
return 0x80;
}
#endif /* _IPXE_EFI_BLOCK_H */

View File

@@ -15,9 +15,4 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define SANBOOT_PREFIX_null __null_
#endif
static inline __always_inline unsigned int
SANBOOT_INLINE ( null, san_default_drive ) ( void ) {
return 0;
}
#endif /* _IPXE_NULL_SANBOOT_H */

View File

@@ -95,13 +95,6 @@ struct san_device {
/* Include all architecture-dependent sanboot API headers */
#include <bits/sanboot.h>
/**
* Get default SAN drive number
*
* @ret drive Default drive number
*/
unsigned int san_default_drive ( void );
/**
* Hook SAN device
*
@@ -212,5 +205,6 @@ extern int sandev_rw ( struct san_device *sandev, uint64_t lba,
extern struct san_device * alloc_sandev ( struct uri *uri, size_t priv_size );
extern int register_sandev ( struct san_device *sandev );
extern void unregister_sandev ( struct san_device *sandev );
extern unsigned int san_default_drive ( void );
#endif /* _IPXE_SANBOOT_H */