49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
diff --git a/arch/x86_64/kernel/include/syscall_list.h b/arch/x86_64/kernel/include/syscall_list.h
|
|
index ce28d52..d1ad182 100644
|
|
--- a/arch/x86_64/kernel/include/syscall_list.h
|
|
+++ b/arch/x86_64/kernel/include/syscall_list.h
|
|
@@ -167,4 +167,5 @@ SYSCALL_HANDLED(802, linux_mlock)
|
|
SYSCALL_HANDLED(803, suspend_threads)
|
|
SYSCALL_HANDLED(804, resume_threads)
|
|
SYSCALL_HANDLED(811, linux_spawn)
|
|
+SYSCALL_HANDLED(950, mem_destroy)
|
|
/**** End of File ****/
|
|
diff --git a/arch/x86_64/kernel/syscall.c b/arch/x86_64/kernel/syscall.c
|
|
index 230fa98..1860268 100644
|
|
--- a/arch/x86_64/kernel/syscall.c
|
|
+++ b/arch/x86_64/kernel/syscall.c
|
|
@@ -2745,4 +2745,33 @@ time_t time(void) {
|
|
return ret;
|
|
}
|
|
|
|
+
|
|
+#define ADD_ADDR_VAL 0x400
|
|
+SYSCALL_DECLARE(mem_destroy)
|
|
+{
|
|
+ int rst = 0;
|
|
+ int mem_chunks_num, chunk_id, get_numa_id;
|
|
+ unsigned long get_start, get_end;
|
|
+ unsigned long *addr;
|
|
+
|
|
+ mem_chunks_num = ihk_mc_get_nr_memory_chunks();
|
|
+ kprintf("%s: memory chunk %d.\n", __FUNCTION__, mem_chunks_num);
|
|
+
|
|
+ for (chunk_id = 0; chunk_id < mem_chunks_num; chunk_id++) {
|
|
+ rst = ihk_mc_get_memory_chunk(chunk_id, &get_start, &get_end, &get_numa_id);
|
|
+ kprintf("%s: mem chunk[%d] numa ID(%d)\n"
|
|
+ ,__FUNCTION__ ,chunk_id ,get_numa_id);
|
|
+ kprintf(" phys(0x%lx - 0x%lx) virt(0x%lx - 0x%lx)\n"
|
|
+ ,get_start ,get_end ,phys_to_virt(get_start) ,phys_to_virt(get_end));
|
|
+ }
|
|
+
|
|
+ addr = phys_to_virt(get_end + ADD_ADDR_VAL);
|
|
+#if 0
|
|
+ *addr = 0x1;
|
|
+#endif
|
|
+ kprintf("%s: Address out of range 0x%lx(val:%d)\n",__FUNCTION__ ,addr ,*addr);
|
|
+
|
|
+ return rst;
|
|
+}
|
|
+
|
|
/*** End of File ***/
|