jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java
changeset 22604 9b394795e216
parent 19607 bee007586d06
child 23010 6dadb192ad81
equal deleted inserted replaced
22603:816588059f9d 22604:9b394795e216
   170     void startPoll(int fd, int events) {
   170     void startPoll(int fd, int events) {
   171         // We use a separate filter for read and write events.
   171         // We use a separate filter for read and write events.
   172         // TBD: Measure cost of EV_ONESHOT vs. EV_CLEAR, either will do here.
   172         // TBD: Measure cost of EV_ONESHOT vs. EV_CLEAR, either will do here.
   173         int err = 0;
   173         int err = 0;
   174         int flags = (EV_ADD|EV_ONESHOT);
   174         int flags = (EV_ADD|EV_ONESHOT);
   175         if ((events & Port.POLLIN) > 0)
   175         if ((events & Net.POLLIN) > 0)
   176             err = keventRegister(kqfd, fd, EVFILT_READ, flags);
   176             err = keventRegister(kqfd, fd, EVFILT_READ, flags);
   177         if (err == 0 && (events & Port.POLLOUT) > 0)
   177         if (err == 0 && (events & Net.POLLOUT) > 0)
   178             err = keventRegister(kqfd, fd, EVFILT_WRITE, flags);
   178             err = keventRegister(kqfd, fd, EVFILT_WRITE, flags);
   179         if (err != 0)
   179         if (err != 0)
   180             throw new InternalError("kevent failed: " + err);  // should not happen
   180             throw new InternalError("kevent failed: " + err);  // should not happen
   181     }
   181     }
   182 
   182 
   225                             PollableChannel channel = fdToChannel.get(fd);
   225                             PollableChannel channel = fdToChannel.get(fd);
   226                             if (channel != null) {
   226                             if (channel != null) {
   227                                 int filter = getFilter(keventAddress);
   227                                 int filter = getFilter(keventAddress);
   228                                 int events = 0;
   228                                 int events = 0;
   229                                 if (filter == EVFILT_READ)
   229                                 if (filter == EVFILT_READ)
   230                                     events = Port.POLLIN;
   230                                     events = Net.POLLIN;
   231                                 else if (filter == EVFILT_WRITE)
   231                                 else if (filter == EVFILT_WRITE)
   232                                     events = Port.POLLOUT;
   232                                     events = Net.POLLOUT;
   233 
   233 
   234                                 Event ev = new Event(channel, events);
   234                                 Event ev = new Event(channel, events);
   235 
   235 
   236                                 // n-1 events are queued; This thread handles
   236                                 // n-1 events are queued; This thread handles
   237                                 // the last one except for the wakeup
   237                                 // the last one except for the wakeup