Александр Карпич wrote:
> Could you briefly tell me about the source tree of minix?
include/
lib/lib*/
kernel/
have the obvious meaning. Kernel is just the micro-kernel.
servers/*/
have the user-mode servers which make the system run; this is where
you'll find VM, VFS, PM (process manager), Init, RS (reincarnation)
which is the "init" for services, etc.
drivers/*/
have the user-mode drivers which deal with the hardware and pseudo-hardware
commands/*/
have the user level commands which are specific to MINIX (as opposed to
those reimplemented from NetBSD)
releasetools/*/ (was /tools/*/ up to 3.2.1)
have the building bits and bolts
The rest is aligned with NetBSD.
> Where can I get full list of available system calls?
There are two class of traps: IPC and system, or kernel, calls.
IPC calls are very few in number: send, receive, sendrec, sendnb,
notify, senda.
Kernel calls are more, and the list is slightly varying; they used to be
described in
http://wiki.minix3.org/en/DevelopersGuide/KernelApi but I
am not sure the documentation is up-to-date; you can also browse
lib/libsys/sys_*.c files to find them; you can also look at
<minix/syslib.h> for a functional list, and at <minix/com.h> under
SYSTASK for the implementation
At a higher level you will find the "calls" which are really messages
between tasks (including services and the kernel.) They are really IPC
exchanges using the sendrec() processus above, wrapped into a function
to ease programmers. The basic brick is _taskcall() (in libsys), and its
sibling _syscall() in libc/sys-minix; the last one is used to implement
the POSIX API, with their numbers from <minix/callnr.h>
Antoine