i386 parlib follows sparc parlib stack conventions
[akaros.git] / user / parlib / src / syscall.c
1 // System call stubs.
2
3 #include <parlib.h>
4
5 error_t sys_proc_destroy(int pid)
6 {
7         return syscall(SYS_proc_destroy, pid, 0, 0, 0, 0);
8 }
9
10 error_t sys_brk(void* addr)
11 {
12         return syscall(SYS_brk, (intreg_t)addr, 0, 0, 0, 0);
13 }
14
15 int sys_getpid(void)
16 {
17          return syscall(SYS_getpid, 0, 0, 0, 0, 0);
18 }
19
20 size_t sys_getcpuid(void)
21 {
22          return syscall(SYS_getcpuid, 0, 0, 0, 0, 0);
23 }
24
25 ssize_t sys_cputs(const uint8_t *s, size_t len)
26 {
27     return syscall(SYS_cputs, (intreg_t) s,  len, 0, 0, 0);
28 }
29
30 uint16_t sys_cgetc(void)
31 {
32     return syscall(SYS_cgetc, 0, 0, 0, 0, 0);
33 }
34
35 ssize_t sys_shared_page_alloc(void** addr, pid_t p2, 
36                               int p1_flags, int p2_flags
37                              ) 
38 {
39         return syscall(SYS_shared_page_alloc, (intreg_t)addr, 
40                        p2, p1_flags, p2_flags, 0);
41 }
42
43 ssize_t sys_shared_page_free(void* addr, pid_t p2) 
44 {
45         return syscall(SYS_shared_page_free, (intreg_t)addr, p2, 0,0,0);
46 }
47
48 //Write a buffer over the serial port
49 ssize_t sys_serial_write(void* buf, size_t len) 
50 {
51         return syscall(SYS_serial_write, (intreg_t)buf, len, 0, 0, 0);
52 }
53
54 //Read a buffer over the serial port
55 ssize_t sys_serial_read(void* buf, size_t len) 
56 {
57         return syscall(SYS_serial_read, (intreg_t)buf, len, 0, 0, 0);
58 }
59
60 //Run a binary loaded at the specificed address with the specified arguments
61 ssize_t sys_run_binary(void* binary_buf, void* arg, size_t len) 
62 {
63         return syscall(SYS_run_binary, (intreg_t)binary_buf, (intreg_t)arg, len, 0, 0);
64 }
65
66 //Write a buffer over ethernet
67 ssize_t sys_eth_write(void* buf, size_t len) 
68 {
69         if (len == 0)
70                 return 0;
71         
72         return syscall(SYS_eth_write, (intreg_t)buf, len, 0, 0, 0);
73 }
74
75 //Read a buffer via ethernet
76 ssize_t sys_eth_read(void* buf, size_t len) 
77 {
78         if (len == 0)
79                 return 0;
80                 
81         return syscall(SYS_eth_read, (intreg_t)buf, len, 0, 0, 0);
82 }
83
84 /* Request resources from the kernel.  Flags in ros/resource.h. */
85 ssize_t sys_resource_req(int type, size_t amount, uint32_t flags)
86 {
87         return syscall(SYS_resource_req, type, amount, flags, 0, 0);
88 }
89