feat: add userspace system logging, rename klog to syslog, rename relevant syscalls and API functions
This commit is contained in:
@@ -21,6 +21,15 @@
|
||||
#define C_CYAN "\033[36m"
|
||||
#define C_WHITE "\033[37m"
|
||||
|
||||
// ---- Process scan ----
|
||||
|
||||
static bool system_already_initialized() {
|
||||
/* A valid init will always be PID 0 */
|
||||
|
||||
if (montauk::getpid() != 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---- Logging ----
|
||||
|
||||
static void log_timestamp(char* buf, int size) {
|
||||
@@ -39,16 +48,16 @@ static void log(LogLevel level, const char* msg) {
|
||||
const char* tag;
|
||||
const char* color;
|
||||
switch (level) {
|
||||
case LOG_OK: tag = " OK "; color = C_GREEN; break;
|
||||
case LOG_INFO: tag = " INFO "; color = C_CYAN; break;
|
||||
case LOG_WARN: tag = " WARN "; color = C_YELLOW; break;
|
||||
case LOG_ERR: tag = " FAIL "; color = C_RED; break;
|
||||
case LOG_OK: tag = "OK:"; color = C_GREEN; break;
|
||||
case LOG_INFO: tag = "INFO:"; color = C_CYAN; break;
|
||||
case LOG_WARN: tag = "WARN:"; color = C_YELLOW; break;
|
||||
case LOG_ERR: tag = "FAIL:"; color = C_RED; break;
|
||||
}
|
||||
|
||||
snprintf(line, sizeof(line),
|
||||
C_DIM "%s" C_RESET " %s%s" C_RESET " " C_BOLD "init" C_RESET " %s\n",
|
||||
C_DIM "%s" C_RESET " %s%s" C_RESET " %s",
|
||||
ts, color, tag, msg);
|
||||
montauk::print(line);
|
||||
montauk::write_log("init", line);
|
||||
}
|
||||
|
||||
static void log_ok(const char* msg) { log(LOG_OK, msg); }
|
||||
@@ -178,11 +187,27 @@ static bool run_configured_service(const montauk::toml::Doc& doc,
|
||||
return run_configured_service(doc, fallback_service, fallback_depth + 1);
|
||||
}
|
||||
|
||||
const char* getReleaseString(char* buffer, int n) {
|
||||
montauk::abi::SysInfo info;
|
||||
montauk::get_info(&info);
|
||||
|
||||
snprintf(buffer, n, "The Montauk Operating System, version %s (build %u)",
|
||||
info.osVersion, info.buildNumber);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
// ---- Main ----
|
||||
|
||||
extern "C" void _start() {
|
||||
if (system_already_initialized()) {
|
||||
montauk::exit(1);
|
||||
}
|
||||
|
||||
log_info("The Montauk Operating System");
|
||||
char releaseString[128] = "";
|
||||
getReleaseString(releaseString, 128);
|
||||
|
||||
log_info(releaseString);
|
||||
|
||||
auto config = montauk::config::load("init");
|
||||
int discovered = 0;
|
||||
|
||||
Reference in New Issue
Block a user