*参照元 [#qf5967e4] #backlinks *説明 [#kca58dec] -パス: [[linux-4.4.1/drivers/media/v4l2-core/videobuf2-internal.h]] -FIXME: これは何? --説明 **引数 [#m4d38eac] -struct vb2_buffer *vb -- --[[linux-4.4.1/vb2_buffer]] -op --トークン。呼び出す関数名を指定する。struct vb2_mem_ops のメンバ名である必要がある。 --[[linux-4.4.1/vb2_mem_ops]] -args... --関数に渡す引数 **返り値 [#c9b589e7] -void * -- **参考 [#l08035ff] *実装 [#ce7c46f6] **CONFIG_VIDEO_ADV_DEBUG 有効 [#ad69f7de] #define call_ptr_memop(vb, op, args...) \ ({ \ struct vb2_queue *_q = (vb)->vb2_queue; \ void *ptr; \ \ - --[[linux-4.4.1/vb2_queue]] log_memop(vb, op); \ - --[[linux-4.4.1/log_memop()]] ptr = _q->mem_ops->op ? _q->mem_ops->op(args) : NULL; \ if (!IS_ERR_OR_NULL(ptr)) \ (vb)->cnt_mem_ ## op++; \ -q->memops は const struct vb2_mem_ops * 型 - --q->memops は const struct vb2_mem_ops * 型 --[[linux-4.4.1/vb2_mem_ops]] --[[linux-4.4.1/IS_ERR_OR_NULL()]] ptr; \ }) **CONFIG_VIDEO_ADV_DEBUG 無効 [#e6d6489f] #define call_ptr_memop(vb, op, args...) \ ((vb)->vb2_queue->mem_ops->op ? \ (vb)->vb2_queue->mem_ops->op(args) : NULL) - -q->vb2_queue は struct vb2_queue * 型 -q->vb2_queue->mem_ops は const struct vb2_mem_ops * 型 --vb->vb2_queue は struct vb2_queue * 型 --vb->vb2_queue->mem_ops は const struct vb2_mem_ops * 型 --[[linux-4.4.1/vb2_queue]] --[[linux-4.4.1/vb2_mem_ops]] *コメント [#f6d2ce22]