32비트 Linux 플랫폼에서 64비트 시대를 지원하는 방법

32비트 Linux 플랫폼에서 64비트 시대를 지원하는 방법

커널 버전 4.1을 기반으로 하는 32비트 ARM 임베디드 Linux 시스템에서 64비트 시대를 지원해야 합니다.

clock_gettime() 및 clock_settime()을 사용하여 시간을 가져오거나 설정하지만 현재는 32비트 초 값으로 제한되어 있어 이 시스템의 문제인 2038년 문제가 발생합니다.

약간의 조사 끝에 해결책은 커널이 내부적으로 struct timespec64를 사용하도록 하는 것 같습니다. 그런 다음 사용자 공간은 struct timespec을 계속 사용하지만 해당 tv_sec 멤버는 64비트입니다.

제 질문은 커널에서 64비트 시간 사양을 사용하도록 이 변경 사항을 어떻게 활성화합니까?입니다.

Jonathan Corbett의 기사를 바탕으로 함2038년 시스템 호출 전환, 이를 달성하기 위한 첫 번째 단계는 CONFIG_COMPAT_TIME 기호를 설정하는 것입니다. 그러나 커널 소스 코드에서 해당 기호를 찾았지만 어디에도 나타나지 않습니다. 현 시점에서는 64비트 timespec 지원이 아직 부분적으로만 구현되었는지, 아니면 이 기사가 작성된 이후 구현 방향이 바뀌었는지 궁금합니다.

관련 정보