include/asm-generic/io.h
Source file repositories/reference/linux-study-clean/include/asm-generic/io.h
File Facts
- System
- Linux kernel
- Corpus path
include/asm-generic/io.h- Extension
.h- Size
- 30228 bytes
- Lines
- 1288
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
Dependency Surface
asm/page.hlinux/string.hlinux/sizes.hlinux/types.hlinux/instruction_pointer.hasm-generic/iomap.hasm/mmiowb.hasm-generic/pci_iomap.hlinux/tracepoint-defs.hlinux/logic_pio.hlinux/pgtable.h
Detected Declarations
function log_write_mmiofunction __raw_readwfunction __raw_readlfunction __raw_readqfunction __raw_writebfunction __raw_writewfunction __raw_writelfunction __raw_writeqfunction readbfunction readwfunction readlfunction readqfunction writebfunction writewfunction writelfunction writeqfunction readb_relaxedfunction readw_relaxedfunction readl_relaxedfunction readq_relaxedfunction writeb_relaxedfunction writew_relaxedfunction writel_relaxedfunction writeq_relaxedfunction readsbfunction readswfunction readslfunction readsqfunction writesbfunction writeswfunction writeslfunction writesqfunction _inbfunction _inwfunction _inlfunction _outbfunction _outwfunction _outlfunction inb_pfunction inw_pfunction inl_pfunction outb_pfunction outw_pfunction outl_pfunction insbfunction inswfunction inslfunction outsb
Annotated Snippet
#ifndef __ASM_GENERIC_IO_H
#define __ASM_GENERIC_IO_H
#include <asm/page.h> /* I/O is all done through memory accesses */
#include <linux/string.h> /* for memset() and memcpy() */
#include <linux/sizes.h>
#include <linux/types.h>
#include <linux/instruction_pointer.h>
#ifdef CONFIG_GENERIC_IOMAP
#include <asm-generic/iomap.h>
#endif
#include <asm/mmiowb.h>
#include <asm-generic/pci_iomap.h>
#ifndef __io_br
#define __io_br() barrier()
#endif
/* prevent prefetching of coherent DMA data ahead of a dma-complete */
#ifndef __io_ar
#ifdef rmb
#define __io_ar(v) rmb()
#else
#define __io_ar(v) barrier()
#endif
#endif
/* flush writes to coherent DMA data before possibly triggering a DMA read */
#ifndef __io_bw
#ifdef wmb
#define __io_bw() wmb()
#else
#define __io_bw() barrier()
#endif
#endif
/* serialize device access against a spin_unlock, usually handled there. */
#ifndef __io_aw
#define __io_aw() mmiowb_set_pending()
#endif
#ifndef __io_pbw
#define __io_pbw() __io_bw()
#endif
#ifndef __io_paw
#define __io_paw() __io_aw()
#endif
#ifndef __io_pbr
#define __io_pbr() __io_br()
#endif
#ifndef __io_par
#define __io_par(v) __io_ar(v)
#endif
/*
* "__DISABLE_TRACE_MMIO__" flag can be used to disable MMIO tracing for
* specific kernel drivers in case of excessive/unwanted logging.
*
* Usage: Add a #define flag at the beginning of the driver file.
* Ex: #define __DISABLE_TRACE_MMIO__
* #include <...>
* ...
*/
#if IS_ENABLED(CONFIG_TRACE_MMIO_ACCESS) && !(defined(__DISABLE_TRACE_MMIO__))
#include <linux/tracepoint-defs.h>
#define rwmmio_tracepoint_enabled(tracepoint) tracepoint_enabled(tracepoint)
DECLARE_TRACEPOINT(rwmmio_write);
DECLARE_TRACEPOINT(rwmmio_post_write);
DECLARE_TRACEPOINT(rwmmio_read);
DECLARE_TRACEPOINT(rwmmio_post_read);
void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
unsigned long caller_addr, unsigned long caller_addr0);
void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
unsigned long caller_addr, unsigned long caller_addr0);
void log_read_mmio(u8 width, const volatile void __iomem *addr,
unsigned long caller_addr, unsigned long caller_addr0);
void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
unsigned long caller_addr, unsigned long caller_addr0);
#else
#define rwmmio_tracepoint_enabled(tracepoint) false
static inline void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
Annotation
- Immediate include surface: `asm/page.h`, `linux/string.h`, `linux/sizes.h`, `linux/types.h`, `linux/instruction_pointer.h`, `asm-generic/iomap.h`, `asm/mmiowb.h`, `asm-generic/pci_iomap.h`.
- Detected declarations: `function log_write_mmio`, `function __raw_readw`, `function __raw_readl`, `function __raw_readq`, `function __raw_writeb`, `function __raw_writew`, `function __raw_writel`, `function __raw_writeq`, `function readb`, `function readw`.
- Atlas domain: Repository Root And Misc / include.
- 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.