Autodocs Devices:
trackdisk.device CMD_CLEAR CMD_READ CMD_UPDATE CMD_WRITE TD_ADDCHANGEINT TD_CHANGENUM TD_CHANGESTATE TD_EJECT TD_FORMAT TD_GETDRIVETYPE TD_GETGEOMETRY TD_GETNUMTRACKS TD_MOTOR TD_PROTSTATUS TD_RAWREAD TD_RAWWRITE TD_REMCHANGEINT TD_SEEK Include GuruMeditation
|
Docs » Autodocs » trackdisk.device » TD_FORMAT
TD_FORMAT/ETD_FORMAT -- format a track on a disk.
These commands are used to write data to a track that either has not yet been formatted or has had a hard error on a standard write command. TD_FORMAT completely ignores all data currently on a track and does not check for disk change before performing the command. The io_Data field must point to at least one track worth of data. The io_Offset field must be track aligned, and the io_Length field must be in units of track length (that is, NUMSEC*TD_SECTOR). The device will format the requested tracks, filling each sector with the contents of the buffer pointed to by io_Data. You should do a read pass to verify the data. If you have a hard write error during a normal write, you may find it possible to use the TD_FORMAT command to reformat the track as part of your error recovery process. ETD_FORMAT will write the sector label area if iotd_SecLabel is non-NULL. IO REQUEST INPUT io_Device preset by the call to OpenDevice() io_Unit preset by the call to OpenDevice() io_Command TD_FORMAT or ETD_FORMAT io_Flags 0 or IOF_QUICK io_Data points to a buffer containing the data to write to the track, must be at least as large as io_Length. io_Length number of bytes to format, must be a multiple of (TD_SECTORS * NUMSEC). io_Offset byte offset from the start of the disk for the track to format, must be a multiple of (TD_SECTORS * NUMSEC). iotd_Count (ETD_FORMAT only) maximum allowable change counter value. iotd_SecLabel (ETD_FORMAT only) NULL or sector label buffer pointer. If provided, the buffer must be a multiple of (TD_LABELSIZE * NUMSEC). IO REQUEST RESULT io_Error - 0 for success, or an error code as defined in <devices/trackdisk.h>
Under versions of Kickstart earlier than V36, the io_Data had to point to a buffer in chip memory. This restriction is no longer present as of Kickstart V36 and beyond.
CMD_WRITE(), TD_RAWWRITE()
|