7131697 :(se) Need AsynchronousChannelProvider implementation (original) (raw)

Alan Bateman Alan.Bateman at oracle.com
Fri Jan 27 05:35:23 PST 2012


The Mac port doesn't currently have an implementation of the asynchronous I/O API and so all tests for this area, including JCK tests, are failing. I've whipped up an initial implementation based on kqueue and put the webrev here:

http://cr.openjdk.java.net/~alanb/7131697/webrev/

It's very simple and works very similarly to the the epoll based implementation that we have on Linux. It passes all tests on both 10.6.8 and 10.7. In summary, each channel group has a kernel queue and channels associated with the group register for events on that queue. The channel group's thread pool services the events. The events are retrieved in batch by a leader thread that makes them available to any other threads. There is clearly some performance work that needs to be done around this but it's not critical in the short term.

Note that that sun.nio.ch.KQueue is its own class so that we can re-use in a re-work of Apple's kqueue based Selector implementation. That Selector needs a bit of work in order to pass all tests and so is not currently used by default. Another thing to mention is that I updated the mapfile although that doesn't appear to be used in the current build.

-Alan.



More information about the macosx-port-dev mailing list