summaryrefslogtreecommitdiff
path: root/vere/pkg/noun/options.h
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/pkg/noun/options.h
claude is gud
Diffstat (limited to 'vere/pkg/noun/options.h')
-rw-r--r--vere/pkg/noun/options.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/vere/pkg/noun/options.h b/vere/pkg/noun/options.h
new file mode 100644
index 0000000..615b765
--- /dev/null
+++ b/vere/pkg/noun/options.h
@@ -0,0 +1,59 @@
+/// @file
+
+#ifndef U3_OPTIONS_H
+#define U3_OPTIONS_H
+
+#include "c3/c3.h"
+#include "types.h"
+
+ /** Data structures.
+ **/
+ /* u3o_config: process / system configuration.
+ */
+ typedef struct _u3o_config {
+ u3_noun who; // single identity
+ c3_c* dir_c; // execution directory (pier)
+ c3_c* eph_c; // ephemeral file
+ c3_w wag_w; // flags (both ways)
+ size_t wor_i; // loom word-length (<= u3a_words)
+ c3_w tos_w; // loom toss skip-length
+ c3_w hap_w; // transient memoization cache size
+ c3_w per_w; // persistent memoization cache size
+ void (*stderr_log_f)(c3_c*); // errors from c code
+ void (*slog_f)(u3_noun); // function pointer for slog
+ void (*sign_hold_f)(void); // suspend system signal regime
+ void (*sign_move_f)(void); // restore system signal regime
+ } u3o_config;
+
+ /* u3o_flag: process/system flags.
+ **
+ ** _debug flags are set outside u3 and heard inside it.
+ ** _check flags are set inside u3 and heard outside it.
+ */
+ enum u3o_flag { // execution flags
+ u3o_debug_ram = 1 << 0, // debug: gc
+ u3o_debug_cpu = 1 << 1, // debug: profile
+ u3o_check_corrupt = 1 << 2, // check: gc memory
+ u3o_check_fatal = 1 << 3, // check: unrecoverable
+ u3o_verbose = 1 << 4, // be remarkably wordy
+ u3o_dryrun = 1 << 5, // don't touch checkpoint
+ u3o_quiet = 1 << 6, // disable ~&
+ u3o_hashless = 1 << 7, // disable hashboard
+ u3o_trace = 1 << 8, // enables trace dumping
+ u3o_no_demand = 1 << 9, // disables demand paging
+ u3o_auto_meld = 1 << 10, // enables meld under pressure
+ u3o_soft_mugs = 1 << 11, // continue replay on mismatch
+ u3o_swap = 1 << 12, // enables ephemeral file
+ u3o_toss = 1 << 13, // reclaim often
+ u3o_cash = 1 << 14, // memo cache harvesting
+ u3o_yolo = 1 << 15 // no brakes!
+ };
+
+ /** Globals.
+ **/
+ /* u3_Config / u3C: global memory control.
+ */
+ extern u3o_config u3o_Config;
+# define u3C u3o_Config
+
+#endif /* ifndef U3_OPTIONS_H */