kernel support kconfig
This commit is contained in:
@@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
|
||||
file(GLOB_RECURSE deps *.c *.S)
|
||||
|
||||
add_library(knl STATIC ${deps})
|
||||
target_include_directories(
|
||||
knl
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "assert.h"
|
||||
#include "slist.h"
|
||||
#include "spinlock.h"
|
||||
#include "futex_queue.h"
|
||||
// #include "futex_queue.h"
|
||||
#include "globals.h"
|
||||
#include "string.h"
|
||||
#include "ipc.h"
|
||||
@@ -27,8 +27,7 @@
|
||||
#include "slist.h"
|
||||
#include "access.h"
|
||||
#include "limits.h"
|
||||
|
||||
#define FT_ADDR_NR 16 //!< 最多加锁的对象
|
||||
#include "futex.h"
|
||||
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
||||
@@ -67,7 +66,7 @@ typedef struct futex_lock
|
||||
typedef struct futex
|
||||
{
|
||||
kobject_t kobj;
|
||||
futex_lock_t fl_list[FT_ADDR_NR]; //!< 存储加锁的地址
|
||||
futex_lock_t fl_list[CONFIG_FT_ADDR_NR]; //!< 存储加锁的地址
|
||||
} futex_t;
|
||||
|
||||
static futex_t futex_obj;
|
||||
@@ -173,7 +172,7 @@ static futex_lock_t *futex_set_addr(futex_t *ft, void *uaddr, thread_t *hd)
|
||||
{
|
||||
int empty_inx = -1;
|
||||
|
||||
for (int i = 0; i < FT_ADDR_NR; i++)
|
||||
for (int i = 0; i < CONFIG_FT_ADDR_NR; i++)
|
||||
{
|
||||
if (ft->fl_list[i].uaddr == uaddr)
|
||||
{
|
||||
@@ -198,7 +197,7 @@ static futex_lock_t *futex_set_addr(futex_t *ft, void *uaddr, thread_t *hd)
|
||||
}
|
||||
static futex_lock_t *futex_find(futex_t *fst, void *uaddr)
|
||||
{
|
||||
for (int i = 0; i < FT_ADDR_NR; i++)
|
||||
for (int i = 0; i < CONFIG_FT_ADDR_NR; i++)
|
||||
{
|
||||
if (fst->fl_list[i].uaddr == uaddr)
|
||||
{
|
||||
@@ -474,7 +473,7 @@ static void futex_unmap(obj_space_t *obj_space, kobject_t *kobj)
|
||||
printk("%s:%d\n", __func__, __LINE__);
|
||||
|
||||
umword_t status = spinlock_lock(&futex->kobj.lock);
|
||||
for (int i = 0; i < FT_ADDR_NR; i++)
|
||||
for (int i = 0; i < CONFIG_FT_ADDR_NR; i++)
|
||||
{
|
||||
thread_t *pos;
|
||||
|
||||
@@ -512,7 +511,7 @@ static void futex_release_stage2(kobject_t *kobj)
|
||||
static void futex_init(futex_t *ft)
|
||||
{
|
||||
kobject_init(&ft->kobj, FUTEX_TYPE);
|
||||
for (int i = 0; i < FT_ADDR_NR; i++)
|
||||
for (int i = 0; i < CONFIG_FT_ADDR_NR; i++)
|
||||
{
|
||||
slist_init(&ft->fl_list[i].thread_list_head);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <irq.h>
|
||||
#include <printk.h>
|
||||
/*TODO:换成更节省内存的方式*/
|
||||
static irq_entry_t irqs[IRQ_REG_TAB_SIZE] = {0};
|
||||
static irq_entry_t irqs[CONFIG_IRQ_REG_TAB_SIZE] = {0};
|
||||
static void irq_tigger(irq_entry_t *irq);
|
||||
|
||||
/**
|
||||
@@ -30,7 +30,7 @@ static void irq_tigger(irq_entry_t *irq);
|
||||
*/
|
||||
bool_t irq_check_usability(int inx)
|
||||
{
|
||||
if (inx >= IRQ_REG_TAB_SIZE)
|
||||
if (inx >= CONFIG_IRQ_REG_TAB_SIZE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ bool_t irq_alloc(int inx, irq_sender_t *irq, void (*irq_tigger_func)(irq_entry_t
|
||||
*/
|
||||
void irq_free(int inx)
|
||||
{
|
||||
assert(inx < IRQ_REG_TAB_SIZE);
|
||||
assert(inx < CONFIG_IRQ_REG_TAB_SIZE);
|
||||
irqs[inx].irq_tigger_func = NULL;
|
||||
}
|
||||
/**
|
||||
@@ -72,7 +72,7 @@ void irq_free(int inx)
|
||||
*/
|
||||
irq_entry_t *irq_get(int inx)
|
||||
{
|
||||
assert(inx < IRQ_REG_TAB_SIZE);
|
||||
assert(inx < CONFIG_IRQ_REG_TAB_SIZE);
|
||||
return &irqs[inx];
|
||||
}
|
||||
/**
|
||||
@@ -83,7 +83,7 @@ void entry_handler(void)
|
||||
{
|
||||
umword_t isr_no = arch_get_isr_no();
|
||||
|
||||
isr_no -= USER_ISR_START_NO; //!< 系统用的irq偏移
|
||||
isr_no -= CONFIG_USER_ISR_START_NO; //!< 系统用的irq偏移
|
||||
|
||||
// printk("%d.\n", isr_no);
|
||||
if (!irq_check_usability(isr_no))
|
||||
|
||||
@@ -18,7 +18,7 @@ void mm_space_init(mm_space_t *mm_space, int is_knl)
|
||||
{
|
||||
region_info_t *regi_info;
|
||||
|
||||
for (int i = 0; i < REGION_NUM; i++)
|
||||
for (int i = 0; i < CONFIG_REGION_NUM; i++)
|
||||
{
|
||||
mm_space->pt_regions[i].region_inx = -1;
|
||||
}
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
#include "string.h"
|
||||
void obj_space_init(obj_space_t *obj_space, ram_limit_t *ram)
|
||||
{
|
||||
for (int i = 0; i < OBJ_MAP_TAB_SIZE; i++)
|
||||
for (int i = 0; i < CONFIG_OBJ_MAP_TAB_SIZE; i++)
|
||||
{
|
||||
obj_space->tab.tabs[i] = NULL;
|
||||
}
|
||||
}
|
||||
void obj_space_release(obj_space_t *obj_space, ram_limit_t *ram)
|
||||
{
|
||||
for (int i = 0; i < OBJ_MAP_TAB_SIZE; i++)
|
||||
for (int i = 0; i < CONFIG_OBJ_MAP_TAB_SIZE; i++)
|
||||
{
|
||||
mm_limit_free(ram, obj_space->tab.tabs[i]);
|
||||
}
|
||||
@@ -33,8 +33,8 @@ void obj_space_del(obj_space_t *obj_space, obj_addr_t inx)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int tab_inx = inx / OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % OBJ_MAP_ENTRY_SIZE;
|
||||
int tab_inx = inx / CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
|
||||
if (!obj_space->tab.tabs[tab_inx])
|
||||
{
|
||||
@@ -50,8 +50,8 @@ obj_map_entry_t *obj_space_insert(obj_space_t *obj_space, ram_limit_t *ram, kobj
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
int tab_inx = inx / OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % OBJ_MAP_ENTRY_SIZE;
|
||||
int tab_inx = inx / CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
|
||||
if (!obj_space->tab.tabs[tab_inx])
|
||||
{
|
||||
@@ -79,8 +79,8 @@ obj_map_entry_t *obj_space_lookup(obj_space_t *obj_space, obj_addr_t inx)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
int tab_inx = inx / OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % OBJ_MAP_ENTRY_SIZE;
|
||||
int tab_inx = inx / CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
int entry_inx = inx % CONFIG_OBJ_MAP_ENTRY_SIZE;
|
||||
|
||||
if (!obj_space->tab.tabs[tab_inx])
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "uart/uart.h"
|
||||
|
||||
static spinlock_t lock;
|
||||
static char print_cache[128];
|
||||
static char print_cache[CONFIG_PRINTK_CACHE_SIZE];
|
||||
|
||||
/**
|
||||
* @brief 原始输出
|
||||
|
||||
Reference in New Issue
Block a user