【发布时间】:2013-11-08 14:23:31
【问题描述】:
我正在学习如何创建自定义系统调用并实现将 ptr 字符指针作为参数的代码 (save.c),然后将 ptr 指向的字符串复制到 sys_mybuf。实现将ptr char 指针作为参数的代码(load.c),然后将sys_mybuf 中的字符串复制到ptr 指向的缓冲区中。所以,我期待以下代码。但这似乎不起作用。我希望所有内核系统调用代码都使用 char 数组。我该怎么办?
保存.c
1 #include <linux/kernel.h>
2 #define STRING__SIZE 501
3 char sys_mybuf[STRING__SIZE]; // a string of at most size 500.
4 asmlinkage int sys_save(char* ptr)
5 {
6 int index = 0;
17
18 ptr[index] = '\0';
19 return index; // the number of bytes actually read.
20 }
加载.c
1 #include <linux/kernel.h>
2 // extern
3 asmlinkage int sys_load(char* ptr)
17 ptr[index] = '\0';
18 return index;
19 }
~
【问题讨论】:
-
怎么不起作用?你真的没有对变量进行外部声明吗?
load.c? -
gcc告诉我sys_mybuf在 load.c 中未声明 -
this 适合我吗?
标签: c kernel system-calls