mirror of https://github.com/dzavalishin/oskit/
200 lines
5.9 KiB
TeX
200 lines
5.9 KiB
TeX
|
%
|
||
|
% 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}
|