28#define SRN_HASH_TYPE uint32_t
29#define SRN_SEED_TYPE uint32_t
44#define ENGINE_FIRST_OBJECT_ID 100
138#ifdef SRN_WITH_SERENE
144[[gnu::nonnull(1, 2)]]
The single place that holds every runtime knob.
void srn_engine_shutdown(srn_engine_t *engine)
srn_engine_t * srn_engine_make(srn_mm_t *mm, const srn_configuration_t *config)
Create the engine over mm, copying config (the runtime's knobs) into it.
srn_hash_t srn_hash(const srn_engine_t *engine, const void *data, size_t len)
struct srn_reactor_t srn_reactor_t
The implementation is internal to the runtime.
struct srn_scheduler_t srn_scheduler_t
srn_object_id_t srn_allocate_object_id(srn_engine_t *engine)
This is an implementation of Compressed Hash-Array Mapped Prefix-tree, which is a bit-partitioned,...
Every runtime knob, in one place.
Engine is a structure to own the long living and main pieces of the compiler.
srn_configuration_t config
The runtime's tunable knobs, the single source for every configurable value (see configuration....
_Atomic srn_object_id_t object_id_counter
An unsigned counter to allocate object ids atomically.
srn_scheduler_t * scheduler
The fiber scheduler, that is the entry point of the fiber subsystem.
srn_seed_t seed
We use the seed for hashing and the value will be generated at random for each new context.
srn_mm_t * mm
Memory manager.
srn_reactor_t * reactor
The I/O reactor, that is in charge of handling everything I/O.
A runtime error, a tag classifying the failure and a human-readable message.
Main memory manager structure that will own all the allocated blocks and data.