*参照元 [#p09fb70f]
#backlinks

*説明 [#r5f6b9f1]
-パス: [[linux-4.4.1/drivers/media/usb/uvc/uvc_queue.c]]

-FIXME: これは何?
--説明


**引数 [#we5d6313]
-struct vb2_buffer *vb
--
--[[linux-4.4.1/vb2_buffer]]


**返り値 [#s55d280a]
-void


**参考 [#k493f668]


*実装 [#xf6322be]
 static void uvc_buffer_queue(struct vb2_buffer *vb)
 {
         struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
         struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue);
         struct uvc_buffer *buf = container_of(vbuf, struct uvc_buffer, buf);
         unsigned long flags;
 
-
--[[linux-4.4.1/vb2_v4l2_buffer]]
--[[linux-4.4.1/to_vb2_v4l2_buffer()]]
--[[linux-4.4.1/uvc_video_queue()]]
--[[linux-4.4.1/vb2_get_drv_priv()]]
--[[linux-4.4.1/uvc_buffer]]
--[[linux-4.4.1/container_of()]]
--[[linux-4.4.1/uvc_buffer]]

         spin_lock_irqsave(&queue->irqlock, flags);
         if (likely(!(queue->flags & UVC_QUEUE_DISCONNECTED))) {
                 list_add_tail(&buf->queue, &queue->irqqueue);
         } else {
                 /* If the device is disconnected return the buffer to userspace
                  * directly. The next QBUF call will fail with -ENODEV.
                  */
                 buf->state = UVC_BUF_STATE_ERROR;
                 vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
         }
 
-
--[[linux-4.4.1/spin_lock_irqsave()]]
--[[linux-4.4.1/likely()]]
--[[linux-4.4.1/list_add_tail()]]
--[[linux-4.4.1/vb2_buffer_done()]]

         spin_unlock_irqrestore(&queue->irqlock, flags);
-
--[[linux-4.4.1/spin_unlock_irqrestore()]]

 }


*コメント [#e1610bba]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS