chpoll man page on Solaris

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
Solaris logo
[printable version]

chpoll(9E)		      Driver Entry Points		    chpoll(9E)

NAME
       chpoll - poll entry point for a non-STREAMS character driver

SYNOPSIS
       #include <sys/types.h>
       #include <sys/poll.h>
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int prefixchpoll(dev_t dev, short events, int anyyet,
	   short *reventsp, struct pollhead **phpp);

INTERFACE LEVEL
       This   entry  point  is	optional.  Architecture	 independent  level  1
       (DDI/DKI).

PARAMETERS
       dev	   The device number for the device to be polled.

       events	   The events that may occur. Valid events are:

		   POLLIN	 Data other than high  priority	 data  may  be
				 read without blocking.

		   POLLOUT	 Normal data may be written without blocking.

		   POLLPRI	 High  priority	 data  may be received without
				 blocking.

		   POLLHUP	 A device hangup has occurred.

		   POLLERR	 An error has occurred on the device.

		   POLLRDNORM	 Normal data (priority band = 0) may  be  read
				 without blocking.

		   POLLRDBAND	 Data  from  a	non-zero  priority band may be
				 read without blocking

		   POLLWRNORM	 The same as POLLOUT.

		   POLLWRBAND	 Priority data (priority  band	>  0)  may  be
				 written.

       anyyet	   A  flag  that  is non-zero if any other file descriptors in
		   the pollfd array have events pending.  The  poll(2)	system
		   call	 takes	a  pointer to an array of pollfd structures as
		   one of its arguments. See the poll(2)  reference  page  for
		   more details.

       reventsp	   A pointer to a bitmask of the returned events satisfied.

       phpp	   A pointer to a pointer to a pollhead structure.

DESCRIPTION
       The  chpoll()  entry  point  routine  is	 used by non-STREAMS character
       device drivers that wish to support polling. The driver must  implement
       the  polling  discipline	 itself.  The following rules must be followed
       when implementing the polling discipline:

	   1.	  Implement the following algorithm when  the  chpoll()	 entry
		  point is called:

		    if (events_are_satisfied_now) {
			 *reventsp = satisfied_events & events;
		    } else {
			 *reventsp = 0;
			 if (!anyyet)
			       *phpp = &my_local_pollhead_structure;
		    }
		    return (0);

	   2.	  Allocate   an	 instance  of  the  pollhead  structure.  This
		  instance may be tied to the per-minor data structure defined
		  by the driver. The pollhead structure should be treated as a
		  "black box" by the driver. Initialize the pollhead structure
		  by  filling  it  with	 zeroes. The size of this structure is
		  guaranteed to remain the same across releases.

	   3.	  Call the pollwakeup()	 function  with	 events	 listed	 above
		  whenever  pollable  events  which  the driver should monitor
		  occur. This function can be called with multiple  events  at
		  one  time.  The  pollwakup()	can  be	 called	 regardless of
		  whether or not the chpoll() entry is called;	it  should  be
		  called every time the driver detects the pollable event. The
		  driver must not hold any mutex  across  the  call  to	 poll‐
		  wakeup(9F)  that is acquired in its chpoll() entry point, or
		  a deadlock may result.

RETURN VALUES
       chpoll() should return 0 for success, or the appropriate error number.

SEE ALSO
       poll(2), nochpoll(9F), pollwakeup(9F)

SunOS 5.10			  7 May 2008			    chpoll(9E)
[top]

List of man pages available for Solaris

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net