1/* 2 * v4l2-event.h 3 * 4 * V4L2 events. 5 * 6 * Copyright (C) 2009--2010 Nokia Corporation. 7 * 8 * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> 9 * 10 * This program is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License 12 * version 2 as published by the Free Software Foundation. 13 * 14 * This program is distributed in the hope that it will be useful, but 15 * WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 22 * 02110-1301 USA 23 */ 24 25#ifndef V4L2_EVENT_H 26#define V4L2_EVENT_H 27 28#include <linux/types.h> 29#include <linux/videodev2.h> 30#include <linux/wait.h> 31 32struct v4l2_fh; 33struct video_device; 34 35struct v4l2_kevent { 36 struct list_head list; 37 struct v4l2_event event; 38}; 39 40struct v4l2_subscribed_event { 41 struct list_head list; 42 u32 type; 43}; 44 45struct v4l2_events { 46 wait_queue_head_t wait; 47 struct list_head subscribed; /* Subscribed events */ 48 struct list_head free; /* Events ready for use */ 49 struct list_head available; /* Dequeueable event */ 50 unsigned int navailable; 51 unsigned int nallocated; /* Number of allocated events */ 52 u32 sequence; 53}; 54 55int v4l2_event_init(struct v4l2_fh *fh); 56int v4l2_event_alloc(struct v4l2_fh *fh, unsigned int n); 57void v4l2_event_free(struct v4l2_fh *fh); 58int v4l2_event_dequeue(struct v4l2_fh *fh, struct v4l2_event *event, 59 int nonblocking); 60void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev); 61int v4l2_event_pending(struct v4l2_fh *fh); 62int v4l2_event_subscribe(struct v4l2_fh *fh, 63 struct v4l2_event_subscription *sub); 64int v4l2_event_unsubscribe(struct v4l2_fh *fh, 65 struct v4l2_event_subscription *sub); 66 67#endif /* V4L2_EVENT_H */ 68