a47c61d4c7efe6d4bb7f96b3cce0a5c8cab20918
[akaros.git] / inc / lib.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 <inc/types.h>
11 #include <inc/stdio.h>
12 #include <inc/stdarg.h>
13 #include <inc/string.h>
14 #include <inc/error.h>
15 #include <inc/assert.h>
16 #include <inc/env.h>
17 #include <inc/memlayout.h>
18 #include <inc/syscall.h>
19
20 #define USED(x)         (void)(x)
21
22 // libos.c or entry.S
23 extern char *binaryname;
24 extern volatile env_t *env;
25 // will need to change these types when we have real structs
26 // seems like they need to be either arrays [] or functions () for it to work
27 extern volatile uint8_t (COUNT(PGSIZE * UINFO_PAGES) procinfo)[];
28 extern volatile uint8_t (COUNT(PGSIZE * UDATA_PAGES) procdata)[];
29 extern syscall_front_ring_t sysfrontring;
30 extern volatile page_t pages[];
31 void    exit(void);
32
33 // readline.c
34 char*   readline(const char *buf);
35
36 // syscall.c
37 void    sys_cputs(const char *string, size_t len);
38 void    sys_cputs_async(const char *string, size_t len);
39 int     sys_cgetc(void);
40 envid_t sys_getenvid(void);
41 int     sys_env_destroy(envid_t);
42
43
44
45 /* File open modes */
46 #define O_RDONLY        0x0000          /* open for reading only */
47 #define O_WRONLY        0x0001          /* open for writing only */
48 #define O_RDWR          0x0002          /* open for reading and writing */
49 #define O_ACCMODE       0x0003          /* mask for above modes */
50
51 #define O_CREAT         0x0100          /* create if nonexistent */
52 #define O_TRUNC         0x0200          /* truncate to zero length */
53 #define O_EXCL          0x0400          /* error if already exists */
54 #define O_MKDIR         0x0800          /* create directory, not regular file */
55
56 #endif  // !ROS_INC_LIB_H