mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[libj6] Add log area and severity to j6::syslog()
User code can now set the log area and severity of log messages. This also updates the j6_log syscall to take these parameters, but removes all calls to it except through j6::syslog().
This commit is contained in:
@@ -13,7 +13,7 @@ inline constexpr j6_vm_flags mmio_flags = (j6_vm_flags)(j6_vm_flag_write | j6_vm
|
||||
void
|
||||
probe_pci(j6_handle_t sys, pci_group &pci)
|
||||
{
|
||||
j6::syslog("Probing PCI group at base %016lx", pci.base);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, "Probing PCI group at base %016lx", pci.base);
|
||||
map_phys(sys, pci.base, bus_mmio_size, mmio_flags);
|
||||
|
||||
for (unsigned b = pci.bus_start; b <= pci.bus_end; ++b) {
|
||||
@@ -57,7 +57,7 @@ load_mcfg(j6_handle_t sys, const acpi::table_header *header)
|
||||
|
||||
probe_pci(sys, group);
|
||||
|
||||
j6::syslog(" Found MCFG entry: base %lx group %d bus %d-%d",
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, " Found MCFG entry: base %lx group %d bus %d-%d",
|
||||
mcfge.base, mcfge.group, mcfge.bus_start, mcfge.bus_end);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ load_acpi(j6_handle_t sys, const bootproto::module *mod)
|
||||
|
||||
const void *root_table = info->root;
|
||||
if (!root_table) {
|
||||
j6::syslog("null ACPI root table pointer");
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "null ACPI root table pointer");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ load_acpi(j6_handle_t sys, const bootproto::module *mod)
|
||||
for (size_t i = 0; i < num_tables; ++i) {
|
||||
const acpi::table_header *header = xsdt->headers[i];
|
||||
if (!header->validate()) {
|
||||
j6::syslog("ACPI table at %lx failed validation", header);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "ACPI table at %lx failed validation", header);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ initfs_start(j6romfs::fs &fs, j6_handle_t mb)
|
||||
|
||||
while (initfs_running) {
|
||||
if (s != j6_status_ok) {
|
||||
j6::syslog("initfs: error in j6_mailbox_respond: %x", s);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "initfs: error in j6_mailbox_respond: %x", s);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ load_program_into(j6_handle_t proc, elf::file &file, uintptr_t image_base, const
|
||||
j6_handle_t sub_vma = j6_handle_invalid;
|
||||
j6_status_t res = j6_vma_create_map(&sub_vma, seg.mem_size+prologue, &addr, flags);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading ELF '%s': creating sub vma: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': creating sub vma: %lx", path, res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -121,16 +121,16 @@ load_program_into(j6_handle_t proc, elf::file &file, uintptr_t image_base, const
|
||||
eop = eos;
|
||||
|
||||
uintptr_t start_addr = (image_base + seg.vaddr) & ~0xfffull;
|
||||
j6::syslog("Mapping segment from %s at %012lx - %012lx", path, start_addr, start_addr+seg.mem_size);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::verbose, "Mapping segment from %s at %012lx - %012lx", path, start_addr, start_addr+seg.mem_size);
|
||||
res = j6_vma_map(sub_vma, proc, &start_addr, j6_vm_flag_exact);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading ELF '%s': mapping sub vma to child: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': mapping sub vma to child: %lx", path, res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = j6_vma_unmap(sub_vma, 0);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading ELF '%s': unmapping sub vma: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': unmapping sub vma: %lx", path, res);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ give_handle(j6_handle_t proc, j6_handle_t h, const char *name)
|
||||
if (h != j6_handle_invalid) {
|
||||
j6_status_t res = j6_process_give_handle(proc, h);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program: giving %s handle: %lx", name, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': giving handle: %lx", name, res);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -158,7 +158,7 @@ create_process(j6_handle_t sys, j6_handle_t slp, j6_handle_t vfs)
|
||||
j6_handle_t proc = j6_handle_invalid;
|
||||
j6_status_t res = j6_process_create(&proc);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program: creating process: %lx", res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading program: creating process: %lx", res);
|
||||
return j6_handle_invalid;
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ load_file(const j6romfs::fs &fs, const char *path)
|
||||
if (!in || in->type != j6romfs::inode_type::file)
|
||||
return {};
|
||||
|
||||
j6::syslog(" Loading file: %s", path);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, " Loading file: %s", path);
|
||||
|
||||
uint8_t *data = new uint8_t [in->size];
|
||||
util::buffer program {data, in->size};
|
||||
@@ -191,7 +191,7 @@ load_program(
|
||||
j6_handle_t sys, j6_handle_t slp, j6_handle_t vfs,
|
||||
const module *arg)
|
||||
{
|
||||
j6::syslog("Loading program '%s' into new process", path);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, "Loading program '%s' into new process", path);
|
||||
util::buffer program_data = load_file(fs, path);
|
||||
if (!program_data.pointer)
|
||||
return false;
|
||||
@@ -204,7 +204,7 @@ load_program(
|
||||
program_image_base = (rng.next() & 0xffe0 + 16) << 20;
|
||||
|
||||
if (!program_elf.valid(dyn ? elf::filetype::shared : elf::filetype::executable)) {
|
||||
j6::syslog(" ** error loading program '%s': ELF is invalid", path);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': ELF is invalid", path);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ load_program(
|
||||
j6_handle_t stack_vma = j6_handle_invalid;
|
||||
j6_status_t res = j6_vma_create_map(&stack_vma, stack_size, &stack_addr, j6_vm_flag_write);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program '%s': creating stack vma: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': creating stack vma: %lx", path, res);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ load_program(
|
||||
|
||||
elf::file ldso_elf {ldso_data};
|
||||
if (!ldso_elf.valid(elf::filetype::shared)) {
|
||||
j6::syslog(" ** error loading dynamic linker for program '%s': ELF is invalid", path);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading dynamic linker for '%s': ELF is invalid", path);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -296,20 +296,20 @@ load_program(
|
||||
uintptr_t stack_base = stack_top-stack_size;
|
||||
res = j6_vma_map(stack_vma, proc, &stack_base, j6_vm_flag_exact);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program '%s': mapping stack vma: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': mapping stack vma: %lx", path, res);
|
||||
return false;
|
||||
}
|
||||
|
||||
res = j6_vma_unmap(stack_vma, 0);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program '%s': unmapping stack vma: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': unmapping stack vma: %lx", path, res);
|
||||
return false;
|
||||
}
|
||||
|
||||
j6_handle_t thread = j6_handle_invalid;
|
||||
res = j6_thread_create(&thread, proc, stack.child_pointer(), entrypoint, program_image_base, 0);
|
||||
if (res != j6_status_ok) {
|
||||
j6::syslog(" ** error loading program '%s': creating thread: %lx", path, res);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading '%s': creating thread: %lx", path, res);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ main(int argc, const char **argv, const char **env)
|
||||
j6_handle_t vfs_mb = j6_handle_invalid;
|
||||
j6_handle_t vfs_mb_child = j6_handle_invalid;
|
||||
|
||||
j6_log("srv.init starting");
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, "srv.init starting");
|
||||
|
||||
sys = j6_find_first_handle(j6_object_type_system);
|
||||
if (sys == j6_handle_invalid)
|
||||
@@ -115,7 +115,7 @@ main(int argc, const char **argv, const char **env)
|
||||
j6_handle_t initrd_vma =
|
||||
map_phys(sys, initrd_buf.pointer, initrd_buf.count);
|
||||
if (initrd_vma == j6_handle_invalid) {
|
||||
j6_log(" ** error loading ramdisk: mapping physical vma");
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, "error loading ramdisk: mapping physical vma");
|
||||
return 4;
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ main(int argc, const char **argv, const char **env)
|
||||
break;
|
||||
|
||||
default:
|
||||
j6::syslog("Unknown device type id: %lx", m->type_id);
|
||||
j6::syslog(j6::logs::srv, j6::log_level::warn, "Unknown device type id: %lx", m->type_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <arch/memory.h>
|
||||
#include <j6/errors.h>
|
||||
#include <j6/syscalls.h>
|
||||
#include <j6/syslog.hh>
|
||||
|
||||
#include "loader.h"
|
||||
#include "modules.h"
|
||||
@@ -23,7 +24,7 @@ load_modules(
|
||||
while (p) {
|
||||
j6_handle_t mod_vma = map_phys(system, p, arch::frame_size);
|
||||
if (mod_vma == j6_handle_invalid) {
|
||||
j6_log(" ** error loading modules: mapping physical vma");
|
||||
j6::syslog(j6::logs::srv, j6::log_level::error, "error loading modules: mapping physical vma");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -99,11 +99,11 @@ pci_device::pci_device(pci_group &group, uint8_t bus, uint8_t device, uint8_t fu
|
||||
|
||||
uint16_t *status = command + 1;
|
||||
|
||||
j6::syslog("Found PCIe device at %02d:%02d:%d of type %x.%x.%x id %04x:%04x",
|
||||
j6::syslog(j6::logs::srv, j6::log_level::info, "Found PCIe device at %02d:%02d:%d of type %x.%x.%x id %04x:%04x",
|
||||
bus, device, func, m_class, m_subclass, m_progif, m_vendor, m_device);
|
||||
|
||||
j6::syslog(" = BAR0 %016lld", get_bar(0));
|
||||
j6::syslog(" = BAR1 %016lld", get_bar(1));
|
||||
j6::syslog(j6::logs::srv, j6::log_level::verbose, " = BAR0 %016lld", get_bar(0));
|
||||
j6::syslog(j6::logs::srv, j6::log_level::verbose, " = BAR1 %016lld", get_bar(1));
|
||||
|
||||
if (*status & 0x0010) {
|
||||
// Walk the extended capabilities list
|
||||
|
||||
@@ -33,7 +33,7 @@ service_locator_start(j6_handle_t mb)
|
||||
j6_handle_t give_handle = j6_handle_invalid;
|
||||
uint64_t proto_id;
|
||||
|
||||
j6::syslog("SL> Starting service locator on mbx handle %x", mb);
|
||||
j6::syslog(j6::logs::proto, j6::log_level::verbose, "SL> Starting service locator on mbx handle %x", mb);
|
||||
|
||||
while (true) {
|
||||
uint64_t data_len = sizeof(uint64_t);
|
||||
@@ -56,7 +56,7 @@ service_locator_start(j6_handle_t mb)
|
||||
break;
|
||||
}
|
||||
|
||||
j6::syslog("SL> Registering handle %x for proto %x", give_handle, proto_id);
|
||||
j6::syslog(j6::logs::proto, j6::log_level::verbose, "SL> Registering handle %x for proto %x", give_handle, proto_id);
|
||||
|
||||
services.insert( {proto_id, give_handle} );
|
||||
tag = j6_proto_base_status;
|
||||
@@ -72,10 +72,10 @@ service_locator_start(j6_handle_t mb)
|
||||
{
|
||||
auto found = services.find(proto_id);
|
||||
if (found != services.end()) {
|
||||
j6::syslog("SL> Found handle %x for proto %x", give_handle, proto_id);
|
||||
j6::syslog(j6::logs::proto, j6::log_level::verbose, "SL> Found handle %x for proto %x", give_handle, proto_id);
|
||||
give_handle = found->second;
|
||||
} else {
|
||||
j6::syslog("SL> Found no handles for proto %x", proto_id);
|
||||
j6::syslog(j6::logs::proto, j6::log_level::verbose, "SL> Found no handles for proto %x", proto_id);
|
||||
give_handle = j6_handle_invalid;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user