Messages in this thread | | | Date | Sat, 19 May 2001 22:31:56 -0400 (EDT) | From | Alexander Viro <> | Subject | Re: [RFD w/info-PATCH] device arguments from lookup, partion code |
| |
On Sat, 19 May 2001, Richard Gooch wrote:
> There is another reason to use ioctl(2): when you need to send data to > the kernel/driver and wait for a response. It supports transactions, > which read(2) and write(2) cannot. Therefore it remains useful.
Somebody, run to database vendors and tell them that they were selling snake oil all that time - Richard had just shown that support of remote transactions is impossible. Can't do that with read() and write(), dontcha know?
Richard, I hate to break it on you, but fd = open(foo, 2); /* kernel creates a new struct file, as usual */ write(fd, data, len); /* kernel starts the operation */ read(fd, reply, size); /* we block */ /* operation is completed */ /* kernel passes reply to user and wakes it up */ _is_ a support of transactions. And yes, we can trivially distinguish between requests from different sources - struct file * passed to ->write() is more than enough for that. Moreover, we can easily block other writers until the action is completed.
Please, get a bloody clue. There are reasons for and against ioctls, but need to send data and wait for responce is _NOT_ one of them.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |