arch/um/drivers/vhost_user.h

Source file repositories/reference/linux-study-clean/arch/um/drivers/vhost_user.h

File Facts

System
Linux kernel
Corpus path
arch/um/drivers/vhost_user.h
Extension
.h
Size
3218 bytes
Lines
124
Domain
Architecture Layer
Bucket
arch/um
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

struct vhost_user_header {
	/*
	 * Use enum vhost_user_request for outgoing messages,
	 * uses enum vhost_user_slave_request for incoming ones.
	 */
	u32 request;
	u32 flags;
	u32 size;
} __packed;

struct vhost_user_config {
	u32 offset;
	u32 size;
	u32 flags;
	u8 payload[]; /* Variable length */
} __packed;

struct vhost_user_vring_state {
	u32 index;
	u32 num;
} __packed;

struct vhost_user_vring_addr {
	u32 index;
	u32 flags;
	u64 desc, used, avail, log;
} __packed;

struct vhost_user_mem_region {
	u64 guest_addr;
	u64 size;
	u64 user_addr;
	u64 mmap_offset;
} __packed;

struct vhost_user_mem_regions {
	u32 num;
	u32 padding;
	struct vhost_user_mem_region regions[2]; /* Currently supporting 2 */
} __packed;

union vhost_user_payload {
	u64 integer;
	struct vhost_user_config config;
	struct vhost_user_vring_state vring_state;
	struct vhost_user_vring_addr vring_addr;
	struct vhost_user_mem_regions mem_regions;
};

struct vhost_user_msg {
	struct vhost_user_header header;
	union vhost_user_payload payload;
} __packed;

#endif

Annotation

Implementation Notes