Print this page
8634 epoll fails to wake on certain edge-triggered conditions
8635 epoll should not emit POLLNVAL
8636 recursive epoll should emit EPOLLRDNORM
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Igor Kozhukhov <igor@dilos.org>


 132         int             bd_bufsize;     /* absolute length of buffers */
 133 
 134         uintptr_t       bd_bif;         /* interface pointer */
 135         ulong_t         bd_rtout;       /* Read timeout in 'ticks' */
 136         struct bpf_insn *bd_filter;     /* filter code */
 137         size_t          bd_filter_size;
 138         ulong_t         bd_rcount;      /* number of packets received */
 139         ulong_t         bd_dcount;      /* number of packets dropped */
 140         ulong_t         bd_ccount;      /* number of packets captured */
 141 
 142         uchar_t         bd_promisc;     /* true if listening promiscuously */
 143         uchar_t         bd_state;       /* idle, waiting, or timed out */
 144         uchar_t         bd_immediate;   /* true to return on packet arrival */
 145         int             bd_hdrcmplt;    /* false to fill in src lladdr */
 146         int             bd_seesent;     /* true if bpf should see sent pkts */
 147         int             bd_async;       /* non-zero if packet reception .. */
 148                                         /* .. should generate signal */
 149         int             bd_nonblock;    /* non-zero for non-blocking read */
 150         pid_t           bd_pgid;        /* process or group id for signal */
 151         int             bd_timedout;
 152         struct pollhead bd_poll;
 153         timeout_id_t    bd_callout;     /* for BPF timeouts with select */
 154         pid_t           bd_pid;         /* corresponding PID */
 155         void            *bd_sih;        /* soft interrupt handle */
 156         /*
 157          * Solaris specific bits after this.
 158          */
 159         kmutex_t        bd_lock;
 160         kcondvar_t      bd_wait;
 161         uintptr_t       bd_mh;          /* where mac_handle gets put */
 162         uintptr_t       bd_mcip;        /* Where mac_client_handle_t gets put */
 163         uintptr_t       bd_promisc_handle;
 164         minor_t         bd_dev;         /* device number for this handle */
 165         int             bd_fmode;       /* flags from bpfopen */
 166         zoneid_t        bd_zone;        /* zoneid of the opening process */
 167         int             bd_inuse;
 168         int             bd_waiting;
 169         char            bd_ifname[LIFNAMSIZ];
 170         int             bd_dlt;
 171         int             bd_hdrlen;
 172         bpf_provider_t  bd_mac;




 132         int             bd_bufsize;     /* absolute length of buffers */
 133 
 134         uintptr_t       bd_bif;         /* interface pointer */
 135         ulong_t         bd_rtout;       /* Read timeout in 'ticks' */
 136         struct bpf_insn *bd_filter;     /* filter code */
 137         size_t          bd_filter_size;
 138         ulong_t         bd_rcount;      /* number of packets received */
 139         ulong_t         bd_dcount;      /* number of packets dropped */
 140         ulong_t         bd_ccount;      /* number of packets captured */
 141 
 142         uchar_t         bd_promisc;     /* true if listening promiscuously */
 143         uchar_t         bd_state;       /* idle, waiting, or timed out */
 144         uchar_t         bd_immediate;   /* true to return on packet arrival */
 145         int             bd_hdrcmplt;    /* false to fill in src lladdr */
 146         int             bd_seesent;     /* true if bpf should see sent pkts */
 147         int             bd_async;       /* non-zero if packet reception .. */
 148                                         /* .. should generate signal */
 149         int             bd_nonblock;    /* non-zero for non-blocking read */
 150         pid_t           bd_pgid;        /* process or group id for signal */
 151         int             bd_timedout;

 152         timeout_id_t    bd_callout;     /* for BPF timeouts with select */
 153         pid_t           bd_pid;         /* corresponding PID */
 154         void            *bd_sih;        /* soft interrupt handle */
 155         /*
 156          * Solaris specific bits after this.
 157          */
 158         kmutex_t        bd_lock;
 159         kcondvar_t      bd_wait;
 160         uintptr_t       bd_mh;          /* where mac_handle gets put */
 161         uintptr_t       bd_mcip;        /* Where mac_client_handle_t gets put */
 162         uintptr_t       bd_promisc_handle;
 163         minor_t         bd_dev;         /* device number for this handle */
 164         int             bd_fmode;       /* flags from bpfopen */
 165         zoneid_t        bd_zone;        /* zoneid of the opening process */
 166         int             bd_inuse;
 167         int             bd_waiting;
 168         char            bd_ifname[LIFNAMSIZ];
 169         int             bd_dlt;
 170         int             bd_hdrlen;
 171         bpf_provider_t  bd_mac;