include/linux/libata.h
Source file repositories/reference/linux-study-clean/include/linux/libata.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/libata.h- Extension
.h- Size
- 72364 bytes
- Lines
- 2180
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/delay.hlinux/jiffies.hlinux/interrupt.hlinux/dma-mapping.hlinux/scatterlist.hlinux/io.hlinux/ata.hlinux/workqueue.hscsi/scsi_host.hlinux/acpi.hlinux/cdrom.hlinux/sched.hlinux/async.hasm/libata-portmap.h
Detected Declarations
struct scsi_devicestruct ata_port_operationsstruct ata_portstruct ata_linkstruct ata_queued_cmdstruct ata_taskfilestruct ata_ioportsstruct ata_hoststruct ata_queued_cmdstruct ata_port_statsstruct ata_ering_entrystruct ata_eringstruct ata_cprstruct ata_cpr_logstruct ata_cdlstruct ata_devicestruct ata_eh_infostruct ata_eh_contextstruct ata_acpi_drivestruct ata_acpi_gtmstruct ata_linkstruct ata_portstruct ata_reset_operationsstruct ata_port_operationsstruct ata_port_infostruct ata_timingstruct pci_devstruct pci_bitsstruct platform_deviceenum ata_quirksenum ata_xfer_maskenum hsm_task_statesenum ata_completion_errorsenum ata_lpm_policyenum ata_lpm_hintsenum sw_activityenum ata_link_iter_modeenum ata_dev_iter_modefunction ata_is_atapifunction ata_is_piofunction ata_is_dmafunction ata_is_ncqfunction ata_is_datafunction is_multi_taskfilefunction ata_port_is_dummyfunction ata_port_is_frozenfunction ata_sas_port_suspendfunction sata_ehc_deb_timing
Annotated Snippet
struct ata_taskfile {
unsigned long flags; /* ATA_TFLAG_xxx */
u8 protocol; /* ATA_PROT_xxx */
u8 ctl; /* control reg */
u8 hob_feature; /* additional data */
u8 hob_nsect; /* to support LBA48 */
u8 hob_lbal;
u8 hob_lbam;
u8 hob_lbah;
union {
u8 error;
u8 feature;
};
u8 nsect;
u8 lbal;
u8 lbam;
u8 lbah;
u8 device;
union {
u8 status;
u8 command;
};
u32 auxiliary; /* auxiliary field */
/* from SATA 3.1 and */
/* ATA-8 ACS-3 */
};
#ifdef CONFIG_ATA_SFF
struct ata_ioports {
void __iomem *cmd_addr;
void __iomem *data_addr;
void __iomem *error_addr;
void __iomem *feature_addr;
void __iomem *nsect_addr;
void __iomem *lbal_addr;
void __iomem *lbam_addr;
void __iomem *lbah_addr;
void __iomem *device_addr;
void __iomem *status_addr;
void __iomem *command_addr;
void __iomem *altstatus_addr;
void __iomem *ctl_addr;
#ifdef CONFIG_ATA_BMDMA
void __iomem *bmdma_addr;
#endif /* CONFIG_ATA_BMDMA */
void __iomem *scr_addr;
};
#endif /* CONFIG_ATA_SFF */
struct ata_host {
spinlock_t lock;
struct device *dev;
void __iomem * const *iomap;
unsigned int n_ports;
unsigned int n_tags; /* nr of NCQ tags */
void *private_data;
struct ata_port_operations *ops;
unsigned long flags;
struct kref kref;
struct mutex eh_mutex;
struct task_struct *eh_owner;
struct ata_port *simplex_claimed; /* channel owning the DMA */
struct ata_port *ports[];
};
struct ata_queued_cmd {
struct ata_port *ap;
struct ata_device *dev;
struct scsi_cmnd *scsicmd;
void (*scsidone)(struct scsi_cmnd *);
struct ata_taskfile tf;
u8 cdb[ATAPI_CDB_LEN];
unsigned long flags; /* ATA_QCFLAG_xxx */
unsigned int tag; /* libata core tag */
unsigned int hw_tag; /* driver tag */
unsigned int n_elem;
unsigned int orig_n_elem;
int dma_dir;
Annotation
- Immediate include surface: `linux/delay.h`, `linux/jiffies.h`, `linux/interrupt.h`, `linux/dma-mapping.h`, `linux/scatterlist.h`, `linux/io.h`, `linux/ata.h`, `linux/workqueue.h`.
- Detected declarations: `struct scsi_device`, `struct ata_port_operations`, `struct ata_port`, `struct ata_link`, `struct ata_queued_cmd`, `struct ata_taskfile`, `struct ata_ioports`, `struct ata_host`, `struct ata_queued_cmd`, `struct ata_port_stats`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.