geometry
get_diskinfo (int drive, struct geometry *geometry)
*geometry = disks[drive];
struct geometry *disks = 0;
biosdisk (int subfunc, int drive, struct geometry *geometry,
int fd = geometry->flags;
get_drive_geometry (struct geometry *geom, char **map, int drive)
extern void get_drive_geometry (struct geometry *geom, char **map, int drive);
geometry->flags &= ~BIOSDISK_FLAG_LBA_EXTENSION;
geometry->total_sectors = ((unsigned long long)geometry->cylinders
* geometry->heads
* geometry->sectors);
return biosdisk (read, drive, geometry, sector, nsec, segment);
sector_offset = sector % geometry->sectors + 1;
head = sector / geometry->sectors;
head_offset = head % geometry->heads;
cylinder_offset = head / geometry->heads;
if (cylinder_offset >= geometry->cylinders)
get_cdinfo (int drive, struct geometry *geometry)
geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION | BIOSDISK_FLAG_CDROM;
geometry->cylinders = 0;
geometry->heads = 1;
geometry->sectors = 15;
geometry->sector_size = 2048;
geometry->total_sectors = MAXUINT;
geometry->cylinders
geometry->heads = cdrp.heads;
geometry->sectors = cdrp.sectors & 0x3F;
geometry->sector_size = SECTOR_SIZE;
geometry->total_sectors = ((unsigned long long)geometry->cylinders
* geometry->heads
* geometry->sectors);
geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION | BIOSDISK_FLAG_CDROM;
geometry->cylinders = 0;
geometry->heads = 1;
geometry->sectors = 15;
geometry->sector_size = 2048;
geometry->total_sectors = MAXUINT;
get_diskinfo (int drive, struct geometry *geometry)
geometry->flags = 0;
if (get_cdinfo (drive, geometry))
&geometry->cylinders,
&geometry->heads,
&geometry->sectors);
geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION;
geometry->cylinders = drp.cylinders;
geometry->heads = drp.heads;
geometry->sectors = drp.sectors;
geometry->heads = 16;
geometry->sectors = 63;
total_sectors = ((unsigned long long)geometry->cylinders
* geometry->heads
* geometry->sectors);
geometry->total_sectors = total_sectors;
geometry->sector_size = SECTOR_SIZE;
&geometry->cylinders,
&geometry->heads,
&geometry->sectors);
&geometry->cylinders,
&geometry->heads,
&geometry->sectors);
geometry->total_sectors = ((unsigned long long)geometry->cylinders
* geometry->heads
* geometry->sectors);
geometry->sector_size = SECTOR_SIZE;
biosdisk (int read, int drive, struct geometry *geometry,
if (geometry->flags & BIOSDISK_FLAG_LBA_EXTENSION)
if (sector >= geometry->total_sectors)
if (geometry->flags & BIOSDISK_FLAG_CDROM)
struct geometry geom;
struct geometry geom;
struct geometry dest_geom, src_geom;
struct geometry geom;
struct geometry geom;
struct geometry buf_geom;
struct geometry geom;
extern struct geometry *disks;
extern struct geometry buf_geom;
int get_diskinfo (int drive, struct geometry *geometry);
int biosdisk (int subfunc, int drive, struct geometry *geometry,
struct dk_geom geometry;
if (ioctl(fd, DKIOCG_PHYGEOM, &geometry) >= 0) {
if (ioctl(fd, DKIOCGGEOM, &geometry) >= 0) {
geometry.dkg_ncyl * geometry.dkg_nhead * geometry.dkg_nsect)
if (nvlist_add_uint32(attrs, DM_NCYLINDERS, geometry.dkg_ncyl)
geometry.dkg_pcyl) != 0) {
geometry.dkg_acyl) != 0) {
geometry.dkg_nhead) != 0) {
if (nvlist_add_uint32(attrs, DM_NSECTORS, geometry.dkg_nsect)
geometry.dkg_ncyl) != 0) {
cistpl_geometry_t geometry;