oskit/oskit-20020317/doc/freebsd-dev.tex

200 lines
5.9 KiB
TeX
Raw Normal View History

2016-02-19 15:02:31 +03:00
%
% Copyright (c) 1997-1998, 2000 University of Utah and the Flux Group.
% All rights reserved.
%
% The University of Utah grants you the right to copy and reproduce this
% document or portions thereof for academic, research, evaluation, and
% personal use only, provided that (1) the title page appears prominently,
% and (2) these copyright and permission notices are retained in all copies.
% To arrange for alternate terms, contact the University of Utah at
% csl-dist@cs.utah.edu or +1-801-585-3271.
%
% -*- LaTeX -*-
\label{freebsd-dev}
\section{Introduction}
{\bf This chapter is woefully incomplete. }
The \oskit{} \freebsd{} device library provides an infrastructure for using
unmodified \freebsd{} 2.1.7 device drivers.
\section{Supported Devices}
\label{freebsd-dev-sup}
The \freebsd{} device library currently supports only the system console and
a few ISA-based serial port interfaces all exporting the {\tt oskit_ttystream}
interface.
Only the system console and PS/2 mouse have been tested.
Following is a list of supported drivers.
The tag is the name used by the device library to refer to the devices
(see Section~\ref{fdev-naming} for details on device naming).
\begin{itemize}
\item[sc]
PC system console.
\item[sio]
PC serial port.
\item[cx]
ISA bus Cronyx-Sigma serial port adapter.
\item[cy]
ISA bus Cyclades Cyclom-Y serial board.
\item[rc]
ISA bus RISCom/8 serial board.
\item[si]
ISA bus Specialix serial line multiplexor.
\item[mse]
Bus mouse.
\item[psm]
PS/2 mouse.
\end{itemize}
\apisec{Header Files}
\api{freebsd.h}{common device driver framework definitions}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\end{apisyn}
\begin{apidesc}
Contains common definitions and function prototypes for
the \oskit's \freebsd{} device interfaces described in the next section.
\end{apidesc}
\apisec{Interfaces}
\api{oskit_freebsd_init}{Initialize and \freebsd{} device driver support package}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto void oskit_freebsd_init(void);
\end{apisyn}
\ostodrv
\begin{apidesc}
Initializes the support code for \freebsd{} device drivers.
Currently the {\tt oskit_freebsd_init_\emph{driver}} routines
take care of invoking any required freebsd device initialization
functions, including this one. This may change in the future.
% {\tt oskit_freebsd_init} should be called before any other
% {\tt oskit_freebsd_*} interface.
\end{apidesc}
\api{oskit_freebsd_init_devs}{Initialize and register all \freebsd{} device drivers}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto void oskit_freebsd_init_devs(void);
\end{apisyn}
\ostodrv
\begin{apidesc}
Initialize and register all available \freebsd{} device drivers.
Warning messages will be printed with {\tt osenv_log} for drivers
which cannot be initialized but the initialization process will
continue.
\end{apidesc}
\begin{apirel}
{\tt osenv_log}
\end{apirel}
\api{oskit_freebsd_init_isa}{Initialize and register all \freebsd{} ISA bus device drivers}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto void oskit_freebsd_init_isa(void);
\end{apisyn}
\ostodrv
\begin{apidesc}
Initialize and register all available \freebsd{} ISA bus device drivers.
See {\tt <oskit/dev/freebsd_isa.h>} for the currently available
devices.
Warning messages will be printed with {\tt osenv_log} for drivers
which cannot be initialized but the initialization process will
continue.
Currently the {\tt oskit_freebsd_init_\emph{driver}} routines
take care of invoking any required freebsd device initialization
functions, including this one. This may change in the future.
\end{apidesc}
\begin{apirel}
{\tt osenv_log}
\end{apirel}
\api{oskit_freebsd_init_\emph{driver}}{Initialize and register a single \freebsd{} device driver}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto oskit_error_t oskit_freebsd_init_\emph{driver}(void);
\end{apisyn}
\ostodrv
\begin{apidesc}
Initialize a single \freebsd{} device driver.
Possible values for \emph{driver} are listed in
Section~\ref{freebsd-dev-sup}.
\end{apidesc}
\begin{apiret}
Returns 0 on success,
an error code specified in {\tt <oskit/dev/error.h>} on error.
\end{apiret}
\apisec{``Back door'' Interfaces}
``Back door'' interfaces are intended for users which have some builtin
knowledge of \freebsd{} internals and want to convert that knowledge to
interface-level equivalents.
\api{oskit_freebsd_chardev_open}{Open a character device using a \freebsd{} major/minor device value}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto oskit_error_t oskit_freebsd_chardev_open(int major, int minor,
int flags,
\outparam oskit_ttystream_t **tty_stream);
\end{apisyn}
\ostodrv
\begin{apidesc}
Opens a character device given a
\freebsd{} major and minor device value.
Returns a pointer to an {\tt oskit_ttystream_t} interface as though
{\tt oskit_ttydev_open} was called on an \oskit{} {\tt oskit_ttydev_t} interface.
\end{apidesc}
\begin{apiparm}
\item[major]
Major device number.
In \freebsd, this is the index of the device
in the character device switch.
\item[minor]
Minor device number.
In \freebsd, the interpretation of the minor device number
is device specific.
\item[flags]
\posix{} {\tt open} flags.
\item[tty_stream]
Returned {\tt oskit_ttystream_t} interface.
\end{apiparm}
\begin{apiret}
Returns 0 on success,
an error from {\tt <oskit/dev/error.h>} otherwise.
\end{apiret}
\api{oskit_freebsd_xlate_errno}{Translate a \freebsd{} error number}
\begin{apisyn}
\cinclude{oskit/dev/freebsd.h}
\funcproto oskit_error_t oskit_freebsd_xlate_errno(int freebsd_error);
\end{apisyn}
\ostodrv
\begin{apidesc}
Translates a \freebsd{} error number into an \oskit{} error number.
\end{apidesc}
\begin{apiparm}
\item[freebsd_error]
The \freebsd{} error code to be translated.
\end{apiparm}
\begin{apiret}
Returns an equivalent error value from {\tt <oskit/dev/error.h>},
or {\tt OSKIT_E_UNEXPECTED} if there is no suitable translation.
\end{apiret}