6a9c212bacfe05f3f9987b8bc956e6896cde06e0
[akaros.git] / user / parlib / src / sparc / newlib_backend.c
1 /* See COPYRIGHT for copyright information. */
2 /* Andrew Waterman <waterman@eecs.bekeley.edu> */
3
4 #include <arch/frontend.h>
5 #include <parlib.h>
6 #include <sys/stat.h>
7 #include <sys/unistd.h>
8 #include <sys/times.h>
9 #include <sys/time.h>
10 #include <debug.h>
11 #include <hart.h>
12 #include <utime.h>
13 #include <dirent.h>
14
15 #define IS_CONSOLE(fd) ((uint32_t)(fd) < 3)
16
17 /* Return the vcoreid, which is set in entry.S right before calling libmain.
18  * This should only be used in libmain() and main(), before any code that might
19  * use a register.  It just returns eax. */
20 uint32_t newcore(void)
21 {
22         return hart_self();
23 }
24
25 mode_t
26 umask (mode_t mask)
27 {
28         return -1;
29 }
30
31 int
32 chmod (const char *path, mode_t mode)
33 {
34         return -1;
35 }
36
37 int
38 access (const char *pathname, int mode)
39 {
40         return -1;
41 }
42
43 char *
44 getwd (char *buf)
45 {
46         return NULL;
47 }
48
49 long int
50 pathconf (const char *path, int name) 
51 {
52         return -1;
53 }
54
55 int
56 utime (const char *filename, const struct utimbuf *buf)
57 {
58         return -1;
59 }
60
61 int
62 lstat (const char *pathname, struct stat *pstat)
63 {
64         return -1;
65 }
66
67 int
68 chown (const char *path, uid_t owner, gid_t group)
69 {
70         return -1;
71 }
72
73 int
74 mkdir (const char *path, mode_t mode)
75 {
76         return -1;
77 }
78
79
80 int
81 rmdir (const char *path)
82 {
83         return -1;
84 }
85
86 long int 
87 sysconf (int name)
88 {
89         return -1;
90 }
91
92 DIR *opendir (const char *dir) 
93 {
94         return NULL;
95 }
96
97 struct dirent *readdir (DIR *dir)
98 {
99         return NULL;
100 }
101
102 void rewinddir (DIR *dir)
103 {
104 }
105
106 int closedir (DIR *dir)
107 {
108         return -1;
109 }
110
111 int pipe (int __fildes[2])
112 {
113         return -1;
114 }
115
116 int dup2 (int __fildes, int __fildes2)
117 {
118         return -1;
119 }
120
121 unsigned sleep (unsigned int __seconds)
122 {
123         return -1;
124 }
125
126 unsigned alarm(unsigned __secs)
127 {
128         return -1;
129 }
130
131 int execvp(const char *__file, char * const __argv[])
132 {
133         return -1;
134 }
135
136 int execv(const char *path, char *const argv[])
137 {
138         return -1;
139 }
140
141 int fcntl (int fd, int cmd, ...) 
142 {
143         return -1;
144 }
145
146 int chdir(const char *__path)
147 {
148         return -1;
149 }
150
151 int
152 getpid(void)
153 {
154         static int pid = 0;
155         if(pid == 0)
156                 return pid = sys_getpid();
157
158         return pid;
159 }
160
161 void
162 _exit(int code)
163 {
164         sys_proc_destroy(getpid());
165         while(1);
166 }
167
168 int
169 isatty(int fd)
170 {
171         return IS_CONSOLE(fd);
172 }
173
174 int
175 fork(void)
176 {
177         return -1;
178 }
179
180 int
181 execve(const char* name, char* const argv[], char* const env[])
182 {
183         return -1;
184 }
185
186 int
187 kill(int pid, int sig)
188 {
189         return -1;
190 }
191
192 int
193 wait(int* status)
194 {
195         return -1;
196 }
197
198 int
199 link(const char *old, const char *new)
200 {
201         return -1;
202 }
203
204 int
205 unlink(const char* old)
206 {
207         return syscall(SYS_frontend,RAMP_SYSCALL_unlink,(int)old,0,0,0);
208 }
209
210 int
211 fstat(int fd, struct stat* st)
212 {
213         return syscall(SYS_frontend,RAMP_SYSCALL_fstat,fd,(int)st,0,0);
214 }
215
216 int
217 stat(const char* name, struct stat* st)
218 {
219         return syscall(SYS_frontend,RAMP_SYSCALL_stat,(int)name,(int)st,0,0);
220 }
221
222 off_t
223 lseek(int fd, off_t ptr, int dir)
224 {
225         return syscall(SYS_frontend,RAMP_SYSCALL_lseek,fd,ptr,dir,0);
226 }
227
228 ssize_t
229 write(int fd, const void* ptr, size_t len)
230 {
231         return syscall(SYS_frontend,RAMP_SYSCALL_write,fd,(int)ptr,len,0);
232 }
233
234 ssize_t
235 read(int fd, void* ptr, size_t len)
236 {
237         return syscall(SYS_frontend,RAMP_SYSCALL_read,fd,(int)ptr,len,0);
238 }
239
240 int
241 open(char* name, int flags, int mode)
242 {
243         return syscall(SYS_frontend,RAMP_SYSCALL_open,(int)name,flags,mode,0);
244 }
245
246 int
247 close(int fd)
248 {
249         if(IS_CONSOLE(fd))
250                 return 0;
251         return syscall(SYS_frontend,RAMP_SYSCALL_close,fd,0,0,0);
252 }
253
254 clock_t
255 times(struct tms* buf)
256 {
257         return -1;
258 }
259
260 int
261 gettimeofday(struct timeval* tp, void* tzp)
262 {
263         return syscall(SYS_frontend,RAMP_SYSCALL_gettimeofday,(int)tp,(int)tzp,0,0);
264 }
265