feat: add proclist command, fix TLS bug, link libc for system programs
This commit is contained in:
@@ -12,4 +12,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define MONTAUK_BUILD_NUMBER 115
|
#define MONTAUK_BUILD_NUMBER 126
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ $(BINDIR)/config/%: $(CONFIGDIR)/%
|
|||||||
$(BINDIR)/os/%.elf: src/%/main.cpp link.ld GNUmakefile
|
$(BINDIR)/os/%.elf: src/%/main.cpp link.ld GNUmakefile
|
||||||
mkdir -p $(BINDIR)/os obj/$*
|
mkdir -p $(BINDIR)/os obj/$*
|
||||||
$(CXX) $(CXXFLAGS) -c src/$*/main.cpp -o obj/$*/main.o
|
$(CXX) $(CXXFLAGS) -c src/$*/main.cpp -o obj/$*/main.o
|
||||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) obj/$*/main.o -o $@
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) obj/$*/main.o lib/libc/liblibc.a -o $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BINDIR) obj
|
rm -rf $(BINDIR) obj
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -151,7 +151,7 @@ void get_bearssl_time(uint32_t* days, uint32_t* seconds) {
|
|||||||
montauk::gettime(&dt);
|
montauk::gettime(&dt);
|
||||||
int y = dt.Year, m = dt.Month, d = dt.Day;
|
int y = dt.Year, m = dt.Month, d = dt.Day;
|
||||||
uint32_t total = 365u * (uint32_t)y
|
uint32_t total = 365u * (uint32_t)y
|
||||||
+ (uint32_t)(y/4) - (uint32_t)(y/100) + (uint32_t)(y/400);
|
+ (uint32_t)((y+3)/4) - (uint32_t)((y+99)/100) + (uint32_t)((y+399)/400);
|
||||||
const int md[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
const int md[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||||
for (int mo = 1; mo < m && mo <= 12; mo++) total += md[mo];
|
for (int mo = 1; mo < m && mo <= 12; mo++) total += md[mo];
|
||||||
if (y%4==0 && (y%100!=0 || y%400==0) && m > 2) total++;
|
if (y%4==0 && (y%100!=0 || y%400==0) && m > 2) total++;
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* main.cpp
|
||||||
|
* Process list command for MontaukOS userspace
|
||||||
|
* Copyright (c) 2026 Daniel Hammer
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <montauk/syscall.h>
|
||||||
|
#include <libc/stdio.h>
|
||||||
|
|
||||||
|
extern "C" void _start() {
|
||||||
|
static montauk::abi::ProcInfo processes[256];
|
||||||
|
int n = montauk::proclist(processes, 256);
|
||||||
|
|
||||||
|
if (n <= 0) {
|
||||||
|
montauk::print("Failed to query processes.\n");
|
||||||
|
montauk::exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
montauk::print(" PID\tHeap\tImage Name\n");
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
unsigned heapMb = (unsigned)(processes[i].heapUsed / (1024 * 1024));
|
||||||
|
|
||||||
|
printf(" %d\t%d MB\t%s\n", processes[i].pid, heapMb, processes[i].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
montauk::exit(0);
|
||||||
|
}
|
||||||
Binary file not shown.
Reference in New Issue
Block a user