试图添加FIFO队列系统调用

时间:2016-03-27 14:10:47

标签: linux linux-kernel system-calls

我目前正在学校上课。

现在,我一直在尝试添加一些新的系统调用,在内核空间中建立一个队列。

我正在尝试做三件事:

1)建立队列(通过动态分配或只是声明一个数组)

2)入队

3)出队

问题在于1)。

以下是系统调用源文件的示例代码:

asmlinkage long sys_allocqueue(unsigned int size){
   int *queue = kmalloc(sizeof(int) * size, GFP_KERNEL);
   return 0;
}

这只是声明数组:

asmlinkage long sys_allocqueue(unsigned int size){
   int queue[size];
   return 0;
}

无论哪种方式,我得到-1的返回值,这对于测试应用程序中的系统调用是错误的。

我不知道为什么这不起作用。

P.S。

我也发现了使用kfifo.h来创建队列,但这也没有用。

1 个答案:

答案 0 :(得分:0)

这是内核编译问题

编译后,重新启动时,我的Ubuntu停止了,所以我强制退出所有内容并将其重新打开。

问题随后开始。

我重新编译它并重新启动它不是通过sudo reboot,而是通过关闭它并重新打开它。

现在又恢复了工作。