Skip to content

Commit

Permalink
[media] v4l2-fh: add v4l2_fh_is_singular
Browse files Browse the repository at this point in the history
Several drivers need to do something when the first filehandle is opened
or the last filehandle is closed. Most implement some use count mechanism,
but if they use v4l2_fh, then you can also just check if this is the only
filehandle for the device node. A simple helper function can do this.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Mar 22, 2011
1 parent 73cb420 commit dfddb24
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
14 changes: 14 additions & 0 deletions drivers/media/video/v4l2-fh.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,17 @@ int v4l2_fh_release(struct file *filp)
return 0;
}
EXPORT_SYMBOL_GPL(v4l2_fh_release);

int v4l2_fh_is_singular(struct v4l2_fh *fh)
{
unsigned long flags;
int is_singular;

if (fh == NULL || fh->vdev == NULL)
return 0;
spin_lock_irqsave(&fh->vdev->fh_lock, flags);
is_singular = list_is_singular(&fh->list);
spin_unlock_irqrestore(&fh->vdev->fh_lock, flags);
return is_singular;
}
EXPORT_SYMBOL_GPL(v4l2_fh_is_singular);
13 changes: 13 additions & 0 deletions include/media/v4l2-fh.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,18 @@ void v4l2_fh_exit(struct v4l2_fh *fh);
* v4l2_fh struct) is NULL. This function always returns 0.
*/
int v4l2_fh_release(struct file *filp);
/*
* Returns 1 if this filehandle is the only filehandle opened for the
* associated video_device. If fh is NULL, then it returns 0.
*/
int v4l2_fh_is_singular(struct v4l2_fh *fh);
/*
* Helper function with struct file as argument. If filp->private_data is
* NULL, then it will return 0.
*/
static inline int v4l2_fh_is_singular_file(struct file *filp)
{
return v4l2_fh_is_singular(filp->private_data);
}

#endif /* V4L2_EVENT_H */

0 comments on commit dfddb24

Please sign in to comment.