include/linux/ata.h
Source file repositories/reference/linux-study-clean/include/linux/ata.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/ata.h- Extension
.h- Size
- 31117 bytes
- Lines
- 1051
- 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/bits.hlinux/string.hlinux/types.h
Detected Declarations
struct ata_bmdma_prdenum ata_prot_flagsenum ata_ioctlsfunction ata_id_has_hipmfunction ata_id_has_fuafunction ata_id_has_flushfunction ata_id_has_flush_extfunction ata_id_logical_sector_sizefunction ata_id_log2_per_physical_sectorfunction ata_id_logical_sector_offsetfunction ata_id_has_lba48function ata_id_hpa_enabledfunction ata_id_has_wcachefunction ata_id_has_pmfunction ata_id_rahead_enabledfunction ata_id_wcache_enabledfunction ata_id_has_read_log_dma_extfunction ata_id_has_sense_reportingfunction ata_id_sense_reporting_enabledfunction ata_id_sct_data_tablesfunction ata_id_sct_features_ctrlfunction ata_id_sct_error_recovery_ctrlfunction ata_id_sct_long_sector_accessfunction ata_id_sct_supportedfunction ata_id_major_versionfunction ata_id_is_satafunction ata_id_has_tpmfunction ata_id_has_dword_iofunction ata_id_has_trustedfunction ata_id_has_unloadfunction ata_id_has_wwnfunction ata_id_form_factorfunction ata_id_rotation_ratefunction ata_id_has_ncq_send_and_recvfunction ata_id_has_ncq_non_datafunction ata_id_has_ncq_priofunction ata_id_has_trimfunction ata_id_has_zero_after_trimfunction ata_id_current_chs_validfunction ata_id_is_cfafunction ata_id_is_ssdfunction ata_id_zoned_capfunction ata_id_pio_need_iordyfunction ata_drive_40wirefunction ata_drive_40wire_relaxedfunction atapi_cdb_lenfunction atapi_command_packet_setfunction atapi_id_dmadir
Annotated Snippet
struct ata_bmdma_prd {
__le32 addr;
__le32 flags_len;
};
/*
* id tests
*/
#define ata_id_is_ata(id) (((id)[ATA_ID_CONFIG] & (1 << 15)) == 0)
#define ata_id_has_lba(id) ((id)[ATA_ID_CAPABILITY] & (1 << 9))
#define ata_id_has_dma(id) ((id)[ATA_ID_CAPABILITY] & (1 << 8))
#define ata_id_has_ncq(id) ((id)[ATA_ID_SATA_CAPABILITY] & (1 << 8))
#define ata_id_queue_depth(id) (((id)[ATA_ID_QUEUE_DEPTH] & 0x1f) + 1)
#define ata_id_removable(id) ((id)[ATA_ID_CONFIG] & (1 << 7))
#define ata_id_is_locked(id) (((id)[ATA_ID_DLF] & 0x7) == 0x7)
#define ata_id_has_atapi_AN(id) \
((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
((id)[ATA_ID_FEATURE_SUPP] & (1 << 5)))
#define ata_id_has_fpdma_aa(id) \
((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
((id)[ATA_ID_FEATURE_SUPP] & (1 << 2)))
#define ata_id_has_devslp(id) \
((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)))
#define ata_id_has_ncq_autosense(id) \
((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
((id)[ATA_ID_FEATURE_SUPP] & (1 << 7)))
#define ata_id_has_dipm(id) \
((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \
((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \
((id)[ATA_ID_FEATURE_SUPP] & (1 << 3)))
#define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10))
#define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11))
#define ata_id_u32(id,n) \
(((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
#define ata_id_u64(id,n) \
( ((u64) (id)[(n) + 3] << 48) | \
((u64) (id)[(n) + 2] << 32) | \
((u64) (id)[(n) + 1] << 16) | \
((u64) (id)[(n) + 0]) )
#define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20)
#define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4))
static inline bool ata_id_has_hipm(const u16 *id)
{
u16 val = id[ATA_ID_SATA_CAPABILITY];
if (val == 0 || val == 0xffff)
return false;
return val & (1 << 9);
}
static inline bool ata_id_has_fua(const u16 *id)
{
if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000)
return false;
return id[ATA_ID_CFSSE] & (1 << 6);
}
static inline bool ata_id_has_flush(const u16 *id)
{
if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
return false;
return id[ATA_ID_COMMAND_SET_2] & (1 << 12);
}
static inline bool ata_id_has_flush_ext(const u16 *id)
{
if ((id[ATA_ID_COMMAND_SET_2] & 0xC000) != 0x4000)
return false;
return id[ATA_ID_COMMAND_SET_2] & (1 << 13);
}
static inline u32 ata_id_logical_sector_size(const u16 *id)
{
/* T13/1699-D Revision 6a, Sep 6, 2008. Page 128.
* IDENTIFY DEVICE data, word 117-118.
* 0xd000 ignores bit 13 (logical:physical > 1)
*/
if ((id[ATA_ID_SECTOR_SIZE] & 0xd000) == 0x5000)
return (((id[ATA_ID_LOGICAL_SECTOR_SIZE+1] << 16)
+ id[ATA_ID_LOGICAL_SECTOR_SIZE]) * sizeof(u16)) ;
return ATA_SECT_SIZE;
}
Annotation
- Immediate include surface: `linux/bits.h`, `linux/string.h`, `linux/types.h`.
- Detected declarations: `struct ata_bmdma_prd`, `enum ata_prot_flags`, `enum ata_ioctls`, `function ata_id_has_hipm`, `function ata_id_has_fua`, `function ata_id_has_flush`, `function ata_id_has_flush_ext`, `function ata_id_logical_sector_size`, `function ata_id_log2_per_physical_sector`, `function ata_id_logical_sector_offset`.
- 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.