drivers/infiniband/hw/usnic/usnic_uiom.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/usnic/usnic_uiom.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/usnic/usnic_uiom.h- Extension
.h- Size
- 3023 bytes
- Lines
- 95
- Domain
- Driver Families
- Bucket
- drivers/infiniband
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/list.hlinux/scatterlist.husnic_uiom_interval_tree.h
Detected Declarations
struct ib_ucontextstruct usnic_uiom_devstruct usnic_uiom_pdstruct usnic_uiom_regstruct usnic_uiom_chunk
Annotated Snippet
struct usnic_uiom_dev {
struct device *dev;
struct list_head link;
};
struct usnic_uiom_pd {
struct iommu_domain *domain;
spinlock_t lock;
struct rb_root_cached root;
struct list_head devs;
int dev_cnt;
};
struct usnic_uiom_reg {
struct usnic_uiom_pd *pd;
unsigned long va;
size_t length;
int offset;
int page_size;
int writable;
struct list_head chunk_list;
struct work_struct work;
struct mm_struct *owning_mm;
};
struct usnic_uiom_chunk {
struct list_head list;
int nents;
struct scatterlist page_list[] __counted_by(nents);
};
struct usnic_uiom_pd *usnic_uiom_alloc_pd(struct device *dev);
void usnic_uiom_dealloc_pd(struct usnic_uiom_pd *pd);
int usnic_uiom_attach_dev_to_pd(struct usnic_uiom_pd *pd, struct device *dev);
void usnic_uiom_detach_dev_from_pd(struct usnic_uiom_pd *pd,
struct device *dev);
struct device **usnic_uiom_get_dev_list(struct usnic_uiom_pd *pd);
void usnic_uiom_free_dev_list(struct device **devs);
struct usnic_uiom_reg *usnic_uiom_reg_get(struct usnic_uiom_pd *pd,
unsigned long addr, size_t size,
int access, int dmasync);
void usnic_uiom_reg_release(struct usnic_uiom_reg *uiomr);
#endif /* USNIC_UIOM_H_ */
Annotation
- Immediate include surface: `linux/list.h`, `linux/scatterlist.h`, `usnic_uiom_interval_tree.h`.
- Detected declarations: `struct ib_ucontext`, `struct usnic_uiom_dev`, `struct usnic_uiom_pd`, `struct usnic_uiom_reg`, `struct usnic_uiom_chunk`.
- Atlas domain: Driver Families / drivers/infiniband.
- 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.