我正在写一个Linux守护进程的C从SPI接口(ioctl)从ADC获取值。 SPI(spidev - userland)似乎有点不稳定,并随机冻结守护进程。作为线程调用的C函数 - Linux的用户空间程序
我需要更好地控制对获取值的函数的调用,并且我正在考虑将它作为一个线程,我可以等待完成并获取返回值,如果超时假设如果没有这个新线程取下守护进程本身,它会冻结并杀死它。然后,我可以在重新启动之前应用重置ADC等措施。这可能吗?
伪我想要实现例如:
(功能INT get_adc_value(INT adc_channel,浮子*值))
- PID =螺纹(get_adc_value(1,&值); //使线程调用函数
- wait_until_finish(pid,timeout); //等待函数结束/超时
- if(timeout)kill pid,重新开始//如果线程不返回在给定的时间,杀死它(是冻)
- 否则,如果返回值神志清醒,继续//如果成功,处理返回变量值,然后继续
感谢对此事发表任何输入,例子不胜感激!
感谢您的快速回答。我想也许pthread_cond_timedwait条件可以做到这一点 - 需要编写一些测试代码,看看它是如何工作的 – Einar 2010-05-13 23:24:03