xv6

    0熱度

    1回答

    我試圖添加一個系統調用到xv6,它提供給定虛擬地址的轉換後的物理地址。結合下面的函數定義,我寫了一個系統調用。功能使用: static pte_t * walkpgdir(pde_t *pgdir, const void *va, int alloc) -- vm.c char* uva2ka(pde_t *pgdir, char *uva) --vm.c 這裏是我的代碼: proc

    2熱度

    1回答

    我試圖寫一個簡單的系統調用XV6(文檔可用here和Github here),以瞭解它們是如何實現的。我已經使用這些步驟 在syscall.c,宣告extern int sys_hello(void)並加入到[SYS_hello] sys_hello陣列static int (*syscalls[])(void) 在syscall.h,定義SYS_hello呼叫號碼22 在user.h,聲明的函數

    0熱度

    1回答

    在XV6 mmu.h文件,有這2行代碼 #define PGROUNDUP(sz) (((sz)+PGSIZE-1) & ~(PGSIZE-1)) #define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1)) 他們做些什麼?

    3熱度

    1回答

    的節點被定義如下: struct node{ int value; struct node *next; }; 通過使用sizeof(struct node)我得知一個節點是8個字節(在XV6)。所以我用malloc來分配一些內存空間來存儲一些節點。 xv6中的單個頁面是4096個字節,如果我有8個頁面,則可以存儲4096個這樣的節點。但是,那不是發生了什麼事

    1熱度

    1回答

    在嘗試測試我的克隆系統調用(下面的代碼),我不斷收到以下錯誤: pid 4 thread_test: trap 13 err 0 on cpu 1 eip 0xc54 addr 0x0--kill proc pid 5 thread_test: trap 14 err 4 on cpu 1 eip 0x0 addr 0x28ec83e5--kill proc 對應於一般性保護錯誤和頁面錯誤。有沒有

    0熱度

    1回答

    我移植xv6從GCC到鐺,並會見了以下錯誤消息: clang -m32 -gdwarf-2 -Wa,-divide -c -o swtch.o swtch.S clang-3.8: error: unsupported argument '-divide' to option 'Wa,' 注意-Wa用於參數傳遞給彙編,我不知道什麼是-divide選項。 作爲一個修補程序,目前我通過將no-i

    1熱度

    2回答

    這是我在proc.c中的'translate()' 我想獲得給定虛擬地址的指針的物理地址,但我不知道如何拿到三分pgdir(頁目錄)... int translate(void* vaddr) { cprintf("vaddr = %p\n",vaddr); int paddr; pde_t *pgdir; pte_t *pgtab; pde_t *pde; pte_t *

    1熱度

    1回答

    我想遍歷xv6文件系統中所有分配的inode,並且想要獲取根目錄的dinode並從那裏開始,但我已經麻煩得到這個工作。我嘗試使用'dirlookup()',但無論我導入了什麼,我都會收到錯誤,指出該函數未定義。

    0熱度

    1回答

    我在QEMU中混淆了xv6,並且在我所在的目錄中創建了一個新文件,當我在QEMU中並輸入ls時,該文件未列出。事實上,很多文件都沒有列出,我不知道爲什麼它列出了它所做的。它似乎只列出了編譯的.c文件,並且出於某種原因是一個自述文件,但沒有編譯我編寫的.c文件。

    0熱度

    1回答

    我試圖在xv6上實現一個新的系統調用。 傳遞參數有一些麻煩。 可以說這是我的系統調用。 sys_mySystemcall(int* x ,struct myStruct * y); 如何在sysproc.c中獲得這兩個指針? 謝謝,