gpt4 book ai didi

linux - linux_kernel 系统调用中未声明的 ptep_t

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:22 24 4
gpt4 key购买 nike

我在 Linux 内核中使用以下系统调用,它获取进程的虚拟地址并输出以下信息:

  1. 如果这个地址的数据在内存或者磁盘上。

  2. 该地址所属页面是否被引用。

  3. 这个地址所属的页面是否脏了。

    #include<linux/kernel.h>
    #include<linux/sched.h>
    #include<asm/page.h>
    #include<asm/pgtable.h>
    #include<linux/mm_types.h>

    asmlinkage int sys_vma_props(unsigned long mem,int pid)
    {
    struct task_struct *task=find_task_by_vpid(pid);
    struct mm_struct *memory=task->active_mm;

    int data=0;
    int ref=0;
    int dirty =0;

    pgd_t *pgd=pgd_offset(memory,mem);
    pud_t *pud=pud_offset(pgd,mem);
    pmd_t *pmd=pmd_offset(pud,mem);
    ptet_t *ptep=pte_offset_kernel(pmd,mem);
    pte_t pte=*ptep;

    data=pte_present(pte);
    printk("present flag: %i\n",data?1:0);

    ref=pte_young(pte);
    printk("referenced flag: %i\n",ref?1:0);

    dirty=pte_dirty(pte);
    printk("dirty flag: %i\n",dirty?1:0);

    return 0;
    }

但是,我收到以下有关 ptep_t 变量和 ptep 变量的错误。我已经研究过,这对我来说很有意义,所以我不确定问题出在哪里。是什么导致了错误?任何建议将不胜感激。

address/sys_vadd.c:19: error: ‘ptep_t’ undeclared (first use in this function)
address/sys_vadd.c:19: error: (Each undeclared identifier is reported only once
address/sys_vadd.c:19: error: for each function it appears in.)

address/sys_vadd.c:19: error: ‘ptep’ undeclared (first use in this function)
address/sys_vadd.c:20: warning: ISO C90 forbids mixed declarations and code

最佳答案

问题是您为 ptep 变量使用了错误的类型。它应该是 pte_t 而不是 ptet_t

关于linux - linux_kernel 系统调用中未声明的 ptep_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com