Programming/Linux_Platform
TEMP_FAILURE_RETRY
decdream
2015. 12. 1. 18:01
이따금 Android code 에서 TEMP_FAILURE_RETRY mecro 를 사용한 function 들을 볼 수 있다.
하지만, 이 매크로는 매우 위험할 수 있다.
return true 가 발생하지 않는다면, 호출한 thread 는 영원히 loop 속으로 빠질 수 있다.
따라서 이 mecro 가 포함된 function 을 호출할때는 주의하는것이 좋다.
28#ifndef TEMP_FAILURE_RETRY 29/* Used to retry syscalls that can return EINTR. */ 30#define TEMP_FAILURE_RETRY(exp) ({ \ 31 typeof (exp) _rc; \ 32 do { \ 33 _rc = (exp); \ 34 } while (_rc == -1 && errno == EINTR); \ 35 _rc; }) 36#endif 37 38#ifdef __cplusplus 39extern "C" {
40#endif