Use new sys tracer.

This commit is contained in:
TXuian
2024-05-09 09:39:07 +08:00
parent 3b011500f1
commit a19312df24
12 changed files with 138 additions and 728 deletions

View File

@@ -29,6 +29,7 @@ Modification:
*************************************************/
#pragma once
#include <stddef.h>
#include <stdint.h>
struct slab_state {

View File

@@ -40,8 +40,6 @@ bool softkernel_init(struct TraceTag* _hardkernel_tag, struct TraceTag* _softker
CreateResourceTag(&server_identifier_owner, _softkernel_tag, "server-identifier", TRACER_OWNER, NULL);
/* init soft kernel */
module_phymem_init(); // init buddy management system
struct PagerRightGroup pager_rights;
AchieveResourceTag(&pager_rights.mmu_driver_tag, _hardkernel_tag, "mmu-ac-resource");
module_pager_init(&pager_rights);

View File

@@ -33,6 +33,7 @@ Modification:
#include "multicores.h"
#include "assert.h"
#include "kalloc.h"
#include "task.h"
struct spinlock whole_kernel_lock;
@@ -42,13 +43,16 @@ extern int sys_spawn(char* img_start, char* name, char** argv);
static struct TraceTag hardkernel_tag, softkernel_tag;
static volatile int core_init_done = 0;
__attribute__((optimize("O0"))) int main(void)
int main(void)
{
/* init tracer */
uint32_t cpu_id = cur_cpuid();
if (cpu_id == 0) {
tracer_init(); // init tracer system
/* init memory management first */
module_phymem_init(); // init buddy management system
/* init tracer system */
sys_tracer_init();
if (!CreateResourceTag(&hardkernel_tag, RequireRootTag(), "hardkernel", TRACER_OWNER, NULL) || //
!CreateResourceTag(&softkernel_tag, RequireRootTag(), "softkernel", TRACER_OWNER, NULL)) {
ERROR("Failed to create hardkernel owner and softkernel owner.\n");

View File

@@ -39,14 +39,14 @@ struct KBuddy user_phy_freemem_buddy;
extern uint32_t kernel_data_end[];
bool module_phymem_init()
{
LOG_PRINTF("Organizing free memory...\n");
// LOG_PRINTF("Organizing free memory...\n");
uint32_t kern_freemem_start = V2P(&kernel_data_end);
uint32_t kern_freemem_end = PHY_USER_FREEMEM_BASE;
uint32_t user_freemem_start = PHY_USER_FREEMEM_BASE;
uint32_t user_freemem_end = PHY_MEM_STOP;
KBuddySysInit(&kern_virtmem_buddy, kern_freemem_start, kern_freemem_end);
KBuddyInit(&user_phy_freemem_buddy, user_freemem_start, user_freemem_end);
LOG_PRINTF("Free memory organized done.\n");
// LOG_PRINTF("Free memory organized done.\n");
return true;
}

View File

@@ -67,7 +67,7 @@ int sys_connect_session(char* path, int capacity, struct Session* user_session)
if (!AchieveResourceTag(&server_identifier_owner, RequireRootTag(), "softkernel/server-identifier")) {
panic("Server identifier not initialized.\b");
}
assert(server_identifier_owner.meta != NULL || server_identifier_owner.type == TRACER_OWNER);
assert(server_identifier_owner.meta != NULL);
struct TraceTag server_tag;
if (!AchieveResourceTag(&server_tag, &server_identifier_owner, path)) {

View File

@@ -44,7 +44,7 @@ int sys_register_as_server(char* name)
if (!AchieveResourceTag(&server_identifier_set_tag, RequireRootTag(), "softkernel/server-identifier")) {
panic("Server identifier not initialized.\b");
}
assert(server_identifier_set_tag.meta != NULL || server_identifier_set_tag.type == TRACER_OWNER);
assert(server_identifier_set_tag.meta != NULL);
if (!CreateResourceTag(&server->server_identifier, &server_identifier_set_tag, name, TRACER_SERVER_IDENTITY_AC_RESOURCE, server)) {
return -1;