![]() |
Flecs v4.1
A fast entity component system (ECS) for C & C++
|
Operating system abstraction API. More...
#include <alloca.h>Go to the source code of this file.
Classes | |
| struct | ecs_time_t |
| Time type. More... | |
| struct | ecs_os_api_t |
| OS API interface. More... | |
Macros | |
| #define | ecs_os_perf_trace_push(name) |
| #define | ecs_os_perf_trace_pop(name) |
Typedefs | |
| typedef struct ecs_time_t | ecs_time_t |
| Time type. | |
| typedef uintptr_t | ecs_os_thread_t |
| Use handle types that at least can store pointers. | |
| typedef uintptr_t | ecs_os_cond_t |
| OS cond. | |
| typedef uintptr_t | ecs_os_mutex_t |
| OS mutex. | |
| typedef uintptr_t | ecs_os_dl_t |
| OS dynamic library. | |
| typedef uintptr_t | ecs_os_sock_t |
| OS socket. | |
| typedef uint64_t | ecs_os_thread_id_t |
| 64-bit thread ID. | |
| typedef void(* | ecs_os_proc_t) (void) |
| Generic function pointer type. | |
| typedef void(* | ecs_os_api_init_t) (void) |
| OS API init. | |
| typedef void(* | ecs_os_api_fini_t) (void) |
| OS API deinit. | |
| typedef void *(* | ecs_os_api_malloc_t) (ecs_size_t size) |
| OS API malloc function type. | |
| typedef void(* | ecs_os_api_free_t) (void *ptr) |
| OS API free function type. | |
| typedef void *(* | ecs_os_api_realloc_t) (void *ptr, ecs_size_t size) |
| OS API realloc function type. | |
| typedef void *(* | ecs_os_api_calloc_t) (ecs_size_t size) |
| OS API calloc function type. | |
| typedef char *(* | ecs_os_api_strdup_t) (const char *str) |
| OS API strdup function type. | |
| typedef void *(* | ecs_os_thread_callback_t) (void *) |
| OS API thread_callback function type. | |
| typedef ecs_os_thread_t(* | ecs_os_api_thread_new_t) (ecs_os_thread_callback_t callback, void *param) |
| OS API thread_new function type. | |
| typedef void *(* | ecs_os_api_thread_join_t) (ecs_os_thread_t thread) |
| OS API thread_join function type. | |
| typedef ecs_os_thread_id_t(* | ecs_os_api_thread_self_t) (void) |
| OS API thread_self function type. | |
| typedef ecs_os_thread_t(* | ecs_os_api_task_new_t) (ecs_os_thread_callback_t callback, void *param) |
| OS API task_new function type. | |
| typedef void *(* | ecs_os_api_task_join_t) (ecs_os_thread_t thread) |
| OS API task_join function type. | |
| typedef int32_t(* | ecs_os_api_ainc_t) (int32_t *value) |
| Atomic increment and decrement. | |
| typedef int64_t(* | ecs_os_api_lainc_t) (int64_t *value) |
| OS API lainc function type. | |
| typedef ecs_os_mutex_t(* | ecs_os_api_mutex_new_t) (void) |
| Mutex. | |
| typedef void(* | ecs_os_api_mutex_lock_t) (ecs_os_mutex_t mutex) |
| OS API mutex_lock function type. | |
| typedef void(* | ecs_os_api_mutex_unlock_t) (ecs_os_mutex_t mutex) |
| OS API mutex_unlock function type. | |
| typedef void(* | ecs_os_api_mutex_free_t) (ecs_os_mutex_t mutex) |
| OS API mutex_free function type. | |
| typedef ecs_os_cond_t(* | ecs_os_api_cond_new_t) (void) |
| Condition variable. | |
| typedef void(* | ecs_os_api_cond_free_t) (ecs_os_cond_t cond) |
| OS API cond_free function type. | |
| typedef void(* | ecs_os_api_cond_signal_t) (ecs_os_cond_t cond) |
| OS API cond_signal function type. | |
| typedef void(* | ecs_os_api_cond_broadcast_t) (ecs_os_cond_t cond) |
| OS API cond_broadcast function type. | |
| typedef void(* | ecs_os_api_cond_wait_t) (ecs_os_cond_t cond, ecs_os_mutex_t mutex) |
| OS API cond_wait function type. | |
| typedef void(* | ecs_os_api_sleep_t) (int32_t sec, int32_t nanosec) |
| OS API sleep function type. | |
| typedef void(* | ecs_os_api_enable_high_timer_resolution_t) (bool enable) |
| OS API enable_high_timer_resolution function type. | |
| typedef void(* | ecs_os_api_get_time_t) (ecs_time_t *time_out) |
| OS API get_time function type. | |
| typedef uint64_t(* | ecs_os_api_now_t) (void) |
| OS API now function type. | |
| typedef void(* | ecs_os_api_log_t) (int32_t level, const char *file, int32_t line, const char *msg) |
| OS API log function type. | |
| typedef void(* | ecs_os_api_abort_t) (void) |
| OS API abort function type. | |
| typedef ecs_os_dl_t(* | ecs_os_api_dlopen_t) (const char *libname) |
| OS API dlopen function type. | |
| typedef ecs_os_proc_t(* | ecs_os_api_dlproc_t) (ecs_os_dl_t lib, const char *procname) |
| OS API dlproc function type. | |
| typedef void(* | ecs_os_api_dlclose_t) (ecs_os_dl_t lib) |
| OS API dlclose function type. | |
| typedef char *(* | ecs_os_api_module_to_path_t) (const char *module_id) |
| OS API module_to_path function type. | |
| typedef void(* | ecs_os_api_perf_trace_t) (const char *filename, size_t line, const char *name) |
| OS API performance tracing function type. | |
| typedef struct ecs_os_api_t | ecs_os_api_t |
| OS API interface. | |
Functions | |
| FLECS_API void | ecs_os_init (void) |
| Initialize the OS API. | |
| FLECS_API void | ecs_os_fini (void) |
| Deinitialize the OS API. | |
| FLECS_API void | ecs_os_set_api (ecs_os_api_t *os_api) |
| Override the OS API. | |
| FLECS_API ecs_os_api_t | ecs_os_get_api (void) |
| Get the OS API. | |
| FLECS_API void | ecs_os_set_api_defaults (void) |
| Set default values for the OS API. | |
| FLECS_API void | ecs_os_dbg (const char *file, int32_t line, const char *msg) |
| Macro utilities. | |
| FLECS_API void | ecs_os_trace (const char *file, int32_t line, const char *msg) |
| Log at trace level. | |
| FLECS_API void | ecs_os_warn (const char *file, int32_t line, const char *msg) |
| Log at warning level. | |
| FLECS_API void | ecs_os_err (const char *file, int32_t line, const char *msg) |
| Log at error level. | |
| FLECS_API void | ecs_os_fatal (const char *file, int32_t line, const char *msg) |
| Log at fatal level. | |
| FLECS_API const char * | ecs_os_strerror (int err) |
| Convert errno to a string. | |
| FLECS_API void | ecs_os_strset (char **str, const char *value) |
| A utility for assigning strings. | |
| void | ecs_os_perf_trace_push_ (const char *file, size_t line, const char *name) |
| Push a performance trace region. | |
| void | ecs_os_perf_trace_pop_ (const char *file, size_t line, const char *name) |
| Pop a performance trace region. | |
| FLECS_API void | ecs_sleepf (double t) |
| Sleep with floating-point time. | |
| FLECS_API double | ecs_time_measure (ecs_time_t *start) |
| Measure time since the provided timestamp. | |
| FLECS_API ecs_time_t | ecs_time_sub (ecs_time_t t1, ecs_time_t t2) |
| Calculate the difference between two timestamps. | |
| FLECS_API double | ecs_time_to_double (ecs_time_t t) |
| Convert a time value to a double. | |
| FLECS_API void * | ecs_os_memdup (const void *src, ecs_size_t size) |
| Return newly allocated memory that contains a copy of src. | |
| FLECS_API bool | ecs_os_has_heap (void) |
| Are heap functions available? | |
| FLECS_API bool | ecs_os_has_threading (void) |
| Are threading functions available? | |
| FLECS_API bool | ecs_os_has_task_support (void) |
| Are task functions available? | |
| FLECS_API bool | ecs_os_has_time (void) |
| Are time functions available? | |
| FLECS_API bool | ecs_os_has_logging (void) |
| Are logging functions available? | |
| FLECS_API bool | ecs_os_has_dl (void) |
| Are dynamic library functions available? | |
| FLECS_API bool | ecs_os_has_modules (void) |
| Are module path functions available? | |
Variables | |
| int64_t | ecs_os_api_malloc_count |
| Allocation counters. | |
| int64_t | ecs_os_api_realloc_count |
| realloc count. | |
| int64_t | ecs_os_api_calloc_count |
| calloc count. | |
| int64_t | ecs_os_api_free_count |
| free count. | |
| FLECS_API ecs_os_api_t | ecs_os_api |
| Static OS API variable with configured callbacks. | |
Operating system abstraction API.
This file contains the operating system abstraction API. The flecs core library avoids OS/runtime-specific API calls as much as possible. Instead, it provides an interface that can be implemented by applications.
Examples of how to implement this interface can be found in the examples/os_api folder.
Definition in file os_api.h.