问题标签 [system-calls]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - How does a syscall get located in Linux?
I'm trying to add a new syscall in Red Hat 8.0 and I'm confused about some aspect of the mechanism. I've been following this guide: http://www.linuxjournal.com/article/3326 which details the steps of updating the syscall table in entry.S
and unistd.h
.
However, I can't seem to figure out how the compiler actually finds where the syscall is implemented from this information. Obviously there's something that involves #include
s, but I can't find any indications of includes being made, nor locate many of the syscalls in the code. What do I need to do for my syscall to be found?
assembly - MIPS 系统调用和 $t 寄存器
MIPS 寄存器有一个约定 - $s 寄存器将在子程序调用中保留,因此如果您的子程序修改它们,它应该将它们保存到堆栈中,而 $t 寄存器不保留。
现在,系统调用可以修改 $t 寄存器吗?在我拥有的模拟器中,它没有,但真机是否可以更改 $t 寄存器?我问是因为我想知道假设 $t 寄存器在系统调用中保持不变是否安全。
windows - Windows 如何在系统调用期间切换到超级用户模式?
Windows 如何在系统调用期间切换到超级用户模式?我听说过一些关于“trap 0”的事情,但这甚至不像 x86 指令。我逐步完成了一些系统调用,但找不到任何系统调用。很多 Windows 系统调用都在用户模式下运行吗?哪个 DO 在主管模式下运行?
linux - 为 linux 编写系统调用
我尝试编写一个系统调用。我按照以下步骤操作:
linux/arch/x86/kernel/syscall_table_32.S ----> 。长系统 mycall
linux/include/linux/syscalls.h --------> asmlinkage int sys mycall (int i , int j );
linux/arch/x86/include/asm/unistd_32.h ----> #define NR mycall 333
我将 linux/Makefile 更改为 core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ mycall/
我创建了一个名为 mycall 的目录。---->linux/mycall
在该文件中,我放置了 mycall.c :
6)我创建Makefile。---> linux/mycall/Makefile。
然后当我尝试这个系统调用时,它总是返回-1。这些行是我在 Desktop 中的测试代码。testmycall.c
然后我重新编译内核。如果我编译代码,没有任何问题。当我运行这个程序时,它不会将两个值相加。它总是返回-1。我的系统调用有什么问题?(当我重新编译内核时,系统没有浪费超过3秒的时间。我认为这里可能有问题)
ubuntu - 配置内核
创建新的系统调用后,如何更新内核?
我试过这些线,
但是Ubuntu问我是否确定我在做什么。但我不确定。我必须说是吗?这是做了什么,Ubuntu对我说:
您正在尝试安装内核映像(版本 2.6.25.4-us122l)但是,目录 /lib/modules/2.6.25.4-us122l/kernel 仍然存在。如果这个目录属于以前的 linux-image-2.6.25.4-us122l 包,并且如果你取消了一些模块,或者安装了独立的模块包,这可能会很糟糕。
我同意 Ubuntu。这可能很糟糕。如何重新编译内核?第二个问题是,写完系统调用后,我必须安装 debian 文件吗?
c++ - 系统调用不像在命令行中那样工作
好的,我有两个程序,一个使用另一个程序的可执行文件调用另一个程序。我在 Ubuntu 终端上运行它
这是适当的文件夹结构
.../src/pgm1/pgm1 .../src/pgm0/pgm0
pgm1 和 pgm0 是可执行文件。
这就是我调用其他可执行文件的方式
我看了看,正确生成了cmd:../pgm0/pgm0 yRes 400 xRes 400 inFile tmp_output/sph0.0000.sc > tmp_output/sph0.0000.ppm
因此,如果我从命令行运行此命令,它将运行良好。
如果我使用系统调用运行它,它会挂起并且无法解析输入文件 sph0.0000.sc 我尝试添加完整路径(因此路径变量向上)
但仍然没有运气。
任何想法为什么这会从命令行而不是从另一个可执行文件中的系统调用工作......
为了清楚起见,它可以从文件夹 pgm1 中的命令行运行。
谢谢
linux - 汇编和系统调用
我在理解汇编中更复杂的系统调用时遇到了一些麻烦。我写了一个 exec 系统调用,效果很好
虽然我有点保证并且无法找到有关如何将字符串放入寄存器的信息。所以作为一个例子,我想做一个 exec 系统调用,它作为它的第一个参数需要一个文件名来运行,我想运行“/bin/bash”,但是我如何在 rbx 中得到它。我怎么知道我必须使用rbx,在X86中我知道我会使用ebx,在amd64 ebx = rbx,ecx = rcs等中是否有相同的关系?
int execve(const char *filename, char *const argv[], char *const envp[]);
谢谢大家
php - 在php中运行并忘记系统调用
所以我试图从我的 php 代码中执行一些脚本。它位于 blah.php 页面中
在里面我使用系统调用
效果很好,但它会等到它完成,直到它打印出来。我知道我是从 php 调用 perl 脚本而不是拼写错误。
我怎样才能开始程序执行并让它在后台完成。blah.pl 脚本处理电子邮件通知。
任何人?
谢谢,我很感激
ubuntu - linux-kernel 如何读取 proc/pid 文件?
linux-kernel 如何以及在何处读取显示系统中所有进程的 proc/pid 文件。我找到了 linux-source-2.6.31/fs/proc/ 这里有文件,但是很难理解,因为它真的很复杂。有人可以知道它是如何工作的吗?