|
[ 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_MUNMAP 260 /**< Args: start_uaddr size, retval=errno */ >> 048 #define SOS_SYSCALL_ID_MPROTECT 261 /**< Args: start_uaddr size access_rights, retval=errno */ >> 049 #define SOS_SYSCALL_ID_MRESIZE 262 /**< Args: old_uaddr old_size ptr_new_uaddr new_size flags, retval=errno */ >> 050 #define SOS_SYSCALL_ID_MSYNC 263 /**< Args: start_uaddr size flags, retval=errno */ >> 051 >> 052 /** >> 053 * Heap management >> 054 */ >> 055 #define SOS_SYSCALL_ID_BRK 303 /**< Args: 0/new_top_heap, retval=top_heap */ >> 056 >> 057 /** >> 058 * File system interface >> 059 */ >> 060 #define SOS_SYSCALL_ID_MOUNT 555 /**< Args: uaddr_src srclen uaddr_dst dstlen uaddr_fstype flags uaddr_args, retval=errno */ >> 061 #define SOS_SYSCALL_ID_UMOUNT 556 /**< Args: uaddr_path pathlen, retval=errno */ >> 062 #define SOS_SYSCALL_ID_SYNC 557 /**< Args: none, retval=errno */ >> 063 #define SOS_SYSCALL_ID_VFSTAT64 558 /**< Args: uaddr_path pathlen uaddr_vfstat_struct, retval=errno */ >> 064 >> 065 #define SOS_SYSCALL_ID_OPEN 559 /**< Args: path pathlen flags access_rights, retval=fd */ >> 066 #define SOS_SYSCALL_ID_CLOSE 560 /**< Args: fd, retval=errno */ >> 067 #define SOS_SYSCALL_ID_READ 561 /**< Args: fd uaddr_buf uaddr_buflen, retval=errno */ >> 068 #define SOS_SYSCALL_ID_READDIR 562 /**< Args: fd uaddr_dirent, retval=errno */ >> 069 #define SOS_SYSCALL_ID_WRITE 563 /**< Args: fd uaddr_buf uaddr_buflen, retval=errno */ >> 070 #define SOS_SYSCALL_ID_SEEK64 564 /**< Args: fd uaddr_offset whence, retval=errno */ >> 071 #define SOS_SYSCALL_ID_FTRUNCATE64 565 /**< Args: fd length, retval=errno */ >> 072 #define SOS_SYSCALL_ID_FSMMAP 566 /**< Args: &hint len prot flags fd uoffs64_hi uoffs64_lo, retval=errno */ >> 073 #define SOS_SYSCALL_ID_FSYNC 567 /**< Args: fd, retval=errno */ >> 074 #define SOS_SYSCALL_ID_FCNTL 568 /**< Args: fd cmd arg, retval=errno */ >> 075 #define SOS_SYSCALL_ID_IOCTL 569 /**< Args: fd cmd arg, retval=errno */ >> 076 >> 077 #define SOS_SYSCALL_ID_CREAT 570 /**< Args: uaddr_path pathlen access_rights, retval=errno */ >> 078 #define SOS_SYSCALL_ID_LINK 571 /**< Args: uaddr_oldpath oldpathlen uaddr_newpath newpathlen, retval=errno */ >> 079 #define SOS_SYSCALL_ID_RENAME 572 /**< Args: uaddr_oldpath oldpathlen uaddr_newpath newpathlen, retval=errno */ >> 080 #define SOS_SYSCALL_ID_UNLINK 573 /**< Args: uaddr_path pathlen, retval=errno */ >> 081 #define SOS_SYSCALL_ID_SYMLINK 574 /**< Args: uaddr_path pathlen uaddr_target targetlen, retval=errno */ >> 082 #define SOS_SYSCALL_ID_MKNOD 575 /**< Args: uaddr_path pathlen type access_rights major minor, retval=errno */ >> 083 >> 084 #define SOS_SYSCALL_ID_MKDIR 576 /**< Args: uaddr_path pathlen access_rights, retval=errno */ >> 085 #define SOS_SYSCALL_ID_RMDIR 577 /**< Args: uaddr_path pathlen, retval=errno */ >> 086 >> 087 #define SOS_SYSCALL_ID_CHMOD 578 /**< Args: uaddr_path pathlen access_rights, retval=errno */ >> 088 #define SOS_SYSCALL_ID_STAT64 579 /**< Args: uaddr_path pathlen nofollow uaddr_stat_struct, retval=errno */ >> 089 >> 090 #define SOS_SYSCALL_ID_CHROOT 580 /**< Args: uaddr_path pathlen, retval=errno */ >> 091 #define SOS_SYSCALL_ID_CHDIR 581 /**< Args: uaddr_path pathlen, retval=errno */ >> 092 #define SOS_SYSCALL_ID_FCHDIR 582 /**< Args: fd, retval=errno */ >> 093 >> 094 034 #define SOS_SYSCALL_ID_BOCHS_WRITE 43 /**< Ar 095 #define SOS_SYSCALL_ID_BOCHS_WRITE 43 /**< Args: string, retval=num_printed */ 035 096 036 097 037 #if defined(KERNEL_SOS) && !defined(ASM_SOURCE 098 #if defined(KERNEL_SOS) && !defined(ASM_SOURCE) 038 099 039 #include <sos/errno.h> 100 #include <sos/errno.h> 040 #include <hwcore/cpu_context.h> 101 #include <hwcore/cpu_context.h> 041 102 042 /** 103 /** 043 * "The" SOS syscall handler 104 * "The" SOS syscall handler 044 * 105 * 045 * @param syscall_id The identifier of the sys 106 * @param syscall_id The identifier of the syscall service 046 * @param user_ctxt The user context making th 107 * @param user_ctxt The user context making the syscall 047 */ 108 */ 048 sos_ret_t sos_do_syscall(int syscall_id, 109 sos_ret_t sos_do_syscall(int syscall_id, 049 const struct sos_cpu_ 110 const struct sos_cpu_state *user_ctxt); 050 111 051 #endif /* defined(KERNEL_SOS) && !defined(ASM_ 112 #endif /* defined(KERNEL_SOS) && !defined(ASM_SOURCE) */ 052 113 053 #endif /* _SOS_SYSCALL_H_ */ 114 #endif /* _SOS_SYSCALL_H_ */
[ source navigation ] | [ diff markup ] | [ identifier search ] | [ general search ] |