|
[ source navigation ] [ diff markup ] [ identifier search ] [ general search ] |
|||
|
001 /* Copyright (C) 2005 David Decotigny 001 /* Copyright (C) 2005 David Decotigny 002 002 003 This program is free software; you can redi 003 This program is free software; you can redistribute it and/or 004 modify it under the terms of the GNU Genera 004 modify it under the terms of the GNU General Public License 005 as published by the Free Software Foundatio 005 as published by the Free Software Foundation; either version 2 006 of the License, or (at your option) any lat 006 of the License, or (at your option) any later version. 007 007 008 This program is distributed in the hope tha 008 This program is distributed in the hope that it will be useful, 009 but WITHOUT ANY WARRANTY; without even the 009 but WITHOUT ANY WARRANTY; without even the implied warranty of 010 MERCHANTABILITY or FITNESS FOR A PARTICULAR 010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 011 GNU General Public License for more details 011 GNU General Public License for more details. 012 012 013 You should have received a copy of the GNU 013 You should have received a copy of the GNU General Public License 014 along with this program; if not, write to t 014 along with this program; if not, write to the Free Software 015 Foundation, Inc., 59 Temple Place - Suite 3 015 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 016 USA. 016 USA. 017 */ 017 */ 018 #ifndef _SOS_SYSCALL_H_ 018 #ifndef _SOS_SYSCALL_H_ 019 #define _SOS_SYSCALL_H_ 019 #define _SOS_SYSCALL_H_ 020 020 021 /** 021 /** 022 * @file syscall.h 022 * @file syscall.h 023 * 023 * 024 * SOS Syscalls identifiers and handler. The h 024 * SOS Syscalls identifiers and handler. The handler is called by the 025 * underlying assembler routine (see hwcore/sy 025 * underlying assembler routine (see hwcore/syscall.h) 026 */ 026 */ 027 027 028 028 029 /** 029 /** 030 * The user services offered by the SOS kernel 030 * The user services offered by the SOS kernel 031 */ 031 */ 032 #define SOS_SYSCALL_ID_EXIT 256 /**< Ar 032 #define SOS_SYSCALL_ID_EXIT 256 /**< Args: retval, retval=NONE */ 033 033 >> 034 >> 035 /** >> 036 * Basic low-level user thread API >> 037 */ >> 038 #define SOS_SYSCALL_ID_NEW_THREAD 128 /**< Args: start_func start_arg1 start_arg2 stack_size, retval=errno */ >> 039 #define SOS_SYSCALL_ID_NANOSLEEP 129 /**< Args: sec nanosec, retval=errno */ >> 040 >> 041 >> 042 /** >> 043 * User memory mappings management >> 044 */ >> 045 #define SOS_SYSCALL_ID_FORK 257 /**< Args: NONE, retval={father:child_pd, child:0} */ >> 046 #define SOS_SYSCALL_ID_EXEC 258 /**< Args: ptr_exec_path strlen_exec_path, retval=errno */ >> 047 #define SOS_SYSCALL_ID_MMAP 259 /**< Args: &hint len prot flags fd uoffs64_hi uoffs64_lo, retval=errno */ >> 048 #define SOS_SYSCALL_ID_MUNMAP 260 /**< Args: start_uaddr size, retval=errno */ >> 049 #define SOS_SYSCALL_ID_MPROTECT 261 /**< Args: start_uaddr size access_rights, retval=errno */ >> 050 #define SOS_SYSCALL_ID_MRESIZE 262 /**< Args: old_uaddr old_size ptr_new_uaddr new_size flags, retval=errno */ >> 051 >> 052 >> 053 /** >> 054 * Heap management >> 055 */ >> 056 #define SOS_SYSCALL_ID_BRK 263 /**< Args: 0/new_top_heap, retval=top_heap */ >> 057 034 #define SOS_SYSCALL_ID_BOCHS_WRITE 43 /**< Ar 058 #define SOS_SYSCALL_ID_BOCHS_WRITE 43 /**< Args: string, retval=num_printed */ 035 059 036 060 037 #if defined(KERNEL_SOS) && !defined(ASM_SOURCE 061 #if defined(KERNEL_SOS) && !defined(ASM_SOURCE) 038 062 039 #include <sos/errno.h> 063 #include <sos/errno.h> 040 #include <hwcore/cpu_context.h> 064 #include <hwcore/cpu_context.h> 041 065 042 /** 066 /** 043 * "The" SOS syscall handler 067 * "The" SOS syscall handler 044 * 068 * 045 * @param syscall_id The identifier of the sys 069 * @param syscall_id The identifier of the syscall service 046 * @param user_ctxt The user context making th 070 * @param user_ctxt The user context making the syscall 047 */ 071 */ 048 sos_ret_t sos_do_syscall(int syscall_id, 072 sos_ret_t sos_do_syscall(int syscall_id, 049 const struct sos_cpu_ 073 const struct sos_cpu_state *user_ctxt); 050 074 051 #endif /* defined(KERNEL_SOS) && !defined(ASM_ 075 #endif /* defined(KERNEL_SOS) && !defined(ASM_SOURCE) */ 052 076 053 #endif /* _SOS_SYSCALL_H_ */ 077 #endif /* _SOS_SYSCALL_H_ */
[ source navigation ] | [ diff markup ] | [ identifier search ] | [ general search ] |