timer_settime 예제

timerid로 식별된 타이머를 팔 또는 무장 해제합니다. new_value 인수는 타이머에 대한 새 초기 값과 새 간격을 지정하는 itimerspec 구조에 대한 포인터입니다. itimerspec 구조는 다음과 같이 정의됩니다: timer_settime() 함수는 값 인수의 it_value 멤버에서 timerid에 의해 지정된 타이머의 만료 시간을 설정합니다. 값의 it_value 구조 멤버가 0이면 타이머가 해제됩니다. timer_settime() 함수는 지정된 타이머의 해상도의 두 개의 연속된 비음수 정수 배수 사이의 시간 값을 더 큰 해상도의 배수로 반올림합니다. timer_gettime() 함수는 지정된 타이머, timerid, 만료 및 타이머의 다시 로드 값이 값 인수에 의해 가리키는 공간에 다시 로드될 때까지의 시간을 저장합니다. 이 구조의 it_value 멤버에는 타이머가 만료되기 전의 시간 또는 타이머가 해제된 경우 0이 포함됩니다. 이 값은 타이머가 절대 시간으로 무장한 경우에도 타이머 만료될 때까지 간격으로 반환됩니다. it_interval 값 의 멤버에는 timer_settime()에 의해 마지막으로 설정된 다시 로드 값이 포함됩니다. timer_settime() 함수는 값 인수의 it_value 멤버에서 timerid에 의해 지정된 타이머의 다음 만료까지 시간을 설정하고 값의 it_value 멤버가 0이 아닌 경우 타이머를 완구합니다. timer_settime()이 호출될 때 지정된 타이머가 이미 무장한 경우 이 호출은 지정된 값으로 다음 만료될 때까지 시간을 재설정합니다. 값의 it_value 멤버가 0이면 타이머가 해제됩니다. 만료 보류 중인 알림으로 타이머를 해제하거나 재설정하는 효과는 지정되지 않습니다.

new_value->it_value가 영하지 않은 값(즉, 두 하위 필드중 영하)을 지정한 다음 timer_settime() 무기(시작)를 타이머로 지정하여 지정된 시간에 처음에 만료하도록 설정합니다. 타이머가 이미 무장한 경우 이전 설정이 덮어씁니다. new_value->it_value가 0 값(즉, 두 하위 필드 모두 0)을 지정하면 타이머가 해제됩니다. 인수 ovalue가 NULL이 아닌 경우 함수 timer_settime()은 ovalue에서 참조하는 위치에 타이머가 만료되기 전의 이전 시간을 나타내는 값 또는 타이머가 해제된 경우 0을 저장합니다. 값을 다시 로드합니다. ovalue의 멤버는 타이머의 확인의 대상이 되며 해당 시점에서 timer_gettime() 호출에 의해 반환되는 값과 동일합니다. 플래그 TIMER_ABSTIME 인수 플래그에 설정 되지 않은 경우 timer_settime() 다음 만료까지 시간 값의 it_value 멤버에 의해 지정 된 간격으로 설정 된 것처럼 작동 합니다. 즉, 타이머는 호출이 이루어질 때부터 it_value 나노초에서 만료됩니다. 플래그 TIMER_ABSTIME 인수 플래그에 설정 된 경우 timer_settime() 다음 만료까지 시간 값이 it_value 값 의 값이 지정 한 절대 시간 및 관련 된 시계의 현재 값 사이의 차이와 같게 설정 된 것처럼 작동 합니다. 시간 리드와 함께. 즉, 시계가 값의 it_value 멤버에 의해 지정된 값에 도달하면 타이머가 만료됩니다. 지정된 시간이 이미 경과한 경우 함수가 성공하고 만료 알림이 만들어집니다.

감시 타이머에 대한 알림 이벤트, 신호 및 신호 값을 설정하고, 타이머_create를 호출하여 만들고, 타이머_settime을 호출하여 무장합니다. 이 예제에서 watchdogTimerSGalRM 이벤트를 발생 시 입니다. 응용 프로그램이 이벤트를 처리하지 않으므로 OS가 응용 프로그램을 종료합니다. 고정 스택 주소를 사용하면 새 스레드를 만들때 타이머 만료가 신호를 보낼 때 문제가 발생합니다. 타이머가 다음 만료되기 전에 한 만료에 대해 생성된 스레드가 완료된 것으로 가정할 수 없으므로 두 스레드가 스택과 동일한 메모리를 동시에 사용하는 경우 발생할 수 있습니다.