作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 Linux 内核中使用以下系统调用,它获取进程的虚拟地址并输出以下信息:
如果这个地址的数据在内存或者磁盘上。
该地址所属页面是否被引用。
这个地址所属的页面是否脏了。
#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/
我在 Linux 内核中使用以下系统调用,它获取进程的虚拟地址并输出以下信息: 如果这个地址的数据在内存或者磁盘上。 该地址所属页面是否被引用。 这个地址所属的页面是否脏了。 #include #in
我是一名优秀的程序员,十分优秀!