Cthulhu  0.2.10
Cthulhu compiler collection
os_common.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <os_config.h>
4 
5 #include "os/os.h"
6 
7 #include <stdbool.h>
8 
9 typedef struct os_mapping_t os_mapping_t;
10 
12 
16 
17 CT_LOCAL void impl_init(void);
18 CT_LOCAL void impl_abort(void);
21 
22 // get the last error
24 CT_LOCAL os_error_t impl_last_error(void);
25 
26 // get the max length of a name or path
27 CT_LOCAL size_t impl_maxname(void);
28 CT_LOCAL size_t impl_maxpath(void);
29 
30 // get the required buffer size for an error message
31 CT_LOCAL size_t impl_error_length(os_error_t error);
32 
33 // get the error message for an error code
34 CT_LOCAL size_t impl_error_string(os_error_t error, char *buffer, size_t size);
35 
36 // copies the file at src to dst, overwriting dst if it exists
37 // only needs to be implemented if CT_OS_COPYFILE is 1
38 CT_LOCAL os_error_t impl_copyfile(const char *dst, const char *src);
39 
40 // files
41 CT_LOCAL os_file_impl_t impl_file_open(const char *path, os_access_t access);
42 
43 // close a file handle
44 // return false if there was an error
46 
47 // file mapping
48 CT_LOCAL void *impl_file_map(os_file_t *file, os_protect_t protect, size_t size, os_mapping_t *map);
49 CT_LOCAL os_error_t impl_unmap(os_mapping_t *map);
50 
51 // iteration
52 
53 // returns true if there was a new inode
54 CT_LOCAL os_iter_impl_t impl_iter_open(const char *path, os_inode_impl_t *inode);
57 
58 CT_LOCAL const char *impl_inode_name(const os_inode_impl_t *inode);
60 
61 // libraries
64 CT_LOCAL void *impl_library_symbol(os_library_impl_t lib, const char *name);
65 
CT_NODISCARD size_t size
Definition: scan.h:128
int os_exitcode_t
program exit code
Definition: core.h:67
os_dirent_t
directory entry type
Definition: core.h:56
os_protect_t
file mapping memory protection
Definition: core.h:47
os_access_t
file access mode
Definition: core.h:38
#define STA_LAST_ERROR
Definition: analyze.h:115
#define RET_INSPECT
annotate the return value as needing to be inspected this is the same as CT_NODISCARD but implies tha...
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_LOCAL
Definition: compiler.h:166
#define CT_END_API
Definition: compiler.h:130
unsigned os_status_t
thread return code
Definition: core.h:71
CT_LOCAL os_library_impl_t impl_library_open(const char *path)
Definition: library.c:10
STA_LAST_ERROR CT_LOCAL os_error_t impl_last_error(void)
Definition: error.c:16
CT_LOCAL os_dirent_t impl_inode_type(const os_inode_impl_t *inode)
Definition: dir.c:32
CT_LOCAL bool impl_iter_close(os_iter_impl_t impl)
Definition: dir.c:21
CT_LOCAL os_error_t impl_unmap(os_mapping_t *map)
Definition: file.c:230
CT_LOCAL size_t impl_error_length(os_error_t error)
Definition: error.c:21
CT_LOCAL size_t impl_maxpath(void)
Definition: init.c:18
CT_BEGIN_API CT_LOCAL void impl_init(void)
Definition: init.c:23
CT_LOCAL bool impl_library_close(os_library_impl_t lib)
Definition: library.c:15
CT_LOCAL bool impl_iter_next(os_iter_impl_t impl, os_inode_impl_t *inode)
Definition: dir.c:14
CT_LOCAL bool impl_file_close(os_file_impl_t impl)
Definition: file.c:76
CT_LOCAL void impl_thread_exit(os_status_t status)
Definition: init.c:54
CT_LOCAL size_t impl_maxname(void)
Definition: init.c:13
CT_LOCAL void * impl_file_map(os_file_t *file, os_protect_t protect, size_t size, os_mapping_t *map)
Definition: file.c:220
CT_LOCAL void impl_abort(void)
Definition: init.c:59
CT_LOCAL void * impl_library_symbol(os_library_impl_t lib, const char *name)
Definition: library.c:27
CT_LOCAL void impl_exit(os_exitcode_t code)
Definition: init.c:49
CT_LOCAL os_iter_impl_t impl_iter_open(const char *path, os_inode_impl_t *inode)
Definition: dir.c:7
CT_LOCAL os_error_t impl_copyfile(const char *dst, const char *src)
Definition: file.c:16
CT_LOCAL const char * impl_inode_name(const os_inode_impl_t *inode)
Definition: dir.c:26
CT_LOCAL os_file_impl_t impl_file_open(const char *path, os_access_t access)
Definition: file.c:50
CT_LOCAL size_t impl_error_string(os_error_t error, char *buffer, size_t size)
Definition: error.c:27
DIR * os_iter_impl_t
Definition: posix.h:13
struct dirent * os_inode_impl_t
Definition: posix.h:12
void * os_library_impl_t
Definition: posix.h:10
FILE * os_file_impl_t
Definition: posix.h:11
a file handle
Definition: os.h:40
memory mapping handle
Definition: posix.h:18