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