텍스트의 2 판에서이 예제는 랩 어라운드가 올바르게 처리되지 않았다는 점에서 올바르지 않았습니다. 그 당시 커널의 전형이기도 했습니다. 장치 드라이버 및 기타 커널 구성 요소에 이러한 종류의 잔여 오류가 있을 것으로 예상할 수 있습니다. 이러한 오류를 모방하지 마십시오. 시계 와 타이머 랩은 까다로운 문제입니다. 예를 들어 rdtscl을 사용하는 위의 코드는 엄격하게 올바르지 않습니다. 랩어라운드 전에 ini를 가져오고 끝은 이후에 가져온 경우 출력은 가비지됩니다. 이 파일은 모듈이 로드되는 한 텍스트 줄을 계속 반환합니다. 각 읽기 시스템 호출은 더 나은 가독성을 위해 두 줄로 구성된 한 세트의 데이터를 수집하고 반환합니다. 타이머 틱 미만으로 여러 데이터 집합을 읽을 때마다 하드웨어를 쿼리하는 do_gettimeofday와 타이머가 틱할 때만 업데이트되는 다른 값 간의 차이점을 확인할 수 있습니다. 일반적으로 한 명령에서 원자성으로 값을 가져올 수 없기 때문에 xtime에 직접 액세스하는 것은 신뢰할 수 없습니다. 즉, 값이 증가하는 것처럼 가져오기가 발생하면 저차 부품이 방금 감싸고 고차 부품이 아직 “캐리”에 대해 증가하지 않은 경우 가비지가 발생할 수 있습니다.

현재_커널_시간 및/또는 do_gettimeofday의 구현을 살펴보고 이것이 얼마나 미묘한지 살펴볼 가치가 있습니다. 이전 리눅스 커널제대로 하지 않았다. 아직 업데이트되지 않은 Linux 시스템에는 여전히 잘못된 사용법이 있습니다. 예를 들어 net/ipv4/route.c를 참조하거나 온라인 검색 엔진을 사용하여 xtime에 대한 다른 참조를 검색합니다. cat을 사용하여 타이머 틱 미만으로 파일을 여러 번 읽는 경우 xtime과 do_gettimeofday의 차이를 볼 수 있으며 xtime이 덜 자주 업데이트된다는 사실을 반영합니다. 판독값 시간의 사람이 읽을 수 있는 표현을 다룰 필요는 없지만 때로는 커널 공간에서도 절대 타임스탬프를 처리해야 할 때가 있습니다. 이를 위해 는 do_gettimeofday 함수를 내보전합니다. 호출할 때 익숙한 초 및 마이크로초 값과 함께 gettimeofday 시스템 호출에 사용된 것과 동일한 구조형 시간 벌 포인터를 채웁니다. do_gettimeofday의 프로토타입은 다음과 같습니다: 동일한 파일에서 스케줄()을 호출하는 다음 예제도 참조하십시오.

선점 허용 하려면 포함/asm-i386/msr.h에서 rdtsc의 정의를 참조하십시오. 교과서의 MIPS 예제와 마찬가지로 gcc 인라인 어셈블리 코드를 사용합니다. 운전자가 실제로 현재 시간을 필요로하는 경우 do_gettimeofday 함수가 구조됩니다. 이 함수는 요일또는 이와 같은 것을 알려주지 않습니다. 대신, 일반적인 초 및 마이크로 초 값으로 gettimeofday 시스템 호출에 사용되는 것과 동일한 구조형 시간 벌 포인터를 채웁니다.