forked from xuos/xiuos
fix memlayout and sys_kill
This commit is contained in:
parent
ae7992d429
commit
fbd7aa46f5
|
@ -36,8 +36,8 @@ Modification:
|
|||
/* A55 physical memory layout */
|
||||
#define PHY_MEM_BASE (0x0000000010000000ULL)
|
||||
#define PHY_USER_FREEMEM_BASE (0x0000000040000000ULL)
|
||||
#define PHY_USER_FREEMEM_TOP (0x0000000050000000ULL)
|
||||
#define PHY_MEM_STOP (0x0000000050000000ULL)
|
||||
#define PHY_USER_FREEMEM_TOP (0x0000000080000000ULL)
|
||||
#define PHY_MEM_STOP (0x0000000080000000ULL)
|
||||
|
||||
/* PTE-PAGE_SIZE */
|
||||
#define LEVEL4_PTE_SHIFT 12
|
||||
|
|
|
@ -37,7 +37,7 @@ Modification:
|
|||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define MAX_BUDDY_ORDER (10)
|
||||
#define MAX_BUDDY_ORDER (12)
|
||||
|
||||
#define FREE_LIST_INDEX(order) \
|
||||
(1 << order)
|
||||
|
|
|
@ -51,7 +51,7 @@ static bool _new_pgdir(struct TopLevelPageDirectory* pgdir)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool _map_pages(uintptr_t* pgdir, uintptr_t vaddr, uintptr_t paddr, int len, uintptr_t attr)
|
||||
static bool _map_pages(uintptr_t* pgdir, uintptr_t vaddr, uintptr_t paddr, intptr_t len, uintptr_t attr)
|
||||
{
|
||||
assert(len >= 0);
|
||||
vaddr = ALIGNDOWN(vaddr, LEVEL4_PTE_SIZE);
|
||||
|
@ -140,7 +140,7 @@ static bool _map_user_pages(uintptr_t* pgdir, uintptr_t vaddr, uintptr_t paddr,
|
|||
_p_pgtbl_mmu_access->MmuUsrDevPteAttr(&mem_attr);
|
||||
}
|
||||
|
||||
return _map_pages(pgdir, vaddr, paddr, len, mem_attr);
|
||||
return _map_pages(pgdir, vaddr, paddr, (intptr_t)len, mem_attr);
|
||||
}
|
||||
|
||||
/// assume that a user pagedir is allocated from [0, size)
|
||||
|
|
|
@ -53,6 +53,17 @@ int sys_kill(int id)
|
|||
}
|
||||
}
|
||||
|
||||
struct ksemaphore* sem = NULL;
|
||||
DOUBLE_LIST_FOR_EACH_ENTRY(sem, &xizi_task_manager.semaphore_pool.sem_list_guard, sem_list_node)
|
||||
{
|
||||
task = NULL;
|
||||
DOUBLE_LIST_FOR_EACH_ENTRY(task, &sem->wait_list_guard, node)
|
||||
{
|
||||
sys_exit(task);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// check if task is a ready one
|
||||
for (int prio = 0; prio < TASK_MAX_PRIORITY; prio++) {
|
||||
DOUBLE_LIST_FOR_EACH_ENTRY(task, &xizi_task_manager.task_list_head[prio], node)
|
||||
|
|
Loading…
Reference in New Issue