- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
场景:客户端正在发送数据,服务器正在通过以太网层(udp)接收来自客户端的数据。当服务器在ip层(内核)接收到来自客户端的数据时。它会中断内核,并且内核会执行客户端的数据,所以我想创建一个中断服务函数来捕获来自网络服务卡的中断。
我使用 Interruptattach api 来处理来自网络接口(interface)卡的中断,并使用 sigevent 结构来调用特定函数。 http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/lib_ref/i/interruptattach.html#HandlerFunction
这是在 qnx 中处理中断的正确方法吗??
volatile int id1, id2, id3;
const struct sigevent *handler1(void *area, int id1)
{
volatile double KernelStartExecutionTime;
KernelStartExecutionTime = GetTimeStamp(); // calculating the time when the kernel starts executing
TASK1(Task2ms_Raster);
return (NULL);
}
const struct sigevent *handler2(void *area, int id2)
{
volatile double KernelStartExecutionTime;
KernelStartExecutionTime = GetTimeStamp(); // calculating the time when the kernel starts executing
TASK2(Task10ms_Raster);
return (NULL);
}
const struct sigevent *handler3(void *area, int id3)
{
volatile double KernelStartExecutionTime;
KernelStartExecutionTime = GetTimeStamp(); // calculating the time when the kernel starts executing
TASK3(Task100ms_Raster);
return (NULL);
}
/*kernel calls attach the interrupt function handler to the hardware interrupt specified by intr(i.e irq) */
// InterruptAttach() : Attach an interrupt handler to an interrupt source
// interrupt source is handler1 for this example
void ISR(void)
{
volatile int irq = 0; //0 : A clock that runs at the resolution set by ClockPeriod()
ThreadCtl (_NTO_TCTL_IO, NULL);
id1 = InterruptAttach(irq, &handler1, NULL, 0, 0);
id2 = InterruptAttach(irq, &handler2, NULL, 0, 0);
id3 = InterruptAttach(irq, &handler3, NULL, 0, 0);
}
int main(int argc, char *argv[])
{
Xcp_Initialize();
CreateSocket();
ISR(); //function call for ISR
return 0;
}
另一个问题:如果我想调用 sigevent 结构中的另一个函数,那么我应该使用另一个 ISR(即如何处理中断中的多个函数)吗?
我按照上面修改了我的代码。如果我像上面那样做的话会有效率吗?一个带有 InterruptAttach API 的 ISR 函数可用于三个不同的处理程序。
最佳答案
这是一个不好的方法:中断(IRQ)处理程序是不可中断的。这意味着:1. 当您在其中执行大量工作时,您的计算机将锁定;2. 您无法调用每个方法。
正确的做法是接收IRQ,调用处理程序。处理程序应该创建一个内存结构,用需要完成的详细信息填充它,并将此“任务数据”添加到队列中。然后,后台线程可以等待队列中的元素并完成工作。
这样,IRQ 处理程序就会小而快。您的后台线程可以像您喜欢的那样复杂。如果线程有错误,最糟糕的情况就是线程中断(当队列已满时,使 IRQ 处理程序丢弃事件)。
请注意,队列的实现方式必须确保向其中添加元素永远不会阻塞。查看文档,应该已经有允许多个线程交换数据的东西了;同样的方法也可用于 IRQ 处理程序。
关于c - qnx中的中断服务程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22660251/
我正在QNX操作系统中运行某些守护程序用户进程以及某些Xlet GUI应用程序。我使用TeraTerm连接到QNX控制台。我需要获取正在运行的用户应用程序/进程的列表才能查看哪些用户应用程序已在运行在
我需要测试以下情况:在 QNX 系统上运行的 C 程序可以打开文件但无法读取它。我的任务是确保在这种情况下程序提供正确的错误消息。操作文件权限不起作用。 有人知道如何模拟这种情况吗?预先非常感谢您 最
我正在使用 QNX neutrino 实时操作系统,我是 QNX 的新手。我已经设置了我的第一个项目,在两个线程之间使用了一些 IPC 消息传递。 我想要做的是将一个线程作为麦克风“驱动程序”,对来自
我的多线程应用程序随机崩溃并且没有生成核心转储,这让我的分析变得非常非常困难。我将 ulimit 设置为 unlimited 并且正在运行 dumper。我看到崩溃时生成了一个信号 11,理想情况下它
我正在尝试在 QNX 上编译一个使用 libxml 的项目。我已在系统上安装了 libxml,并打开了对 xmlschema 的支持。但我仍然收到以下错误消息“xmlSchemaParserCtxtP
是否有一个标志传递给链接器,它将不在library.a 输出中包含每个文件的时间戳? 我们正在使用 qcc -A 参数创建一个库,当它执行此操作时,它会将所有已编译的文件正确地收集到库中,但它总是会添
我有 3 个线程:A、B 和 C,我想在 QNX 实时操作系统上用 C++ 安排序列 A、B、B、C、C、C、B、B、A。我的方法是使用信号量并保存最后执行的线程(因为 B->C 和 B->A): #
在 Linux 中,如果我们查看/proc/self/maps: 00400000-004ef000 r-xp 00000000 08:01 12845058
我编写了一个在 Linux 下编译和运行的程序。它工作正常。然后我被迫将它移植到 QNX。 我做了,当我试图在那里编译它时(qnx with momentics)我得到了一个神秘的错误: timer_
我想在互联网上寻找有关如何为 QNX 开发良好的 UI 应用程序的正确文章。我能够找到类似的东西 - 我们可以使用 jamaicaVM 将我们在 java 上开发的代码移植到 c 。 以下是我的问题:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
即感兴趣的分区已经挂载为只读。需要将分区挂载为启用 rw 的分区,以便单独执行特定行的脚本。之后,分区应该进入其之前的只读状态。 最佳答案 问题是针对 QNX 操作系统的。并且可以使用以下命令将分区重
我对要在 QNX 上运行的这段代码有疑问: class ConcreteThread : public Thread { public: ConcreteThread(int test)
我在机器上安装了 QNX。问题是,嵌入式系统还必须能够访问硬件、端口管理等。这在 QNX 中是如何实现的?往什么方向学习?到目前为止,我发现这是文件、目录、用户、组等的组织,或者我不明白系统的运行原理
我试图通过/proc/{pid}/as 为 qnx 6.6 创建我自己的进程管理器。 但我只需要更改一个操作 (io_open),所有其他操作应该继续使用旧文件 (/proc/{pid}/as)。 我
我要重新提出一个属于https://stackoverflow.com/questions/12418452/source-files-in-project-subfolder-not-compile
我一直在阅读有关 Apache Nifi 的可能性的信息。在这篇文章中http://www.zdnet.com/article/hortonworks-cto-on-apache-nifi-what-
我正在尝试为两个显示器创建 Qt 应用程序渲染。 QNX 已经配置,用于 2 个显示器。我们创建了两个窗口,但我们如何告诉 Qt 将窗口渲染到第二个显示器? 这是我的代码片段 QGuiApplicat
如果有人知道如何在 QNX 中重置进程 ID,请告诉我。我正在网上搜索,但似乎什么也没找到。我实际上需要编写一个脚本来执行以下操作: 查找当前进程 ID 如果 PID 大于某个特定值,则重置 PID
让我们在 Eclipse 中举一个例子:我有两个不同的源文件用于一个具有主要功能的 Startup,但是根据我使用的构建配置,使用其中一个,或者另一个。 我这样做是通过在一个构建配置中使用“-d”选项
我是一名优秀的程序员,十分优秀!