include/linux/virtio_vsock.h
Source file repositories/reference/linux-study-clean/include/linux/virtio_vsock.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/virtio_vsock.h- Extension
.h- Size
- 8627 bytes
- Lines
- 293
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
uapi/linux/virtio_vsock.hlinux/socket.hnet/sock.hnet/af_vsock.h
Detected Declarations
struct virtio_vsock_skb_cbstruct virtio_vsock_sockstruct virtio_vsock_pkt_infostruct virtio_transportfunction virtio_vsock_skb_replyfunction virtio_vsock_skb_set_replyfunction virtio_vsock_skb_tap_deliveredfunction virtio_vsock_skb_set_tap_deliveredfunction virtio_vsock_skb_clear_tap_deliveredfunction virtio_vsock_skb_putfunction __virtio_vsock_alloc_skb_with_fragsfunction virtio_vsock_alloc_linear_skbfunction virtio_vsock_skb_queue_headfunction virtio_vsock_skb_queue_tailfunction virtio_vsock_skb_queue_purgefunction virtio_vsock_skb_len
Annotated Snippet
struct virtio_vsock_skb_cb {
bool reply;
bool tap_delivered;
u32 offset;
};
#define VIRTIO_VSOCK_SKB_CB(skb) ((struct virtio_vsock_skb_cb *)((skb)->cb))
static inline struct virtio_vsock_hdr *virtio_vsock_hdr(struct sk_buff *skb)
{
return (struct virtio_vsock_hdr *)skb->head;
}
static inline bool virtio_vsock_skb_reply(struct sk_buff *skb)
{
return VIRTIO_VSOCK_SKB_CB(skb)->reply;
}
static inline void virtio_vsock_skb_set_reply(struct sk_buff *skb)
{
VIRTIO_VSOCK_SKB_CB(skb)->reply = true;
}
static inline bool virtio_vsock_skb_tap_delivered(struct sk_buff *skb)
{
return VIRTIO_VSOCK_SKB_CB(skb)->tap_delivered;
}
static inline void virtio_vsock_skb_set_tap_delivered(struct sk_buff *skb)
{
VIRTIO_VSOCK_SKB_CB(skb)->tap_delivered = true;
}
static inline void virtio_vsock_skb_clear_tap_delivered(struct sk_buff *skb)
{
VIRTIO_VSOCK_SKB_CB(skb)->tap_delivered = false;
}
static inline void virtio_vsock_skb_put(struct sk_buff *skb, u32 len)
{
DEBUG_NET_WARN_ON_ONCE(skb->len);
if (skb_is_nonlinear(skb))
skb->len = len;
else
skb_put(skb, len);
}
static inline struct sk_buff *
__virtio_vsock_alloc_skb_with_frags(unsigned int header_len,
unsigned int data_len,
gfp_t mask)
{
struct sk_buff *skb;
int err;
skb = alloc_skb_with_frags(header_len, data_len,
PAGE_ALLOC_COSTLY_ORDER, &err, mask);
if (!skb)
return NULL;
skb_reserve(skb, VIRTIO_VSOCK_SKB_HEADROOM);
skb->data_len = data_len;
return skb;
}
static inline struct sk_buff *
virtio_vsock_alloc_linear_skb(unsigned int size, gfp_t mask)
{
return __virtio_vsock_alloc_skb_with_frags(size, 0, mask);
}
static inline struct sk_buff *virtio_vsock_alloc_skb(unsigned int size, gfp_t mask)
{
if (size <= SKB_WITH_OVERHEAD(PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER))
return virtio_vsock_alloc_linear_skb(size, mask);
size -= VIRTIO_VSOCK_SKB_HEADROOM;
return __virtio_vsock_alloc_skb_with_frags(VIRTIO_VSOCK_SKB_HEADROOM,
size, mask);
}
static inline void
virtio_vsock_skb_queue_head(struct sk_buff_head *list, struct sk_buff *skb)
{
spin_lock_bh(&list->lock);
__skb_queue_head(list, skb);
spin_unlock_bh(&list->lock);
}
Annotation
- Immediate include surface: `uapi/linux/virtio_vsock.h`, `linux/socket.h`, `net/sock.h`, `net/af_vsock.h`.
- Detected declarations: `struct virtio_vsock_skb_cb`, `struct virtio_vsock_sock`, `struct virtio_vsock_pkt_info`, `struct virtio_transport`, `function virtio_vsock_skb_reply`, `function virtio_vsock_skb_set_reply`, `function virtio_vsock_skb_tap_delivered`, `function virtio_vsock_skb_set_tap_delivered`, `function virtio_vsock_skb_clear_tap_delivered`, `function virtio_vsock_skb_put`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.