chpoll(9e) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

chpoll(9e)

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 prefix_chpoll(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 de‐
       vice 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 in‐
                  stance 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 oc‐
                  cur. 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 pollwakeup(9F) that is
                  acquired  in its chpoll() entry point, or a deadlock may re‐
                  sult.



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

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


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4            9 September 2024                     chpoll(9E)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3