Try the uvccapture code here -> http://staticwave.ca/source/uvccapture/
It is very small yet very concrete example which makes use of all the V4l2 concepts (open,set format, allocate memory, Request Buffer, Dqbuffer and Query-buffer - all intems of ioclts).
uvcgrab() function is the one to look for which makes use of Dqbuffer and Query-buffer.
ioctl (vd->fd, VIDIOC_DQBUF, &vd->buf);
ioctl (vd->fd, VIDIOC_QBUF, &vd->buf)
While Studying it you can keep looking for the ioctl definition in this link which will ease your understanding.