c906b997affc3724e19b713909b591f9704b703a
[akaros.git] / user / parlib / include / 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 #ifndef __ASSEMBLER__
11
12 #include <ros/common.h>
13 #include <ros/memlayout.h>
14 #include <ros/syscall.h>
15 #include <ros/procinfo.h>
16 #include <ros/procdata.h>
17 #include <stdint.h>
18 #include <errno.h>
19 #include <ros_debug.h>
20
21 enum {
22         PG_RDONLY = 4,
23         PG_RDWR   = 6,
24 };
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 ssize_t     sys_cputs(const uint8_t *s, size_t len);
31 uint16_t    sys_cgetc(void);
32 int         sys_null(void);
33 ssize_t     sys_serial_write(void* buf, size_t len); 
34 ssize_t     sys_serial_read(void* buf, size_t len);
35 ssize_t     sys_eth_write(void *COUNT(len) buf, size_t len); 
36 ssize_t     sys_eth_read(void *COUNT(len) buf, size_t len);
37 size_t      sys_getpcoreid(void);
38 /* Process Management */
39 int         sys_getpid(void);
40 int         sys_proc_destroy(int pid, int exitcode);
41 void        sys_yield(bool being_nice);
42 int         sys_proc_create(char *path, size_t path_l, char *argv[], char *envp[]);
43 int         sys_proc_run(int pid);
44 ssize_t     sys_shared_page_alloc(void *COUNT(PGSIZE) *addr, pid_t p2, 
45                                   int p1_flags, int p2_flags);
46 ssize_t     sys_shared_page_free(void *COUNT(PGSIZE) addr, pid_t p2);
47 void        sys_reboot();
48 void *COUNT(length) sys_mmap(void *SNT addr, size_t length, int prot, int flags,
49                              int fd, size_t offset);
50 int                     sys_provision(int pid, unsigned int res_type, long res_val);
51 int         sys_notify(int pid, unsigned int ev_type, struct event_msg *u_msg);
52 int         sys_self_notify(uint32_t vcoreid, unsigned int ev_type,
53                             struct event_msg *u_msg, bool priv);
54 int         sys_halt_core(unsigned int usec);
55 void*           sys_init_arsc();
56 int         sys_block(unsigned int usec);
57 int         sys_change_vcore(uint32_t vcoreid, bool enable_my_notif);
58 int         sys_change_to_m(void);
59 int         sys_poke_ksched(int pid, unsigned int res_type);
60
61 void            init_posix_signals(void);       /* in signal.c */
62 #ifdef __cplusplus
63 }
64 #endif
65
66 #endif  // !ASSEMBLER
67
68 #endif  // !ROS_INC_PARLIB_H