Subastra
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
scheduler.h File Reference
#include <stdio.h>
#include "../list.h"
#include "../names.h"
#include "require.h"
Include dependency graph for scheduler.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  scheduler_system_t
 
struct  scheduler_t
 

Macros

#define scheduler_declare_system_with_custom_runner( scheduler, mut, cons, system_name, runner_f, deps_on, dependency_count, ...)
 

Typedefs

typedef void(* system_runner_f) (system_req_t payload, allocator_t temporary_allocator)
 

Enumerations

enum  scheduler_strategy_t { SCHEDULER_STRATEGY_RANDOM }
 

Functions

static scheduler_t scheduler_new (scheduler_strategy_t strategy, allocator_t persistent_allocator, allocator_t temporary_allocator)
 
static void scheduler_add_system (scheduler_t *scheduler, system_req_t req, system_runner_f runner)
 
static void scheduler_dump_dependency_graph (scheduler_t *scheduler, FILE *out)
 
static void scheduler__topological_sort (allocator_t alloc, list_t *scheduler_system_list)
 
static void scheduler_plan (scheduler_t *scheduler)
 
static void scheduler_set_requirements (scheduler_t *scheduler, system_req_t reqs)
 
static void scheduler_tick (scheduler_t *scheduler, double delta_time)
 
static void scheduler_begin_running (scheduler_t *scheduler)
 
static void scheduler_end_running (scheduler_t *scheduler)
 

Macro Definition Documentation

◆ scheduler_declare_system_with_custom_runner

#define scheduler_declare_system_with_custom_runner (   scheduler,
  mut,
  cons,
  system_name,
  runner_f,
  deps_on,
  dependency_count,
  ... 
)
Value:
name_t runner_f##_name = as_name(#system_name); \
do { \
system_req_t __system_req = __VA_ARGS__; \
__system_req.name = runner_f##_name; \
__system_req.depends_on = deps_on; \
__system_req.depends_on_count = dependency_count; \
system_req_entity_kinds_const(&__system_req, cons); \
system_req_entity_kinds_mut(&__system_req, mut); \
scheduler_add_system(scheduler, __system_req, runner_f); \
} while (0)
static name_t as_name(const char *str)
Definition names.h:33
u64 name_t
Definition names.h:14
Definition require.h:51
name_t name
Definition require.h:53
u32 depends_on_count
Definition require.h:58
name_t * depends_on
Definition require.h:57

Typedef Documentation

◆ system_runner_f

typedef void(* system_runner_f) (system_req_t payload, allocator_t temporary_allocator)

Enumeration Type Documentation

◆ scheduler_strategy_t

Enumerator
SCHEDULER_STRATEGY_RANDOM 

Function Documentation

◆ scheduler__topological_sort()

static void scheduler__topological_sort ( allocator_t  alloc,
list_t scheduler_system_list 
)
static

◆ scheduler_add_system()

static void scheduler_add_system ( scheduler_t scheduler,
system_req_t  req,
system_runner_f  runner 
)
static

◆ scheduler_begin_running()

static void scheduler_begin_running ( scheduler_t scheduler)
static

◆ scheduler_dump_dependency_graph()

static void scheduler_dump_dependency_graph ( scheduler_t scheduler,
FILE *  out 
)
static

◆ scheduler_end_running()

static void scheduler_end_running ( scheduler_t scheduler)
static

◆ scheduler_new()

static scheduler_t scheduler_new ( scheduler_strategy_t  strategy,
allocator_t  persistent_allocator,
allocator_t  temporary_allocator 
)
static

◆ scheduler_plan()

static void scheduler_plan ( scheduler_t scheduler)
static

◆ scheduler_set_requirements()

static void scheduler_set_requirements ( scheduler_t scheduler,
system_req_t  reqs 
)
static

◆ scheduler_tick()

static void scheduler_tick ( scheduler_t scheduler,
double  delta_time 
)
static

Update all the active data members of a scheduler like delta_time