从 C/C++ 设置进程优先级和 irq 进程的亲和力

Set the process priority and the affinity of an irq process from C/C++

我想通过用 C/C++ 编写的程序在 linux 中设置 irq 进程(spi、gpiod)的优先级和亲和力。要设置我自己的进程的优先级,我使用 pthread_setschedparam 来设置我自己的进程的亲和力,我使用 pthread_setaffinity_np。我使用 pthread_self() 来实现这个功能。然而,特别是 gpio irqs 是棘手的,因为它们只在之后创建 gpiod_line_request_rising_edge_events[1] 被调用。到目前为止,我只是使用类似于 chrt -f -p 90 $(pgrep myGpio) 的 shell 命令来为我的系统赋予 irqs 更高的优先级,我可以将它放在 system("..") 函数中,但应该有一个更好的解决方案,我就是不知道。

提前致谢

[1]https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/tree/include/gpiod.h#n499

我用libprocps解决了。可以通过gpio或spi设备的名称获取irq的pid,然后设置irq的cpu affinity/priority。