Compare commits
3 Commits
4551e7b2e6
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a2c89df195 | |||
| 35949fa8db | |||
| d6c84565af |
@@ -1,4 +1,5 @@
|
||||
target_compile_options(${kernel_exe_name} PRIVATE
|
||||
-z max-page-size=0x1000 -m64 -mcmodel=large -mno-red-zone -mno-mmx
|
||||
-mno-sse -mno-sse2 -D_64BIT -DBYTE_ORDER=1234)
|
||||
target_link_libraries(${kernel_exe_name} "-z max-page-size=0x1000" "-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/layout.ld")
|
||||
target_link_libraries(${kernel_exe_name} "-static -z max-page-size=0x1000" "-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/layout.ld")
|
||||
|
||||
|
||||
@@ -330,11 +330,11 @@ void task_exit(int status)
|
||||
task_unlock(self);
|
||||
handle_table_destroy(handles);
|
||||
|
||||
printk("thread %s[%u.%u] killed",
|
||||
tracek("thread %s[%u.%u] killed",
|
||||
self->t_name,
|
||||
self->t_id,
|
||||
cur_thread->tr_id);
|
||||
printk("task %s[%u] killed (%u, %u)",
|
||||
tracek("task %s[%u] killed (%u, %u)",
|
||||
self->t_name,
|
||||
self->t_id,
|
||||
self->t_base.ob_refcount,
|
||||
|
||||
@@ -148,7 +148,7 @@ void thread_exit(void)
|
||||
thread_lock_irqsave(self, &flags);
|
||||
self->tr_state = THREAD_STOPPED;
|
||||
object_assert_signal(&self->tr_base, THREAD_SIGNAL_STOPPED);
|
||||
printk("thread %s[%u.%u] exited",
|
||||
tracek("thread %s[%u.%u] exited",
|
||||
self->tr_parent->t_name,
|
||||
self->tr_parent->t_id,
|
||||
self->tr_id);
|
||||
@@ -184,7 +184,7 @@ void thread_kill(struct thread *thread)
|
||||
}
|
||||
|
||||
object_assert_signal(&thread->tr_base, THREAD_SIGNAL_STOPPED);
|
||||
printk("thread %s[%u.%u] killed",
|
||||
tracek("thread %s[%u.%u] killed",
|
||||
thread->tr_parent->t_name,
|
||||
thread->tr_parent->t_id,
|
||||
thread->tr_id);
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
|
||||
extern kern_status_t sys_task_exit(int status)
|
||||
{
|
||||
#if defined(TRACE)
|
||||
struct task *self = current_task();
|
||||
printk("%s[%d]: task_exit(%d)", self->t_name, self->t_id, status);
|
||||
#endif
|
||||
task_exit(status);
|
||||
return KERN_FATAL_ERROR;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <kernel/object.h>
|
||||
#include <kernel/panic.h>
|
||||
#include <kernel/printk.h>
|
||||
#include <kernel/sched.h>
|
||||
#include <kernel/task.h>
|
||||
#include <kernel/util.h>
|
||||
#include <kernel/vm-object.h>
|
||||
#include <mango/status.h>
|
||||
@@ -1297,7 +1299,14 @@ kern_status_t address_space_demand_map(
|
||||
object_offset,
|
||||
VMO_ALLOCATE_MISSING_PAGE,
|
||||
NULL);
|
||||
// tracek("vm: mapping %07llx -> %10llx", vm_page_get_paddr(pg), addr);
|
||||
#if 0
|
||||
struct task *self = current_task();
|
||||
printk("vm: %s[%d] mapping %07llx -> %10llx",
|
||||
self->t_name,
|
||||
self->t_id,
|
||||
vm_page_get_paddr(pg),
|
||||
addr);
|
||||
#endif
|
||||
|
||||
if (!pg) {
|
||||
return KERN_FATAL_ERROR;
|
||||
|
||||
@@ -281,10 +281,12 @@ static struct vm_page *alloc_page(struct vm_object *vo, off_t offset)
|
||||
|
||||
void *page_buf = vm_page_get_vaddr(page);
|
||||
memset(page_buf, 0x0, vm_page_get_size_bytes(page));
|
||||
tracek("vm-object: [%s] alloc offset %zx -> page %zx",
|
||||
#if 0
|
||||
printk("vm-object: [%s] alloc offset %zx -> page %zx",
|
||||
vo->vo_name,
|
||||
offset,
|
||||
vm_page_get_paddr(page));
|
||||
#endif
|
||||
page->p_vmo_offset = offset;
|
||||
vo->vo_pages.b_root = &page->p_bnode;
|
||||
btree_insert_fixup(&vo->vo_pages, &page->p_bnode);
|
||||
@@ -392,6 +394,7 @@ struct vm_page *vm_object_get_page(
|
||||
enum vm_object_flags flags,
|
||||
unsigned long *irq_flags)
|
||||
{
|
||||
offset &= ~VM_PAGE_MASK;
|
||||
if (!vo->vo_ctrl && (flags & VMO_ALLOCATE_MISSING_PAGE)) {
|
||||
return alloc_page(vo, offset);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user