问题标签 [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.
camera - 我们可以将 USB 摄像头的捕获帧直接放入用户空间内存,而不是通过 v4l2_buffer 传递吗?
我在阅读时知道 USB 摄像头捕获的帧首先存储在 v4l2_buffer 中,然后传递给用户空间缓冲区(使用 VIDIOC_DQBUF ioctl 调用)。但我想知道我们可以直接将帧传递给用户定义的缓冲区而不是 v4l2_buffer?
还想知道我们能否修改与 USB 摄像头捕获相关的 ioctl 调用,如 VIDIOC_REQBUF、VIDIOC_QBUF 等?
也有人能告诉我 v4l2_buffer 位于哪里?它是在 kerenl 还是用户空间?如果它位于内核空间,我们可以将其更改为用户空间吗?
对此问题的任何帮助将不胜感激..
谢谢!
kernel - 如何从用户空间更新固件?
这是一直让我大吃一惊的事情之一。当我登录到 Windows 时,我怎么可能运行一个允许我升级我的 devive BIOS 或为我的硬盘安装固件等的应用程序。
我还没有找到任何令人满意的答案来说明这怎么可能。
这对我来说如此神奇的原因是:
固件驻留在操作系统无法直接访问的设备上(AFAIK 它必须通过驱动程序)其次,固件驻留在只读存储器部分,用户空间应用程序如何甚至可以访问类似的东西,而改变它。
kernel - Which are the ways to redirect the execution flow, from user-space to kernel in x86_64?
I know two ways to redirect the execution flow, from user-space to kernel in x86_64:
1. SYSCALL Service
2. Software interrupts
Is there any other way to go into kernel from user-space?
Any help would be appreciated.
c - 用户空间中的文件系统 (FUSE) 编译错误
我正在尝试使用gcc sample.c -o sample `pkg-config fuse --cflags --libs` 编译代码,正如我所展示的那样,我在代码中遇到了很多错误
我还检查了保险丝是否安装正确,因为头文件已包含在内,没有任何问题。但是为什么我不能编译这个简单的代码呢?
linux - 内核模块从 docker 启动用户空间应用程序
我有一个内核模块程序,它执行一个名为 binary 的用户空间应用程序,如下所示。
这种类型的设计对于我执行二进制文件来说是必须的,因为它依赖于一些 /dev/* 文件。
这在正常环境中工作得非常好,但是当我尝试从 docker 安装这个二进制文件时,二进制文件根本没有启动。
二进制及其依赖库不在主机的 rootfs 中。他们在码头工人的。
当我将这个二进制库和依赖库移到主机上时,一切都很好。
如何从 docker 执行此操作而不会失败。
linux - 嵌套 EPOLL FD
我在网上找到的关于嵌套 FD 行为的信息非常有限。
假设 EPOLL FD1 在 EPOLL FD2 和 FD3 之间共享。那么如果 epoll FD1 得到一个事件会发生什么
- 如果在没有 epoll_exclusive 标志的情况下添加它,是否会同时向 FD2 和 Fd3 引发事件。
- 收到事件后,是否需要在 FD1 上执行 epoll_wait 以清除事件。
以及嵌套epoll FD的用例是什么。
c - 将参数传递给unix中的自定义系统调用
我正在尝试创建一个自定义系统调用,该系统调用输入一个(长)数组并输出有关该数组的一些基本信息以进行类分配。
我在将适当的参数传递给系统调用时遇到了一些麻烦。
下面是我用来调试这个系统调用的测试程序:
这是array_stats
系统调用,我插入了一堆printk()
用于调试目的的语句:
测试程序的运行结果如下:
如您所见,参数没有正确传递。我究竟做错了什么?
提前致谢!
memory-management - 如果所有内存都直接映射到内核虚拟地址,用户虚拟地址如何访问物理内存
如果我们有一个 32 位 CPU,它可以有 4GB 的虚拟地址空间。前 3GB(0-3GB)用于用户空间虚拟地址,其余 1GB(3GB-4GB)用于内核虚拟地址。但是正如我在很多文章中看到的,甚至在 LDD 书中,都说内核虚拟地址直接映射到具有固定偏移量的物理内存。即0xc0000001内核虚拟地址映射到0x1 RAM。实际地址。而且,为内核映射的物理内存不能被换出。
我的问题是,如果所有 RAM 都交给内核,用户空间如何访问物理 RAM。
提前感谢您的回答!
linux - 内核是否仅在发生异常时执行
我正在学习嵌入式Linux。我似乎无法为下面的问题找到正确的答案。
我的理解是,当用户空间的应用程序在执行时,如果我们要进行 IO 等,会进行系统调用,这会导致 SW 中断,一般会导致 MCU 从非特权模式切换到特权模式和内核将代表应用程序执行 IO。
发生硬件中断时的相似性,我猜这将导致模式再次切换并在内核中执行中断处理程序。
我不清楚的是,这些是内核代码控制 CPU 的唯一时间吗?
例如,只有一个内核,如果用户应用程序代码正在运行,内核不应该不时控制 CPU 来检查事情,不管是否发生了中断。也许有一个周期性的定时器中断允许这样做?
此外,如果我们有多个内核,内核是否可以一直在一个内核上运行而用户应用程序在另一个内核上运行?