include/media/v4l2-event.h
Source file repositories/reference/linux-study-clean/include/media/v4l2-event.h
File Facts
- System
- Linux kernel
- Corpus path
include/media/v4l2-event.h- Extension
.h- Size
- 6150 bytes
- Lines
- 209
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/videodev2.hlinux/wait.h
Detected Declarations
struct v4l2_fhstruct v4l2_subdevstruct v4l2_subscribed_eventstruct video_devicestruct v4l2_keventstruct v4l2_subscribed_event_opsstruct v4l2_subscribed_event
Annotated Snippet
struct v4l2_kevent {
struct list_head list;
struct v4l2_subscribed_event *sev;
struct v4l2_event event;
u64 ts;
};
/**
* struct v4l2_subscribed_event_ops - Subscribed event operations.
*
* @add: Optional callback, called when a new listener is added
* @del: Optional callback, called when a listener stops listening
* @replace: Optional callback that can replace event 'old' with event 'new'.
* @merge: Optional callback that can merge event 'old' into event 'new'.
*/
struct v4l2_subscribed_event_ops {
int (*add)(struct v4l2_subscribed_event *sev, unsigned int elems);
void (*del)(struct v4l2_subscribed_event *sev);
void (*replace)(struct v4l2_event *old, const struct v4l2_event *new);
void (*merge)(const struct v4l2_event *old, struct v4l2_event *new);
};
/**
* struct v4l2_subscribed_event - Internal struct representing a subscribed
* event.
*
* @list: List node for the v4l2_fh->subscribed list.
* @type: Event type.
* @id: Associated object ID (e.g. control ID). 0 if there isn't any.
* @flags: Copy of v4l2_event_subscription->flags.
* @fh: Filehandle that subscribed to this event.
* @node: List node that hooks into the object's event list
* (if there is one).
* @ops: v4l2_subscribed_event_ops
* @elems: The number of elements in the events array.
* @first: The index of the events containing the oldest available event.
* @in_use: The number of queued events.
* @events: An array of @elems events.
*/
struct v4l2_subscribed_event {
struct list_head list;
u32 type;
u32 id;
u32 flags;
struct v4l2_fh *fh;
struct list_head node;
const struct v4l2_subscribed_event_ops *ops;
unsigned int elems;
unsigned int first;
unsigned int in_use;
struct v4l2_kevent events[] __counted_by(elems);
};
/**
* v4l2_event_dequeue - Dequeue events from video device.
*
* @fh: pointer to struct v4l2_fh
* @event: pointer to struct v4l2_event
* @nonblocking: if not zero, waits for an event to arrive
*/
int v4l2_event_dequeue(struct v4l2_fh *fh, struct v4l2_event *event,
int nonblocking);
/**
* v4l2_event_queue - Queue events to video device.
*
* @vdev: pointer to &struct video_device
* @ev: pointer to &struct v4l2_event
*
* The event will be queued for all &struct v4l2_fh file handlers.
*
* .. note::
* The driver's only responsibility is to fill in the type and the data
* fields. The other fields will be filled in by V4L2.
*/
void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev);
/**
* v4l2_event_queue_fh - Queue events to video device.
*
* @fh: pointer to &struct v4l2_fh
* @ev: pointer to &struct v4l2_event
*
*
* The event will be queued only for the specified &struct v4l2_fh file handler.
*
* .. note::
* The driver's only responsibility is to fill in the type and the data
* fields. The other fields will be filled in by V4L2.
*/
Annotation
- Immediate include surface: `linux/types.h`, `linux/videodev2.h`, `linux/wait.h`.
- Detected declarations: `struct v4l2_fh`, `struct v4l2_subdev`, `struct v4l2_subscribed_event`, `struct video_device`, `struct v4l2_kevent`, `struct v4l2_subscribed_event_ops`, `struct v4l2_subscribed_event`.
- Atlas domain: Repository Root And Misc / include.
- 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.