drivers/platform/raspberrypi/vchiq-interface/vchiq_ioctl.h
Source file repositories/reference/linux-study-clean/drivers/platform/raspberrypi/vchiq-interface/vchiq_ioctl.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/platform/raspberrypi/vchiq-interface/vchiq_ioctl.h- Extension
.h- Size
- 3270 bytes
- Lines
- 113
- Domain
- Driver Families
- Bucket
- drivers/platform
- 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/ioctl.hlinux/raspberrypi/vchiq.h
Detected Declarations
struct vchiq_service_paramsstruct vchiq_create_servicestruct vchiq_queue_messagestruct vchiq_queue_bulk_transferstruct vchiq_completion_datastruct vchiq_await_completionstruct vchiq_dequeue_messagestruct vchiq_get_configstruct vchiq_set_service_optionstruct vchiq_dump_mem
Annotated Snippet
struct vchiq_service_params {
int fourcc;
int __user (*callback)(enum vchiq_reason reason,
struct vchiq_header *header,
unsigned int handle,
void *bulk_userdata);
void __user *userdata;
short version; /* Increment for non-trivial changes */
short version_min; /* Update for incompatible changes */
};
struct vchiq_create_service {
struct vchiq_service_params params;
int is_open;
int is_vchi;
unsigned int handle; /* OUT */
};
struct vchiq_queue_message {
unsigned int handle;
unsigned int count;
const struct vchiq_element __user *elements;
};
struct vchiq_queue_bulk_transfer {
unsigned int handle;
void __user *data;
unsigned int size;
void __user *userdata;
enum vchiq_bulk_mode mode;
};
struct vchiq_completion_data {
enum vchiq_reason reason;
struct vchiq_header __user *header;
void __user *service_userdata;
void __user *cb_userdata;
};
struct vchiq_await_completion {
unsigned int count;
struct vchiq_completion_data __user *buf;
unsigned int msgbufsize;
unsigned int msgbufcount; /* IN/OUT */
void * __user *msgbufs;
};
struct vchiq_dequeue_message {
unsigned int handle;
int blocking;
unsigned int bufsize;
void __user *buf;
};
struct vchiq_get_config {
unsigned int config_size;
struct vchiq_config __user *pconfig;
};
struct vchiq_set_service_option {
unsigned int handle;
enum vchiq_service_option option;
int value;
};
struct vchiq_dump_mem {
void __user *virt_addr;
size_t num_bytes;
};
#define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0)
#define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1)
#define VCHIQ_IOC_CREATE_SERVICE \
_IOWR(VCHIQ_IOC_MAGIC, 2, struct vchiq_create_service)
#define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3)
#define VCHIQ_IOC_QUEUE_MESSAGE \
_IOW(VCHIQ_IOC_MAGIC, 4, struct vchiq_queue_message)
#define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \
_IOWR(VCHIQ_IOC_MAGIC, 5, struct vchiq_queue_bulk_transfer)
#define VCHIQ_IOC_QUEUE_BULK_RECEIVE \
_IOWR(VCHIQ_IOC_MAGIC, 6, struct vchiq_queue_bulk_transfer)
#define VCHIQ_IOC_AWAIT_COMPLETION \
_IOWR(VCHIQ_IOC_MAGIC, 7, struct vchiq_await_completion)
#define VCHIQ_IOC_DEQUEUE_MESSAGE \
_IOWR(VCHIQ_IOC_MAGIC, 8, struct vchiq_dequeue_message)
#define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9)
#define VCHIQ_IOC_GET_CONFIG \
_IOWR(VCHIQ_IOC_MAGIC, 10, struct vchiq_get_config)
#define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11)
#define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12)
Annotation
- Immediate include surface: `linux/ioctl.h`, `linux/raspberrypi/vchiq.h`.
- Detected declarations: `struct vchiq_service_params`, `struct vchiq_create_service`, `struct vchiq_queue_message`, `struct vchiq_queue_bulk_transfer`, `struct vchiq_completion_data`, `struct vchiq_await_completion`, `struct vchiq_dequeue_message`, `struct vchiq_get_config`, `struct vchiq_set_service_option`, `struct vchiq_dump_mem`.
- Atlas domain: Driver Families / drivers/platform.
- 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.