续。。。
3、video_device
struct video_device{
#if defined(CONFIG_MEDIA_CONTROLLER)
struct media_entity entity;
#endif
const struct v4l2_file_operations*fops;
struct device dev; /* v4l device */
struct cdev *cdev; /* characterdevice */
struct device *parent; /* deviceparent */
struct v4l2_device *v4l2_dev; /*v4l2_device parent */
struct v4l2_ctrl_handler*ctrl_handler;
struct v4l2_prio_state *prio;
char name[32];
int vfl_type;
int minor;
u16 num;
unsigned long flags;
int index;
spinlock_t fh_lock; /* Lock forall v4l2_fhs */
struct list_head fh_list; /* List ofstruct v4l2_fh */
int debug; /* Activates debuglevel*/
v4l2_std_id tvnorms; /* Supported tvnorms */
v4l2_std_id current_norm; /* Currenttvnorm */
void (*release)(struct video_device*vdev);
const struct v4l2_ioctl_ops*ioctl_ops;
struct mutex *lock;
};
在/dev中实际的设备节点使用video_deice结构创建。该结构既可以被动态创建,也可以被嵌入到更大的结构当中:
动态创建:
struct video_device *vdev =video_device_alloc();
vdec->release =video_device_release;
嵌入到更大的结构当中: