SimpleOS

LXR

Navigation



Site hébergé par : enix

The LXR Cross Referencer for SOS

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Article:1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 6.5 ] [ 7 ] [ 7.5 ] [ 8 ] [ 9 ] [ 9.5 ]

001 /* Copyright (C) 2005 David Decotigny
002    Copyright (C) 2003 Thomas Petazzoni
003 
004    This program is free software; you can redistribute it and/or
005    modify it under the terms of the GNU General Public License
006    as published by the Free Software Foundation; either version 2
007    of the License, or (at your option) any later version.
008    
009    This program is distributed in the hope that it will be useful,
010    but WITHOUT ANY WARRANTY; without even the implied warranty of
011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012    GNU General Public License for more details.
013    
014    You should have received a copy of the GNU General Public License
015    along with this program; if not, write to the Free Software
016    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
017    USA. 
018 */
019 #ifndef _SOS_USER_CRT_H_
020 #define _SOS_USER_CRT_H_
021 
022 
023 /**
024  * @file crt.h
025  *
026  * C runtime environment for the user side of the kernel/user
027  * interface
028  */
029 
030 #include <types.h>
031 
032 /**
033  * We include the syscall.h file from the kernel to retrieve the list
034  * of available syscall ID
035  */
036 #include <sos/syscall.h>
037 
038 
039 /**
040  * The syscall wrappers hiding the details of the implementation
041  */
042 int _sos_syscall0(int id);
043 
044 int _sos_syscall1(int id,
045                   unsigned int arg1);
046 
047 int _sos_syscall2(int id,
048                   unsigned int arg1,
049                   unsigned int arg2);
050 
051 int _sos_syscall3(int id,
052                   unsigned int arg1,
053                   unsigned int arg2,
054                   unsigned int arg3);
055 
056 int _sos_syscall4(int id,
057                   unsigned int arg1,
058                   unsigned int arg2,
059                   unsigned int arg3,
060                   unsigned int arg4);
061 
062 int _sos_syscall5(int id,
063                   unsigned int arg1,
064                   unsigned int arg2,
065                   unsigned int arg3,
066                   unsigned int arg4,
067                   unsigned int arg5);
068 
069 int _sos_syscall6(int id,
070                   unsigned int arg1,
071                   unsigned int arg2,
072                   unsigned int arg3,
073                   unsigned int arg4,
074                   unsigned int arg5,
075                   unsigned int arg6);
076 
077 int _sos_syscall7(int id,
078                   unsigned int arg1,
079                   unsigned int arg2,
080                   unsigned int arg3,
081                   unsigned int arg4,
082                   unsigned int arg5,
083                   unsigned int arg6,
084                   unsigned int arg7);
085 
086 int _sos_syscall8(int id,
087                   unsigned int arg1,
088                   unsigned int arg2,
089                   unsigned int arg3,
090                   unsigned int arg4,
091                   unsigned int arg5,
092                   unsigned int arg6,
093                   unsigned int arg7,
094                   unsigned int arg8);
095 
096 
097 /**
098  * The most important function of a C program ! ;)
099  */
100 void _sos_exit (int status) __attribute__((noreturn));
101 
102 
103 /**
104  * Non standard function to print something on bochs
105  */
106 int _sos_bochs_write(const char *str, unsigned length);
107 
108 /**
109  * Syscall to duplicate the current running process
110  */
111 int _sos_fork(void);
112 
113 
114 /**
115  * Syscall to re-initialize the address space of the current process
116  * with that of the program 'progname'
117  */
118 int _sos_exec(const char * prog);
119 
120 
121 /**
122  * Syscall to map the given resource. Preliminary version without file
123  * system support
124  */
125 int _sos_mmap(void ** ptr_hint_addr, size_t len, int prot, int flags,
126               const char *resource_path, loff_t offset);
127 
128 
129 /**
130  * Syscall to unmap the given user address interval
131  */
132 int _sos_munmap(void * start, size_t length);
133 
134 
135 /**
136  * Syscall to change the access permissions of the given user address
137  * interval
138  */
139 int _sos_mprotect(const void *addr, size_t len, int prot);
140 
141 
142 /**
143  * Syscall to resize the given user mapped resource at the given
144  * old_addr address
145  */
146 int _sos_mresize(void * old_addr, size_t old_len,
147                  void * *new_addr, size_t new_len,
148                  unsigned long flags);
149 
150 
151 typedef void (sos_thread_func_t(unsigned long int arg));
152 
153 /**
154  * Syscall to create a new thread inside the current process
155  */
156 int _sos_new_thread(sos_thread_func_t *func,
157                     void * arg,
158                     size_t stack_size);
159 
160 
161 /**
162  * Syscall to put the calling thread asleep
163  */
164 int _sos_nanosleep(unsigned long int sec,
165                    unsigned long int nanosec);
166 
167 
168 /**
169  * Syscall to get/set heap top address
170  */
171 void * _sos_brk(void * new_top_address);
172 
173 #endif /* _SOS_USER_CRT_H_ */

source navigation ] diff markup ] identifier search ] general search ]