Start implementing CRT I/O
[monolithium.git] / sdk / defs.h
1 /*
2  * defs.h
3  *
4  * Copyright (C) 2017 Aleksandar Andrejevic <theflash@sdf.lonestar.org>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as
8  * published by the Free Software Foundation, either version 3 of the
9  * License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #ifndef __MONOLITHIUM_DEFS_H__
21 #define __MONOLITHIUM_DEFS_H__
22
23 #include <limits.h>
24 #include <stdarg.h>
25 #include <stddef.h>
26 #include <stdint.h>
27
28 #define FALSE 0
29 #define TRUE (!FALSE)
30 #define VARIABLE_SIZE 0
31
32 /* Monolithium-specific Type Limits */
33 #define BYTE_MIN  0
34 #define BYTE_MAX  0xFF
35 #define WORD_MIN  0
36 #define WORD_MAX  0xFFFF
37 #define DWORD_MIN 0
38 #define DWORD_MAX 0xFFFFFFFF
39 #define QWORD_MIN 0ULL
40 #define QWORD_MAX 0xFFFFFFFFFFFFFFFFULL
41
42 /* Monolithium Error Codes */
43 #define ERR_SUCCESS   0x00000000
44 #define ERR_NOTFOUND  0xE0000001
45 #define ERR_FORBIDDEN 0xE0000002
46 #define ERR_INVALID   0xE0000003
47 #define ERR_EXISTS    0xE0000004
48 #define ERR_NOMEMORY  0xE0000005
49 #define ERR_HARDWARE  0xE0000006
50 #define ERR_BUSY      0xE0000007
51 #define ERR_WRITEPROT 0xE0000008
52 #define ERR_NOSYSCALL 0xE0000009
53 #define ERR_TIMEOUT   0xE000000A
54 #define ERR_BADPTR    0xE000000B
55 #define ERR_CANCELED  0xE000000C
56 #define ERR_ISDIR     0xE000000D
57 #define ERR_ISNOTDIR  0xE000000E
58 #define ERR_DISKFULL  0xE000000F
59 #define ERR_BEYOND    0xE0000010
60 #define ERR_SMALLBUF  0xE0000011
61 #define ERR_NOMORE    0xE0000012
62 #define MAX_ERR       0xE0000013
63
64 #define MAX_PATH 16384
65
66 #define UNUSED_PARAMETER(x) (x)=(x)
67 #define OFFSET_OF(type, field) ((uintptr_t)(&((type*)NULL)->field))
68 #define CONTAINER_OF(ptr, type, field) ((type*)((uintptr_t)(ptr) - OFFSET_OF(type, field)))
69
70 /* Monolithium-specific Types */
71 typedef uint8_t bool_t;
72 typedef uint8_t byte_t;
73 typedef uint16_t word_t;
74 typedef uint32_t dword_t;
75 typedef uint64_t qword_t;
76
77 /* System call return value */
78 typedef qword_t sysret_t;
79
80 #endif