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 32 struct v4l2_fh; 33 struct video_device; 34 35 struct v4l2_kevent { 36 struct list_head list; 37 struct v4l2_event event; 38 }; 39 40 struct v4l2_subscribed_event { 41 struct list_head list; 42 u32 type; 43 }; 44 45 struct 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 55 int v4l2_event_init(struct v4l2_fh *fh); 56 int v4l2_event_alloc(struct v4l2_fh *fh, unsigned int n); 57 void v4l2_event_free(struct v4l2_fh *fh); 58 int v4l2_event_dequeue(struct v4l2_fh *fh, struct v4l2_event *event, 59 int nonblocking); 60 void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev); 61 int v4l2_event_pending(struct v4l2_fh *fh); 62 int v4l2_event_subscribe(struct v4l2_fh *fh, 63 struct v4l2_event_subscription *sub); 64 int v4l2_event_unsubscribe(struct v4l2_fh *fh, 65 struct v4l2_event_subscription *sub); 66 67 #endif /* V4L2_EVENT_H */ 68