On Fri, 18 Jul 2003, Terry Lambert wrote: > Marc Ramirez wrote: > > I asked this in -questions, but got no response; sorry for the repost. > > > > I have a device driver that needs to make requests for data from a > > userland daemon. What's the preferred method for doing this in 4.8R and > > 5.1R? I'm assuming the answer is Unix-domain sockets... > > It depends on the application. In most cases these are set up > as request/response protocols. > > In that case, the best method is to ise an ioctl() or fcntl() > (which you use depends on what in the kernel is talking to > userland), and then "returning" to user space with the request. > The userland then makes another call back down with the response, > and the next wait-for-request. This saves you fully 50% of the > protection domain crossing system calls from an ordinary callback, > and it saves you 300% of the protection domain crossings of what > you would need for a pipe/FIFO/unix-domain-socket.
I understand. Thanks! > E.g.: > > user kernel > ---- ------ > REQ1 make_req() > sleep_waiting_for_available() > ioctl(fd, MY_GETREQ, &req) > sleep_waiting_for_req() > copyout() > sleep_waiting_for_rsp() > ioctl(fd, MY_RSPREQ, &req) > sleep_waiting_for_req() > copyin() > ... > REQ2 make_req() > copyout() > sleep_waiting_for_rsp() > ioctl(fd, MY_RSPREQ, &req) > sleep_waiting_for_req() > copyin() > ... > ... > > -- Terry > -- Marc Ramirez Blue Circle Software Corporation 513-688-1070 (main) 513-382-1270 (direct) www.bluecirclesoft.com _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"