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.

Dependency Surface

Detected Declarations

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

Implementation Notes