From owner-freebsd-hackers Tue Jun 12 6:51:48 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from ns1.in.yahoo.com (ns1.in.yahoo.com [203.199.70.6]) by hub.freebsd.org (Postfix) with ESMTP id 95A6B37B405 for ; Tue, 12 Jun 2001 06:51:37 -0700 (PDT) (envelope-from manas@yahoo-inc.com) Received: from yahoo-inc.com (bangalore.in.yahoo.com [203.200.52.16]) by ns1.in.yahoo.com (8.11.1/8.11.1/smtp.in) with ESMTP id f5CDp1F29874; Tue, 12 Jun 2001 19:21:01 +0530 (IST) Message-ID: <3B26286F.E5E6F327@yahoo-inc.com> Date: Tue, 12 Jun 2001 19:34:24 +0500 From: manas X-Mailer: Mozilla 4.75 [en] (X11; U; FreeBSD 4.0-YAHOO-20000510 i386) X-Accept-Language: en MIME-Version: 1.0 To: Anjali Kulkarni Cc: hackers@FreeBSD.ORG Subject: Re: User-Level upcalls References: <200106121221.FAA16567@smtpout.mac.com> <043f01c0f340$dbf95160$0a64a8c0@indranetworks.com> Content-Type: multipart/alternative; boundary="------------F4838F767407969251B21021" Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --------------F4838F767407969251B21021 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit try signal based i/o. basically you have set a signal handler (SIG_IO) and then handle read/write when the signal gets generated. i don't exactly remember the command. it the function call is aio_read/aio_write. check the man thanks manas Anjali Kulkarni wrote: > Hi, Thanks a lot for the info. But how can I use poll and select to > make the kernel call the user-upcall? Poll and select will run in > user-mode and will take processor cycles in busy waiting. I want an > event-driven mechanism in which kernel will automatically call the > upcall(like an interrupt) when it receives a data packet at the TCP > layer, to avoid polling in user code to check if data has arrived at > the socket.I will read about kqueues, and fcntl which I dont know much > about:) Thanks,Anjali > > ----- Original Message ----- > From: Josh Osborne > To: Anjali Kulkarni > Sent: Tuesday, June 12, 2001 5:50 PM > Subject: Re: User-Level upcalls > On Tuesday, June 12, 2001, at 05:34 AM, Anjali Kulkarni > wrote: > > > Arial>hi, > > Does any one > know how to perform user-level upcalls from kernel > TCP/IP stack? If I wanted to get an upcall every > time a data packet arrived on a socket, how can it > be done? Can I use signal handlers for > this? > > Arial>Thanks, > Arial>Anjali > > kqueue is the nicest interface, but new and not as portable > as others. > poll and select are more traditional, and popular. > you can also try fcntl's O_ASYNC flag, but I have never used > it. > --------------F4838F767407969251B21021 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit try signal based i/o. basically you have set a signal handler (SIG_IO) and then handle read/write when the signal gets generated. i don't exactly remember the command. it the function call is aio_read/aio_write. check the man
thanks
manas

Anjali Kulkarni wrote:

Hi, Thanks a lot for the info. But how can I use poll and select to make the kernel call the user-upcall? Poll and select will run in user-mode and will take processor cycles in busy waiting. I want an event-driven mechanism in which kernel will automatically call the upcall(like an interrupt) when it receives a data packet at the TCP layer, to avoid polling in user code to check if data has arrived at the socket.I will read about kqueues, and fcntl which I dont know much about:) Thanks,Anjali
----- Original Message -----
Sent: Tuesday, June 12, 2001 5:50 PM
Subject: Re: User-Level upcalls
 On Tuesday, June 12, 2001, at 05:34 AM, Anjali Kulkarni wrote:
 
<?fontfamily><?param Arial><?smaller>hi,<?/smaller><?/fontfamily>

<?fontfamily><?param Arial><?smaller>Does any one know how to perform user-level upcalls from kernel TCP/IP stack? If I wanted to get an upcall every time a data packet arrived on a socket, how can it be done? Can I use signal handlers for this?<?/smaller><?/fontfamily>

<?fontfamily><?param Arial><?smaller>Thanks,<?/smaller><?/fontfamily>
<?fontfamily><?param Arial><?smaller>Anjali<?/smaller><?/fontfamily>

kqueue is the nicest interface, but new and not as portable as others.
poll and select are more traditional, and popular.
you can also try fcntl's O_ASYNC flag, but I have never used it.

--------------F4838F767407969251B21021-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message