include/uapi/linux/fd.h
Source file repositories/reference/linux-study-clean/include/uapi/linux/fd.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/linux/fd.h- Extension
.h- Size
- 12166 bytes
- Lines
- 403
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/ioctl.hlinux/compiler.h
Detected Declarations
struct floppy_structstruct format_descrstruct floppy_max_errorsstruct floppy_drive_paramsstruct floppy_drive_structstruct floppy_fdc_statestruct floppy_write_errorsstruct floppy_raw_cmdenum reset_mode
Annotated Snippet
struct floppy_struct {
unsigned int size, /* nr of sectors total */
sect, /* sectors per track */
head, /* nr of heads */
track, /* nr of tracks */
stretch; /* bit 0 !=0 means double track steps */
/* bit 1 != 0 means swap sides */
/* bits 2..9 give the first sector */
/* number (the LSB is flipped) */
#define FD_STRETCH 1
#define FD_SWAPSIDES 2
#define FD_ZEROBASED 4
#define FD_SECTBASEMASK 0x3FC
#define FD_MKSECTBASE(s) (((s) ^ 1) << 2)
#define FD_SECTBASE(floppy) ((((floppy)->stretch & FD_SECTBASEMASK) >> 2) ^ 1)
unsigned char gap, /* gap1 size */
rate, /* data rate. |= 0x40 for perpendicular */
#define FD_2M 0x4
#define FD_SIZECODEMASK 0x38
#define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
#define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ? \
512 : 128 << FD_SIZECODE(floppy) )
#define FD_PERP 0x40
spec1, /* stepping rate, head unload time */
fmt_gap; /* gap2 size */
const char * name; /* used only for predefined formats */
};
/* commands needing write access have 0x40 set */
/* commands needing super user access have 0x80 set */
#define FDCLRPRM _IO(2, 0x41)
/* clear user-defined parameters */
#define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
#define FDSETMEDIAPRM FDSETPRM
/* set user-defined parameters for current media */
#define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
#define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
#define FDDEFMEDIAPRM FDDEFPRM
#define FDGETMEDIAPRM FDGETPRM
/* set/get disk parameters */
#define FDMSGON _IO(2,0x45)
#define FDMSGOFF _IO(2,0x46)
/* issue/don't issue kernel messages on media type change */
/*
* Formatting (obsolete)
*/
#define FD_FILL_BYTE 0xF6 /* format fill byte. */
struct format_descr {
unsigned int device,head,track;
};
#define FDFMTBEG _IO(2,0x47)
/* begin formatting a disk */
#define FDFMTTRK _IOW(2,0x48, struct format_descr)
/* format the specified track */
#define FDFMTEND _IO(2,0x49)
/* end formatting a disk */
/*
* Error thresholds
*/
struct floppy_max_errors {
unsigned int
abort, /* number of errors to be reached before aborting */
read_track, /* maximal number of errors permitted to read an
* entire track at once */
reset, /* maximal number of errors before a reset is tried */
recal, /* maximal number of errors before a recalibrate is
* tried */
/*
* Threshold for reporting FDC errors to the console.
* Setting this to zero may flood your screen when using
* ultra cheap floppies ;-)
*/
reporting;
Annotation
- Immediate include surface: `linux/ioctl.h`, `linux/compiler.h`.
- Detected declarations: `struct floppy_struct`, `struct format_descr`, `struct floppy_max_errors`, `struct floppy_drive_params`, `struct floppy_drive_struct`, `struct floppy_fdc_state`, `struct floppy_write_errors`, `struct floppy_raw_cmd`, `enum reset_mode`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.