mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-10 01:22:41 +00:00
- Integrates Volundr's btime library and associated process scheduler changes. - btime is implemented separately from the process scheduler, as precise time measurement is also useful elsewhere. - `TimeOfHour` is no longer internally throttled; throttling is instead done by `SCHECK`. - If btime's `gettime` cannot be called at world startup, an error will be output and the world will stop. - Retains the change to schedule processes according to game time, rather than real time. - Removes the (now unused) update queue files. - Removes the process scheduler testing files. - These are standalone tests for the process scheduler, completely unrelated to its use in the full codebase. We never used them. - Moves the process scheduler defines into __DEFINES. - Makes the lighting process run once before the round starts. - Renames `scheck` to `sleepCheck`, to ensure any code that tries to use `scheck` will fail to compile. - Adds `SCHECK` and `SCHECK_EVERY` macros that skip calling `sleepCheck` entirely until a specified number of `SCHECK`s (50 by default) have been called. - Makes most processes iterate using their `last_object` variable, allowing hang recovery to show the type that caused the hang. - Makes processes output an error when they filter out a type they refuse to process. - Rolls the recently-added alarm subsystem into the alarm process. - Removes the now unused subsystems code.
20 lines
783 B
Plaintext
20 lines
783 B
Plaintext
// Process status defines
|
|
#define PROCESS_STATUS_IDLE 1
|
|
#define PROCESS_STATUS_QUEUED 2
|
|
#define PROCESS_STATUS_RUNNING 3
|
|
#define PROCESS_STATUS_MAYBE_HUNG 4
|
|
#define PROCESS_STATUS_PROBABLY_HUNG 5
|
|
#define PROCESS_STATUS_HUNG 6
|
|
|
|
// Process time thresholds
|
|
#define PROCESS_DEFAULT_HANG_WARNING_TIME 300 // 30 seconds
|
|
#define PROCESS_DEFAULT_HANG_ALERT_TIME 600 // 60 seconds
|
|
#define PROCESS_DEFAULT_HANG_RESTART_TIME 900 // 90 seconds
|
|
#define PROCESS_DEFAULT_SCHEDULE_INTERVAL 50 // 50 ticks
|
|
#define PROCESS_DEFAULT_SLEEP_INTERVAL 8 // 1/8th of a tick
|
|
|
|
// SCHECK macros
|
|
// This references src directly to work around a weird bug with try/catch
|
|
#define SCHECK_EVERY(this_many_calls) if(++src.calls_since_last_scheck >= this_many_calls) sleepCheck()
|
|
#define SCHECK SCHECK_EVERY(50)
|