75 lines
1.2 KiB
C
75 lines
1.2 KiB
C
/*
|
|
* Copyright 2004-2006, Axel Dörfler, axeld@pinc-software.de.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef KERNEL_BOOT_DISK_IDENTIFIER_H
|
|
#define KERNEL_BOOT_DISK_IDENTIFIER_H
|
|
|
|
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
enum bus_types {
|
|
UNKNOWN_BUS,
|
|
LEGACY_BUS,
|
|
PCI_BUS,
|
|
};
|
|
|
|
enum device_types {
|
|
UNKNOWN_DEVICE,
|
|
ATA_DEVICE,
|
|
ATAPI_DEVICE,
|
|
SCSI_DEVICE,
|
|
USB_DEVICE,
|
|
FIREWIRE_DEVICE,
|
|
FIBRE_DEVICE,
|
|
};
|
|
|
|
#define NUM_DISK_CHECK_SUMS 5
|
|
|
|
typedef struct disk_identifier {
|
|
int32 bus_type;
|
|
int32 device_type;
|
|
|
|
union {
|
|
struct {
|
|
uint16 base_address;
|
|
} _PACKED legacy;
|
|
struct {
|
|
uint8 bus;
|
|
uint8 slot;
|
|
uint8 function;
|
|
} _PACKED pci;
|
|
} bus;
|
|
union {
|
|
struct {
|
|
bool master;
|
|
} _PACKED ata;
|
|
struct {
|
|
bool master;
|
|
uint8 logical_unit;
|
|
} _PACKED atapi;
|
|
struct {
|
|
uint8 logical_unit;
|
|
} _PACKED scsi;
|
|
struct {
|
|
uint8 tbd;
|
|
} _PACKED usb;
|
|
struct {
|
|
uint64 guid;
|
|
} _PACKED firewire;
|
|
struct {
|
|
uint64 wwd;
|
|
} _PACKED fibre;
|
|
struct {
|
|
off_t size;
|
|
struct {
|
|
off_t offset;
|
|
uint32 sum;
|
|
} _PACKED check_sums[NUM_DISK_CHECK_SUMS];
|
|
} _PACKED unknown;
|
|
} device;
|
|
} _PACKED disk_identifier;
|
|
|
|
#endif /* KERNEL_BOOT_DISK_IDENTIFIER_H */
|