Next:
Introduction
FUSD:
A Linux
F
ramework for
U
ser-
S
pace
D
evices
Jeremy Elson
jelson@circlemud.org
http://www.circlemud.org/jelson/software/fusd
19 August 2003
Documentation for FUSD 1.10
Introduction
What is FUSD?
How does FUSD work?
What FUSD
Isn't
Related Work
Limitations and Future Work
Author Contact Information and Acknowledgments
Licensing Information
Why use FUSD?
Device Driver Layering
Use of User-Space Libraries
Driver Memory Protection
Giving libraries language independence and standard notification interfaces
Development and Debugging Convenience
Installing FUSD
Prerequisites
Compiling FUSD as a Kernel Module
Testing and Troubleshooting
Installation
Making FUSD Part of the Kernel Proper
Basic Device Creation
Using
fusd_register
to create a new device
The
open
and
close
callbacks
The
read
callback
The
write
callback
Unregistering a device with
fusd_unregister()
Using Information in
fusd_file_info
Registration of Multiple Devices, and Passing Data to Callbacks
The difference between
device_info
and
private_data
Writing
ioctl
Callbacks
Using macros to generate
ioctl
command numbers
Example client calls and driver callbacks
Integrating FUSD With Your Application Using
fusd_dispatch()
Using
fusd_dispatch()
Helper Functions for Constructing an
fd_set
Implementing Blocking System Calls
Blocking the caller by blocking the driver
Blocking the caller using
-FUSD_NOREPLY
; unblocking it using
fusd_return()
Keeping Per-Client State
Blocking and completing reads
Using
fusd_destroy()
to clean up client state
Retrieving a blocked system call's arguments from a
fusd_file_info
pointer
Implementing
select
able Devices
Poll state and the
poll_diff
callback
Receiving a
poll_diff
request when the previous one has not been returned yet
Adding
select
support to
pager.c
Performance of User-Space Devices
FUSD Implementation Notes
The situation with
poll_diff
Restartable System Calls
Using
strace
About this document ...
Jeremy Elson 2003-08-20