Hi Sakari,

Some more review comments:

On Tue, 22 Dec 2009, Sakari Ailus wrote:

Add sequence numbers to events.

Signed-off-by: Sakari Ailus <sakari.ai...@maxwell.research.nokia.com>
---
drivers/media/video/v4l2-event.c |    8 ++++++++
include/media/v4l2-event.h       |    1 +
2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c
index 72fdf7f..cc2bf57 100644
--- a/drivers/media/video/v4l2-event.c
+++ b/drivers/media/video/v4l2-event.c
@@ -58,6 +58,7 @@ void v4l2_event_init_fh(struct v4l2_fh *fh)
        INIT_LIST_HEAD(&events->subscribed);

        atomic_set(&events->navailable, 0);
+       events->sequence = 0;

Why not make this atomic_t as well?

}
EXPORT_SYMBOL_GPL(v4l2_event_init_fh);

@@ -158,10 +159,16 @@ void v4l2_event_queue(struct video_device *vdev, struct 
v4l2_event *ev)

        list_for_each_entry(fh, &vdev->fh, list) {
                struct _v4l2_event *_ev;
+               u32 sequence;

                if (!v4l2_event_subscribed(fh, ev->type))
                        continue;

+               spin_lock(&fh->events.lock);
+               sequence = fh->events.sequence;
+               fh->events.sequence++;
+               spin_unlock(&fh->events.lock);

Then you can use atomic_inc_return() here.

+
                if (atomic_read(&fh->events.navailable) >= V4L2_MAX_EVENTS)
                        continue;

@@ -172,6 +179,7 @@ void v4l2_event_queue(struct video_device *vdev, struct 
v4l2_event *ev)
                _ev->event = *ev;

                spin_lock(&fh->events.lock);
+               _ev->event.sequence = sequence;
                list_add_tail(&_ev->list, &fh->events.available);
                spin_unlock(&fh->events.lock);

diff --git a/include/media/v4l2-event.h b/include/media/v4l2-event.h
index 69305c6..5a778d4 100644
--- a/include/media/v4l2-event.h
+++ b/include/media/v4l2-event.h
@@ -44,6 +44,7 @@ struct v4l2_events {
        spinlock_t              lock; /* Protect everything here. */
        struct list_head        available;
        atomic_t                navailable;
+       u32                     sequence;
        wait_queue_head_t       wait;
        struct list_head        subscribed; /* Subscribed events. */
};
--
1.5.6.5


Regards,

        Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to