Checkin of Andrews stuff needed to compile glibc
[akaros.git] / user / parlib / inc / parlib.h
1 // Main public header file for our user-land support library,
2 // whose code lives in the lib directory.
3 // This library is roughly our OS's version of a standard C library,
4 // and is intended to be linked into all user-mode applications
5 // (NOT the kernel or boot loader).
6
7 #ifndef ROS_INC_PARLIB_H
8 #define ROS_INC_PARLIB_H 1
9
10 #define PARLIB_TLS_SIZE 16384
11
12 #ifndef __ASSEMBLER__
13
14 #include <ros/common.h>
15 #include <ros/memlayout.h>
16 #include <ros/syscall.h>
17 #include <ros/error.h>
18 #include <ros/procdata.h>
19 #include <sys/time.h>
20 #include <errno.h>
21 #include <debug.h>
22
23 enum {
24         PG_RDONLY = 4,
25         PG_RDWR   = 6,
26 };
27
28 #define procinfo (*(procinfo_t*)UINFO)
29 #define procdata (*(procdata_t*)UDATA)
30
31 intreg_t ros_syscall(uint16_t num, intreg_t a1,
32                 intreg_t a2, intreg_t a3,
33                 intreg_t a4, intreg_t a5);
34
35 ssize_t     sys_cputs(const uint8_t *s, size_t len);
36 uint16_t    sys_cgetc(void);
37 ssize_t     sys_serial_write(void* buf, size_t len); 
38 ssize_t     sys_serial_read(void* buf, size_t len);
39 ssize_t     sys_eth_write(void *COUNT(len) buf, size_t len); 
40 ssize_t     sys_eth_read(void *COUNT(len) buf);
41 ssize_t     sys_eth_get_mac_addr(void* buf);
42 int         sys_eth_recv_check();
43 ssize_t     sys_run_binary(void* binary_buf, size_t len,
44                            procinfo_t* pi, size_t num_colors);
45 int         sys_getpid(void);
46 size_t      sys_getcpuid(void);
47 void *      sys_brk(void* addr);
48 error_t     sys_proc_destroy(int pid, int exitcode);
49 ssize_t     sys_shared_page_alloc(void *COUNT(PGSIZE) *addr, pid_t p2, 
50                                   int p1_flags, int p2_flags);
51 ssize_t     sys_shared_page_free(void *COUNT(PGSIZE) addr, pid_t p2);
52 ssize_t     sys_resource_req(int type, size_t amount, uint32_t flags);
53 void        sys_reboot();
54 void        sys_yield();
55 void *COUNT(length) sys_mmap(void *SNT addr, size_t length, int prot, int flags,
56                              int fd, size_t offset);
57
58 #endif  // !ASSEMBLER
59
60 #endif  // !ROS_INC_PARLIB_H