tstart 커널 서비스

용도

타이머 요청을 제출합니다.

구문

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/timer.h>
void tstart ( t)
struct trb *t;

매개변수

항목 설명
T 타이머 요청 구조를 가리킵니다.

설명

그만큼 시작하다 커널 서비스는 다음에 의해 지정된 타이머 요청 블록과 함께 타이머 요청을 제출합니다. 매개변수를 입력으로 사용합니다. 발신자 시작하다 커널 서비스는 먼저 탈록 할당하는 커널 서비스 타이머 요청 구조 . 그런 다음 호출자는 호출하기 전에 구조체의 필드를 초기화해야 합니다. 시작하다 커널 서비스.

요청이 제출되면 커널은t->func타이머 기능은 지정된 시간만큼만 작동됩니다.t->timeout.it값이 경과되었습니다. 다음t->func타이머 함수는 인터럽트 수준에서 호출됩니다. 따라서 이 루틴의 코드는 인터럽트 처리기 규칙을 따라야 합니다.

그만큼 시작하다 커널 서비스는t->flags제출된 타이머 요청이 절대 요청인지 증분 요청인지 결정하는 필드입니다. 절대 요청은 다음에 표시된 시간에 시간 초과를 요청하는 것입니다. it_value 구조. 증분 요청은 현재로 표시된 시간에 시간 초과를 더한 요청입니다. it_value 구조.

호출자는 절대 및 증분 타이머 모두에 대한 시간 정보를 위치에 배치해야 합니다. itimerstruc_tt.it 가치 하부 구조. 그만큼 T_ABSOLUTE 절대 요청 플래그는/usr/include/sys/timer.h 파일에 OR로 연결되어야 합니다.t->flag절대 타이머 요청이 필요한 경우 필드입니다.

T_MOVE_OK 플래그가 설정되면 소유 프로세서가 접힐 때 관련 타이머가 다른 프로세서로 이동됩니다.

언제 T_LATE_OK 플래그가 설정되면 소유 프로세서가 절전(접힌) 모드에 들어갈 때 관련 타이머가 절전 모드로 전환됩니다. 타이머 만료 처리기는 예약된 만료 시간이 지난 경우 소유 프로세서가 활성화(펼쳐짐)될 때 호출됩니다. 따라서 수면에 소요된 시간은 만료 시간과 관련하여 계산됩니다. 이 플래그가 설정되면 타이머가 언제 만료될지 보장할 수 없습니다.

메모: 그만큼 T_MOVE_OK 그리고 T_LATE_OK 플래그는 필요하지 않습니다. 이는 접힌 프로세서의 부하를 줄여 프로세서 접기의 효율성을 향상시키기 위한 것입니다.

시스템 시간 수정 사항은 증분 타이머 요청에 추가되지만 절대 타이머 요청에는 추가되지 않습니다. 88년 12월 25일 정오에 대한 절대 타이머 요청을 제출한 사용자를 생각해 보세요. 권한 있는 사용자가 시스템 시간에 4시간을 추가하여 수정하는 경우 사용자가 제출한 타이머 요청은 88년 12월 25일 정오에 계속 발생합니다.

대조적으로, 현재 정오 12시이고 사용자가 지금부터 6시간 동안 증분 타이머 요청을 제출한다고 가정합니다(6시에 발생).p.m .). 타이머가 만료되기 전에 권한이 있는 사용자가 시스템 시간에 4시간을 추가하여 수정하면 사용자의 타이머 요청은 2200(10)에 만료됩니다.p.m .).

실행 환경

그만큼 시작하다 커널 서비스는 다음 중 하나에서 호출될 수 있습니다. 프로세스 또는 방해하다 환경.

리턴 값

그만큼 시작하다 서비스에는 반환 값이 없습니다.