v4l2-event.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. #ifndef V4L2_EVENT_H
  25. #define V4L2_EVENT_H
  26. #include <linux/types.h>
  27. #include <linux/videodev2.h>
  28. #include <linux/wait.h>
  29. struct v4l2_fh;
  30. struct video_device;
  31. struct v4l2_kevent {
  32. struct list_head list;
  33. struct v4l2_event event;
  34. };
  35. struct v4l2_subscribed_event {
  36. struct list_head list;
  37. u32 type;
  38. };
  39. struct v4l2_events {
  40. wait_queue_head_t wait;
  41. struct list_head subscribed; /* Subscribed events */
  42. struct list_head free; /* Events ready for use */
  43. struct list_head available; /* Dequeueable event */
  44. unsigned int navailable;
  45. unsigned int nallocated; /* Number of allocated events */
  46. u32 sequence;
  47. };
  48. int v4l2_event_init(struct v4l2_fh *fh);
  49. int v4l2_event_alloc(struct v4l2_fh *fh, unsigned int n);
  50. void v4l2_event_free(struct v4l2_fh *fh);
  51. int v4l2_event_dequeue(struct v4l2_fh *fh, struct v4l2_event *event,
  52. int nonblocking);
  53. void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev);
  54. int v4l2_event_pending(struct v4l2_fh *fh);
  55. int v4l2_event_subscribe(struct v4l2_fh *fh,
  56. struct v4l2_event_subscription *sub);
  57. int v4l2_event_unsubscribe(struct v4l2_fh *fh,
  58. struct v4l2_event_subscription *sub);
  59. #endif /* V4L2_EVENT_H */