3403b3f9a89ae285253c975a0af953f2ded1e726
[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_LIB_H
8 #define ROS_INC_LIB_H 1
9
10 #include <arch/types.h>
11 #include <ros/memlayout.h>
12 #include <ros/syscall.h>
13 #include <ros/env.h>
14 #include <ros/error.h>
15 #include <newlib_backend.h>
16
17 extern volatile env_t *env;
18 // will need to change these types when we have real structs
19 // seems like they need to be either arrays [] or functions () for it to work
20 extern volatile uint8_t (COUNT(PGSIZE * UINFO_PAGES) procinfo)[];
21 extern volatile uint8_t (COUNT(PGSIZE * UDATA_PAGES) procdata)[];
22
23 ssize_t     sys_cputs(const uint8_t *s, size_t len);
24 uint16_t    sys_cgetc(void);
25 ssize_t     sys_serial_write(void* buf, size_t len); 
26 ssize_t     sys_serial_read(void* buf, size_t len);
27 ssize_t     sys_eth_write(void* buf, size_t len); 
28 ssize_t     sys_eth_read(void* buf, size_t len);
29 envid_t     sys_getenvid(void);
30 envid_t     sys_getcpuid(void);
31 void        sys_env_destroy(envid_t);
32
33 #endif  // !ROS_INC_LIB_H