我正在寫一個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