One important feature that almost every device driver in a system should have is support for the select(2) system call. select allows clients to assemble a set of file descriptors and ask to be notified when one of them becomes readable or writable. This simple feature is deceptively powerful--it allows clients to wait for any number of a set of possible events to occur. This is fundamentally different than (for example) a blocking read, which only unblocks on one kind of event. In this section, we'll describe how FUSD can be used to create a device whose state can be queried by a client's call to select(2).
This section is limited to a discussion what a FUSD driver writer needs to know to implement a selectable device. Details of the FUSD implementation required to support this feature are described in Section 11.1