Many ioctl operations are common to the same class of device driver. For example, most disk drivers implement many of the dkio(7I) family of ioctls. Many of these interfaces copy in or copy out data structures from the kernel, and some of these data structures have changed size as a result of the LP64 data model. The following section lists the ioctls that now require explicit conversion in 64-bit driver ioctl routines for the dkio(7I), fdio(7I), fbio(7I),cdio(7I) and mtio(7I) families of ioctls.
Table F-3 Data Structures
ioctl Command |
Affected Data Structure |
Reference |
---|---|---|
DKIOCGAPART | struct dk_map() | dkio(7I) |
DKIOCSAPART | struct dk_allmap() | |
DKIOGVTOC | struct partition() | dkio(7I) |
DKIOSVTOC | struct vtoc() | |
FBIOPUTCMAP | struct fbcmap() | fbio(7I) |
FBIOPUTCMAPI | struct fbcmap_i() | fbio(7I) |
FBIOGETCMAPI | ||
FBIOSCURSOR | struct fbcursor() | fbio(7I) |
FBIOSCURSOR | ||
CDROMREADMODE1 | struct cdrom_read() | cdio(7I) |
CDROMREADMODE2 | ||
CDROMCDDA | struct cdrom_cdda() | cdio(7I) |
CDROMCDXA | struct cdrom_cdxa() | cdio(7I) |
CDROMSUBCODE | struct cdrom_subcode() | cdio(7I) |
FDIOCMD | struct fd_cmd() | fdio(7I) |
FDRAW | struct fd_raw() | fdio(7I) |
MTIOCTOP | struct mtop() | mtio(7I) |
MTIOCGET | struct mtget() | mtio(7I) |
MTIOCGETDRIVETYPE | struct mtdrivetype_request() | mtio(7I) |
USCSICMD | struct uscsi_cmd() | Undocumented |
The nblocks property is exported by each slice of a block device drivers. It contains the number of 512 byte blocks that each slice of the device can support. The nblocks property is defined as a signed 32-bit quantity, which limits the maximum number of disk blocks to 1Tbyte.
Disk devices that provide more than 1Tbyte of storage per disk, must define the Nblocks property, which should still contain the number of 512 byte blocks that the device can support. However, Nblocks is a signed 64-bit quantity, which removes any practical limit on disk space.
The nblocks property is now deprecated; all disk devices should provide the Nblocks property.