我正在尝试在x86上实现一个syscall ,该系统调用能够修改vDSO的内容。 鉴于vDSO内容对于用户空间是只读的,我相信需要一个syscall 。 否则会导致分段错误。 但是,我目前无法成功。 我的计划: kernel/sys.c syscall将读取在arch/x86/include/a ...
我正在尝试在x86上实现一个syscall ,该系统调用能够修改vDSO的内容。 鉴于vDSO内容对于用户空间是只读的,我相信需要一个syscall 。 否则会导致分段错误。 但是,我目前无法成功。 我的计划: kernel/sys.c syscall将读取在arch/x86/include/a ...
我试图在vvar.h中声明一个新变量并在我的新 VDSO function 附近定义它。 这样我就可以在我的 vdso function 中使用这个变量。 我有一个关于 VVar 的问题。 根据arch/x86/include/asm/vvar.h中的描述,当我在这里声明一个新变量为DECLARE ...
我写了一个示例程序来使用__kernel_vsyscall进行系统调用 这段调用exit(42)代码工作正常。 但是当我尝试调用write(1, "hello world", 12) ,它失败了 它因分段错误而失败。 留言: ...
我在 Linux 中使用 SAMA5d2 CPU,并希望通过 vdso 函数访问 ioport。 我应该如何将 ioport 映射到用户空间内存以访问从用户空间调用的 vdso 函数中的 ioport? 实际上我想在 tcb_clksrc 定时器中实现定时器周期的获取。 内核只有 arch_arm_ ...
我正在尝试使用最新的 kernel 源代码进行 vDSO。 我正在关注本教程https://www.linuxjournal.com/content/creating-vdso-colonels-other-chicken?page=0,0但是我没有在 linux 中找到一些函数,如 update ...
我试图了解clock_gettime()何时会导致错误。 手册页列出了以下两种可能性: EFAULT tp 指向可访问地址空间之外。 EINVAL 此系统不支持指定的 clk_id。 很容易触发EINVAL错误,但我无法让clock_gettime()将errno为EFAULT 。 ...
如果这个问题的答案很明显,我深表歉意,但是为什么在Linux系统上对于32位可执行文件有两个版本的vdso [1] ,请问从中选择什么标准? *可以在/lib/modules/KERNEL_NAME/vdso ...
运行以下命令时 我注意到strace不能捕获对getpid (2)系统调用的调用。 我首先考虑到这是由于glibc缓存了pid,但是没有至少一个真实的系统调用,就不应有libc用于缓存的pid。 然后我认为可能是vdso的罪魁祸首,但是运行一个通过libc进行此系统调用的C程序时,显 ...
我想以一种可以使用objdump -D验证它是否正确的方式将 VDSO 转储到磁盘。 我们可以使用getauxval(AT_SYSINFO_EHDR)获取 VDSO 的基地址,如vdso(7) 。 但是如何获得对象的大小呢? 我碰巧知道它正好有两页长,但我不确定我是否可以依靠它。 我在 ELF ...
我一直在估计最近宣布的英特尔错误对使用netmap的数据包处理应用程序的影响 。 到目前为止,我已经测量过我每次poll()系统调用处理大约50个数据包,但这个数字不包括gettimeofday()调用。 我还测量过我可以从一个不存在的文件描述符(这是系统调用可以做的最便宜的事情)中读取每秒 ...
我正在我们的风暴监督员(Wheezy机器)上调试高系统CPU使用率(非用户CPU使用率)。 以下是观察结果 相关过程的输出输出: 在相关过程的线程中捕获了这一点 最后发现线程在while(true)运行,其中一个调用是System.currentTimeMillis() ...
我在3.20GHz的Intel®Xeon®CPU E5-2667 v4上使用CentOS Linux版本7.3.1611 在测试用户空间应用程序时,我注意到clock_gettime(CLOCK_MONOTONIC,&ts)最多可能需要5-6微秒,而不是平均23纳秒。 每10000次后续 ...
情况如下: 我正在尝试做一个在github中破解内核的项目 。 内核版本是linux-3.18.6。 QEMU用于模拟环境。 在我的应用程序中,我尝试通过遵循它们来理解syscall过程。完成目标的方法就像shell程序一样。 我只是创建一些命令来运行相对的系统调用。 也 ...
我想检查vsyscall_gtod_data的内容(始终保持使clock_gettime()工作所需的相关信息)。 我正在使用gdb一步步完成__vdso_clock_gettime()的汇编代码,然后看以下部分: 我相信是以下C代码的汇编程序(来自linux-4.8.0 / ar ...
我引用了一个触发大量内核时间的java进程来查看正在使用的系统调用,并且惊讶地看到gettimeofday()和clock_gettime()占主导地位(我怀疑它是由于日志记录),这很奇怪考虑该man vdso说: 使用strace (1)跟踪系统调用时,vDSO导出的符号(系统调用)不会 ...
在glibc 2.15版的64位内核上运行的32位应用程序是否支持vdso? 如果是,如何使它适用于在64位内核上运行的32位应用程序。 原因即使“ linux-vdso.so.1”上的dlopen成功,“ __ vdso_gettimeofday”上的dlsym也失败。 在同一系统上 ...
我在想,如果有一种方法来捕获(即观察)VDSO像调用gettimeofday在strace 。 还有,有没有办法在不加载linux-vdso.so.1 (一个标志或env变量)的情况下执行二进制文件? 最后,如果我写一个程序,删除linux-vdso.so.1从辅助向量地址,然后ex ...
我在最后一个libc中剖析了syscall调用: 我在sysdeps / unix / sysv / linux / i386 / sysdep.h中有这个代码: 如果我理解这段代码,那么LOADREGS _ ## nr(args)宏会将参数加载到寄存器ebx,ecx,edx,e ...
刚刚在 Linux 内核中搜索了 vdso 钩子(例如在 kernel.org 上找到了这个),它目前似乎主要用于与时间相关的系统调用。 这让人想到两个问题: 是否有任何其他系统调用计划很快使用 vDSO 接口? clock_gettime()真的成为一个足够大的瓶颈来激发 vDSO 的 ...
我做了sudo cat /proc/1/maps -vv 我正在尝试理解输出。我可以看到许多共享库按预期映射到内存映射段。 到最后有类似的东西 vdso和vsyscall是什么意思? vsyscall 是内存的内核部分吗? 如果有人能对这个问题有所了解,那就太好了。 ...