include/linux/raspberrypi/vchiq_arm.h
Source file repositories/reference/linux-study-clean/include/linux/raspberrypi/vchiq_arm.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/raspberrypi/vchiq_arm.h- Extension
.h- Size
- 3814 bytes
- Lines
- 165
- 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/mutex.hlinux/platform_device.hlinux/semaphore.hlinux/atomic.hvchiq_core.hvchiq_debugfs.h
Detected Declarations
struct rpi_firmwarestruct vchiq_devicestruct vchiq_platform_infostruct vchiq_drv_mgmtstruct user_servicestruct bulk_waiter_nodestruct vchiq_instanceenum USE_TYPE_Efunction vchiq_deregister_chrdev
Annotated Snippet
struct vchiq_platform_info {
unsigned int cache_line_size;
};
struct vchiq_drv_mgmt {
struct rpi_firmware *fw;
const struct vchiq_platform_info *info;
bool connected;
int num_deferred_callbacks;
/* Protects connected and num_deferred_callbacks */
struct mutex connected_mutex;
void (*deferred_callback[VCHIQ_DRV_MAX_CALLBACKS])(void);
struct semaphore free_fragments_sema;
struct semaphore free_fragments_mutex;
char *fragments_base;
char *free_fragments;
unsigned int fragments_size;
void __iomem *regs;
struct vchiq_state state;
};
struct user_service {
struct vchiq_service *service;
void __user *userdata;
struct vchiq_instance *instance;
char is_vchi;
char dequeue_pending;
char close_pending;
int message_available_pos;
int msg_insert;
int msg_remove;
struct completion insert_event;
struct completion remove_event;
struct completion close_event;
struct vchiq_header *msg_queue[MSG_QUEUE_SIZE];
};
struct bulk_waiter_node {
struct bulk_waiter bulk_waiter;
int pid;
struct list_head list;
};
struct vchiq_instance {
struct vchiq_state *state;
struct vchiq_completion_data_kernel completions[MAX_COMPLETIONS];
int completion_insert;
int completion_remove;
struct completion insert_event;
struct completion remove_event;
struct mutex completion_mutex;
int connected;
int closing;
int pid;
int mark;
int use_close_delivered;
int trace;
struct list_head bulk_waiter_list;
struct mutex bulk_waiter_list_mutex;
struct vchiq_debugfs_node debugfs_node;
};
int
vchiq_use_service(struct vchiq_instance *instance, unsigned int handle);
extern int
vchiq_release_service(struct vchiq_instance *instance, unsigned int handle);
extern int
vchiq_check_service(struct vchiq_service *service);
extern void
vchiq_dump_service_use_state(struct vchiq_state *state);
extern int
vchiq_use_internal(struct vchiq_state *state, struct vchiq_service *service,
enum USE_TYPE_E use_type);
extern int
vchiq_release_internal(struct vchiq_state *state,
struct vchiq_service *service);
extern struct vchiq_debugfs_node *
Annotation
- Immediate include surface: `linux/mutex.h`, `linux/platform_device.h`, `linux/semaphore.h`, `linux/atomic.h`, `vchiq_core.h`, `vchiq_debugfs.h`.
- Detected declarations: `struct rpi_firmware`, `struct vchiq_device`, `struct vchiq_platform_info`, `struct vchiq_drv_mgmt`, `struct user_service`, `struct bulk_waiter_node`, `struct vchiq_instance`, `enum USE_TYPE_E`, `function vchiq_deregister_chrdev`.
- 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.