File interface
A companion core usually wants its device drivers to export a file interface to
applications. It may even generalize this to all of the
resources it provides, which can then be implemented by device drivers
and referred to by common file descriptors from applications. To this
end, Dovetail enables safe out-of-band access to the regular
fget()/fput() interface for performing file lookups.
In addition, the file description structure maintained by the
VFS
(struct file) contains an opaque pointer named f_oob_ctx, which
may be used freely for keeping any information related to out-of-band
handling. The f_oob_ctx member comes in handy as a way for the
companion core to figure out whether a given file (struct) supports
out-of-band requests. If non-NULL, it may assume some out-of-band
capable driver set it for such a file when
opening its
device.
As an example, the EVL core uses these Dovetail features for implementing its own interface to out-of-band file operations such as oob_ioctl(), oob_read() and oob_write().
