Reorganized system call library; uses separate file per call now.
New configuration header file to include/ exclude functionality. Extracted privileged features from struct proc and create new struct priv. Renamed various system calls for readability.
This commit is contained in:
149
kernel/system.h
149
kernel/system.h
@@ -1,60 +1,151 @@
|
||||
/* Function prototypes for the system library. The implementation is contained
|
||||
* in src/kernel/system/. The system library allows to access system services
|
||||
* by doing a system call. System calls are transformed into request messages
|
||||
* to the SYS task that is responsible for handling the call. By convention, a
|
||||
* sys_call() is transformed into a message with type SYS_CALL that is handled
|
||||
* in a function named do_call().
|
||||
/* Function prototypes for the system library. The prototypes in this file
|
||||
* are undefined to do_unused if the kernel call is not enabled in config.h.
|
||||
* The implementation is contained in src/kernel/system/.
|
||||
*
|
||||
* The system library allows to access system services by doing a system call.
|
||||
* System calls are transformed into request messages to the SYS task that is
|
||||
* responsible for handling the call. By convention, sys_call() is transformed
|
||||
* into a message with type SYS_CALL that is handled in a function do_call().
|
||||
*/
|
||||
|
||||
#ifndef SYSTEM_H
|
||||
#define SYSTEM_H
|
||||
|
||||
/* Common includes for the system library. */
|
||||
#include <minix/com.h>
|
||||
#include <minix/config.h>
|
||||
#include "kernel.h"
|
||||
#include "proc.h"
|
||||
|
||||
_PROTOTYPE( int do_exec, (message *m_ptr) ); /* process control */
|
||||
_PROTOTYPE( int do_fork, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_newmap, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_xit, (message *m_ptr) );
|
||||
/* Default handler for unused kernel calls. */
|
||||
_PROTOTYPE( int do_unused, (message *m_ptr) );
|
||||
|
||||
_PROTOTYPE( int do_copy, (message *m_ptr) ); /* copying */
|
||||
_PROTOTYPE( int do_exec, (message *m_ptr) );
|
||||
#if ! USE_EXEC
|
||||
#define do_exec do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_fork, (message *m_ptr) );
|
||||
#if ! USE_FORK
|
||||
#define do_fork do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_newmap, (message *m_ptr) );
|
||||
#if ! USE_NEWMAP
|
||||
#define do_newmap do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_exit, (message *m_ptr) );
|
||||
#if ! USE_EXIT
|
||||
#define do_exit do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_trace, (message *m_ptr) );
|
||||
#if ! USE_TRACE
|
||||
#define do_trace do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_schedctl, (message *m_ptr) );
|
||||
#if ! USE_SCHEDCTL
|
||||
#define do_schedctl do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_copy, (message *m_ptr) );
|
||||
#define do_vircopy do_copy
|
||||
#define do_physcopy do_copy
|
||||
#if ! (USE_VIRCOPY || USE_PHYSCOPY)
|
||||
#define do_copy do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_vcopy, (message *m_ptr) );
|
||||
#define do_virvcopy do_vcopy
|
||||
#define do_physvcopy do_vcopy
|
||||
#if ! (USE_VIRVCOPY || USE_PHYSVCOPY)
|
||||
#define do_vcopy do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_umap, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_physzero, (message *m_ptr) );
|
||||
#if ! USE_UMAP
|
||||
#define do_umap do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_memset, (message *m_ptr) );
|
||||
#if ! USE_MEMSET
|
||||
#define do_memset do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_unused, (message *m_ptr) ); /* miscellaneous */
|
||||
_PROTOTYPE( int do_abort, (message *m_ptr) );
|
||||
#if ! USE_ABORT
|
||||
#define do_abort do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_getinfo, (message *m_ptr) );
|
||||
#if ! USE_GETINFO
|
||||
#define do_getinfo do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_svrctl, (message *m_ptr) );
|
||||
#if ! USE_SVRCTL
|
||||
#define do_svrctl do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_svrctl, (message *m_ptr) ); /* system control */
|
||||
_PROTOTYPE( int do_iopenable, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_segctl, (message *m_ptr) );
|
||||
#if ! USE_SEGCTL
|
||||
#define do_segctl do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_irqctl, (message *m_ptr) );
|
||||
#if ! USE_IRQCTL
|
||||
#define do_irqctl do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_irqctl, (message *m_ptr) ); /* device I/O */
|
||||
_PROTOTYPE( int do_devio, (message *m_ptr) );
|
||||
#if ! USE_DEVIO
|
||||
#define do_devio do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_vdevio, (message *m_ptr) );
|
||||
#if ! USE_VDEVIO
|
||||
#define do_vdevio do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_sdevio, (message *m_ptr) );
|
||||
#if ! USE_SDEVIO
|
||||
#define do_sdevio do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_kill, (message *m_ptr) );
|
||||
#if ! USE_KILL
|
||||
#define do_kill do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_getksig, (message *m_ptr) );
|
||||
#if ! USE_GETKSIG
|
||||
#define do_getksig do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_endksig, (message *m_ptr) );
|
||||
#if ! USE_ENDKSIG
|
||||
#define do_endksig do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_kill, (message *m_ptr) ); /* signal handling */
|
||||
_PROTOTYPE( int do_getsig, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_endsig, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_sigsend, (message *m_ptr) );
|
||||
#if ! USE_SIGSEND
|
||||
#define do_sigsend do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_sigreturn, (message *m_ptr) );
|
||||
_PROTOTYPE( int do_setpriority, (message *m_ptr) );
|
||||
#if ! USE_SIGRETURN
|
||||
#define do_sigreturn do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_times, (message *m_ptr) );
|
||||
#if ! USE_TIMES
|
||||
#define do_times do_unused
|
||||
#endif
|
||||
|
||||
_PROTOTYPE( int do_times, (message *m_ptr) ); /* clock functions */
|
||||
_PROTOTYPE( int do_setalarm, (message *m_ptr) );
|
||||
#define do_flagalrm do_setalarm
|
||||
#define do_signalrm do_setalarm
|
||||
#define do_syncalrm do_setalarm
|
||||
|
||||
_PROTOTYPE( int do_trace, (message *m_ptr) ); /* process tracing */
|
||||
|
||||
#if ! USE_SETALARM
|
||||
#define do_setalarm do_unused
|
||||
#endif
|
||||
|
||||
#endif /* SYSTEM_H */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user