Date: Fri, 02 Mar 2001 18:02:56 +0300 (MSK) From: Dmitry Dicky <diwil@eis.ru> To: freebsd-hackers@freebsd.org Subject: stupid device driver question Message-ID: <XFMail.010302180256.diwil@eis.ru>
next in thread | raw e-mail | index | archive | help
Hi fellows, I'm writing some device driver which should pass some data to the user space. The part of the device read routine looks as follows: ---------------------------------- int dev_read(dev_t dev, struct uio *uio, int ioflag) { int err = 0; /* ... */ amnt = MIN(uio->uio_resid, cntw); /* Wait here until data available .... how? */ err = uiomove(buf2, amnt, uio); if (err != 0) { return(err); } memset(buf2, 0, amnt); cntw -= amnt; return 0; } ------------------------------------- User application hands on read(2). But buf2 being filled upon some event and 'dev_read' should wait until data in buf2 available. So, the question is: How can I hang dev_read, issue some signal and then continue uiomove(9) data to the user space? Thanks in advance, D. -- ********************************************************************* ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) Enterprise Information Sys (_Y_.)' ._ ) `._ `. ``-..-' Nevsky prospekt, 20 / 44 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 3148860, 5585314 ********************************************************************* To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.010302180256.diwil>