List of available system calls

538 views
Skip to first unread message

Александр Карпич

unread,
Mar 21, 2013, 12:35:45 AM3/21/13
to min...@googlegroups.com
Hello, minix hackers!

I am engaged in the creation of a prototype of the security system for microkernel operating systems
by using analysis of the frequency of use system calls using machine learning methods.

In my research, I would like to use minix3.

Could you briefly tell me about the source tree of minix?

Where can I get full list of available system calls?

P.S. Sorry for my bad English.

Antoine LECA

unread,
Mar 21, 2013, 4:31:16 AM3/21/13
to min...@googlegroups.com
Александр Карпич 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
Reply all
Reply to author
Forward
0 new messages