User Tools

Site Tools


releases:3.2.0:developersguide:minixapi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

releases:3.2.0:developersguide:minixapi [2014/11/11 14:52]
releases:3.2.0:developersguide:minixapi [2014/11/11 14:52] (current)
Line 1: Line 1:
 +====== APIs ======
 +
 +<div round info>
 +**Stale page**
 +
 +The contents of this page must be revised to reflect the current state of MINIX3.
 +</​div>​
 +
 +===== Introduction =====
 +
 +MINIX 3 is highly modular. The system consists of components, some of which offer services to
 +other components, some of which use services offered by other components, and some of which do both.
 +A component offering services does so through its Application Programming Interface (API), which
 +is a set of parameterized methods that other components can invoke. This invocation is done by having
 +the service user call a library function that constructs a short fixed-length message containing the
 +method number and the parameters which is then sent to the service provider. After the service
 +provider has finished its work, it sends back a reply message. Invocations are normally blocking,
 +but in some cases non-blocking calls are available. To write a component, it is necessary to understand ​
 +the APIs the component offers and those it uses. The purpose of this document is to provide
 +component writers with links to the various APIs.
 +
 +===== The Kernel =====
 +The kernel offers an API that is used by the drivers and servers for obtaining kernel services.
 +Kernel calls fall roughly in the following categories: I/O, copying, time management, ...
 +Not every kernel call may be available to every system component; a bit map in each process table
 +entry tells which kernel calls the process can make.
 +The bit map for a component is created by hand after the driver is finished, based on which calls it needs.
 +In this way, accidental invocations of kernel calls the driver should not be making are caught.
 +The complete set of kernel calls is described in the kernel reference manual, available [[.:​kernelapi|here]].
 +
 +===== Device Drivers =====
 +Drivers have three APIs: with the kernel, the file server, and the reincarnation server, respectively.
 +The kernel API allows drivers to obtain kernel services, such as performing I/O and moving data
 +between address spaces.
 +The file server API defines the services drivers provide to the file server, such as reading and
 +writing blocks of data.
 +Finally, the reincarnation server API defines the way the reincarnation checks if drivers are still
 +alive and how drivers must respond to avoid being killed.
 +These three APIs are described in the following documents.
 +
 +|**API** | **Service provider** | **Service User** |
 +| [[.:​kernelapi|Kernel calls]] | Kernel | Device drivers |
 +| Driver calls |Driver|File server|
 +|Reincarnation|Driver|Reincarnation server|
 +
 +===== Servers =====
 +The servers are called by user programs to obtain POSIX services. In turn, they make kernel calls
 +and calls to drivers to get their work done. Here are the relevant APIs for servers.
 +
 +| **API** || **Service provider** || **Service User** |
 +| [[.:​kernelapi|Kernel calls]] || Kernel || Server |
 +| Driver calls ||Driver||File server|
 +|Reincarnation||Server||Reincarnation server|
 +|POSIX||Server||User programs|
  
releases/3.2.0/developersguide/minixapi.txt · Last modified: 2014/11/11 14:52 (external edit)