我在Linux内核模块中调用系统调用时遇到了一些困难。系统调用已经过测试,并在标准的c++用户空间程序中正常工作,但我似乎无法让内核模块编译和运行它们。
在我的用户程序中,我包含了以下代码,系统调用工作:
#include <linux/unistd.h>
#define __NR_sys_mycall 343
extern long int _syscall(long int_sysno,...)__THROW;
//and then a simple call is done as such
long value = syscall(__NR_sys_mycall);
我正在尝试定义一些在其中调用printf的子例程。下面是一个非常简单的例子:
extern printf
LINUX equ 80H
EXIT equ 60
section .data
intfmt: db "%ld", 10, 0
segment .text
global main
main:
call os_return ; return to operating system
os_return:
mov rax, EXIT ; Linux system call
我在我的Linux系统中使用了socket()的手册页面,我想知道它所记录的函数属于什么功能。
例如,函数int socket(int domain, int type, int protocol)。胶质细胞的功能部分吗?它是Linux内核的直接部分吗?手册的标题是Linux程序员手册。
我很想得到一个解释和澄清。