함수 ERPTR,PTR_ERR 그리고 ISERR 이해
#define MAX_ERRNO 4095
#ifndef __ASSEMBLY__
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
static inline void *ERR_PTR(long error) { return (void *) error; }
static inline long PTR_ERR(const void *ptr) { return (long) ptr; }
static inline long IS_ERR(const void *ptr) { return IS_ERR_VALUE((unsigned long)ptr); }
다행히 커널이 반환되는 포인터는 일반적으로 페이지의 경계(4K 경계), 즉
ptr & 0xfff == 0
이렇게 하면 ptr의 값은 (0xffff000, 0xffffffff) 사이에 떨어질 수 없고 일반 핵의 오류 코드도 작은 음수로 -1000에서 0 사이에 unsigned long으로 바뀌어 (0xffffffff000, 0xffffffffffff) 사이에 있다.그래서
(unsigned long)ptr > (unsigned long)-1000L
내부 핵 함수의 반환 값이 유효한 지침인지 오류 코드인지 판단합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Make 및 MakeFiles. 저게 뭐야?많은 사람들이 인기 있는 저장소에서 이 파일을 보았지만 기억하지 못할 수도 있습니다. 예를 들어 C 프로그램은 개체 파일(.o 확장자)이라는 중간 파일로 컴파일할 수 있으며, 그런 다음 이를 결합하여 실행 파일을 생...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.