问题标签 [userspace]

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.

0 投票
2 回答
858 浏览

c - Linux内核系统调用返回未给定的指针

我正在尝试实现一个新的系统调用作为实验,但我总是遇到段错误。我认为问题在于我尝试返回一个指向不在用户空间中的 char 数组的指针。我尝试通过使用 GFP_USER 作为 kmalloc 的标志来分配用户空间中的内存,但问题仍然存在。

这就是我调用系统调用的方式,目前我无法更改它(通常会为返回分配内存并将其作为参数提供):

syscall 函数的定义如下所示:

我已经对其进行了很多测试,并且我确定系统调用被正确调用,但它在copy_to_user. copy_to_user总是返回一个正值(等于大小,所以根本不复制)。
顺便说一句,ret 的地址就像 f74ce400 和 str_in 080484ac。

有人知道出了什么问题吗?

0 投票
1 回答
2191 浏览

linux - 如何在 Linux 中中断用户空间应用程序

我正在开发一个 Linux DMA 驱动程序。用户空间应用程序希望驱动程序执行异步操作(数据传输)并仅在操作完成时得到通知。用户空间应用程序如何获得异步通知?

我知道在内核空间中,可以安装一个中断处理程序来处理完成中断。我的问题是针对用户空间的,因为我的数据必须在用户空间中处理。我能想到的是在用户空间创建一个线程,等待驱动完成任务。有没有更好的方法来处理这个?还是我想错了方向?

更一般地说,如何在用户空间处理 Linux 的中断?

0 投票
1 回答
870 浏览

c - 如果内核支持 IPv6,如何从用户空间进行测试?

我正在寻找一种简单的方法来测试内核是否在 C/C++ 中支持 Linux 上的 IPv6。检查 socket() 调用是否失败并且 errno 是否设置为 EINVAL 是否足够?

0 投票
1 回答
557 浏览

android - U-Boot:循环变量到用户空间

在执行 MLO 期间,我创建了一个变量,我希望 Android 中的用户空间应用程序可以访问其值。如何做到这一点?

一种方法是将变量的内容写入外部存储器并让它由用户空间进程读取。但是,我需要确保在引导期间没有其他进程覆盖该地址。

你知道其他方法吗,ATAGs?如果可以使用 ATAG,将如何做到这一点?有必要开发内核模块吗?

干杯

0 投票
2 回答
4499 浏览

c - Linux NFQUEUE 处理问题

我正在尝试编写一个绑定到 NFQUEUE 套接字的用户空间应用程序,内核模块会将传入的数据包转发到该套接字(通过标记它们 NF_QUEUE)。这是通过使用 iptables 规则来实现的,例如:

iptables ACCEPT 链如下所示:

这是轮询 NFQUEUE 套接字的代码(QNUM 为 0):

问题是 /proc/net/netfilter/nf_queue 列出了正在使用的队列号 2 而不是号 0,因此我的用户空间程序没有检测到相关套接字中的任何传入数据包。这是为什么?

0 投票
0 回答
287 浏览

c - 这种 FOPS 读取方法如何工作?

我(和同学)无法弄清楚以下问题:

“考虑以下 FOPS read() 方法:

使用参数 count=2 调用该方法。'len' 的大小应该是多少?”

我们不确定答案是否为 2,因为 count 为 2 - 或者答案是否为 5,因为 'ABCD + /0' = 5。

我们在这里遗漏了什么吗?

0 投票
2 回答
700 浏览

c - Linux 内核如何“监听”C 库?

我正在尝试构建一个关于 Linux 内核和用户空间中的工作方式的“大图”,我很困惑。我知道用户空间利用系统调用与内核“交谈”,但我不知道如何。我尝试阅读 C 库和内核源代码,但它们很复杂且不易理解。我还阅读了几本关于操作系统概念性事实的书籍,例如管理进程、内存、设备,但它们并没有使“转换”(用户空间->内核)清晰。那么,用户空间和内核空间之间的转换究竟发生在哪里呢?C 库如何运行机器中运行的 Linux 内核中的代码?

打个比方:想象有一座房子。房子上锁了。打开房子的钥匙就在房子里面。屋子里只有一个人,内核。用户空间是试图进入房屋的人。我的问题是:内核如何知道房子外面有人想要钥匙,以及哪种机制允许用那把钥匙打开房子?

0 投票
1 回答
1207 浏览

linux - 如何从用户空间访问 linux 内核中已注册的 I2C 设备

我希望能够修改 I2C 从设备中的寄存器。该设备在内核中有一个驱动程序,驱动程序用它的地址注册一个I2C客户端。

该驱动程序非常基本,并且可以输出所有设备功能。我想从用户空间访问寄存器,但是当我尝试使用 I2C-dev 访问它时,我收到错误 - 设备或资源忙。

我不想向驱动程序添加功能,我更喜欢编写用户空间应用程序来修改设备寄存器。

在这种情况下如何使用 I2C-dev 修改寄存器?

0 投票
2 回答
855 浏览

linux-kernel - 我可以将整数作为第二个参数传递给“access_ok()”吗?

LDD3的例子中,access_ok()放置在ioctl内核模块方法的开头,用于检查从用户空间传递的指针是否有效。ioctl()当用户空间应用程序调用系统调用并传递一个变量的地址时,它是正确的。然而,在某些情况下,ioctl()系统调用是用一个值而不是指针作为第三个参数调用的,最后是access_ok()内核模块中的第二个参数。

我试图传递一个整数作为access_ok()'s 第二个参数,它工作正常。没有报告错误。但我不太确定这种用法是否正确?

例如,如果我ioctl()在用户空间中调用它的第三个参数是“3”。然后,在 ,ioctl()方法中struct file_operationsaccess_ok()将接收3它的第二个参数。因为access_ok()需要一个指针,所以它转换3为一个用户空间指针。反观是错的...

0 投票
0 回答
36 浏览

fiber - 关于纤程,什么是用户空间?

人们在解释线程和纤程的区别时,通常会提到纤程位于“用户空间”这一事实。“用户空间”是什么意思?