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中获得这两个指针? 谢谢,