사용자 정의 Linux 커널에 새 플래그 추가

사용자 정의 Linux 커널에 새 플래그 추가

mmap최근에 나는 교육 목적 으로 사용될 맞춤형 Linux 커널에 새로운 플래그를 추가하려고 노력해 왔습니다 . 이 추가 기능을 사용하여 커널을 성공적으로 컴파일하고 설치했지만, make이를 사용하여 프로그램을 테스트하려고 하면 플래그가 보이지 않는 것 같습니다.

#include <iostream>
#include <sys/mman.h>

#define ARR_SIZE 1000000000
 
int main()
{
    long* arr = (long*)mmap(
        NULL,
        ARR_SIZE * sizeof(long),
        PROT_READ | PROT_WRITE,
        MAP_PRIVATE | MAP_ANONYMOUS | MAP_COLOR2, /*ERROR: 'MAP_COLOR2' was not declared in this scope*/
        -1,
        0
     );
 
     if (arr == MAP_FAILED) {
         std::cout << "Failed to mmap..." << std::endl;
     } else {
         for (size_t i = 0; i < ARR_SIZE; ++i) {
             arr[i] = 1;
         }
     }
 
     return 0;
}

그때 일부 헤더 파일에 usr/include/linux내가 변경한 내용이 없다는 것을 알았습니다. 그래서 나는 다음과 같이 했습니다.

  1. make headers_install내 사용자 정의 커널의 소스 디렉터리 상단에서 실행(변경 사항 없음)
  2. 팔로우한 사람들지시하다헤더 파일을 성공적으로 업데이트했지만 usr/include/linux여전히 동일한 오류가 발생했습니다.

sys/mman.h그런 다음 아래에 있는 것을 발견했으며 usr/include/x86_64-linux-gnu아래 파일 usr/include/x86_64-linux-gnu/bits/(내 플래그가 포함되지 않음)에서 매크로/플래그 정의를 가져오는 것 같습니다. 이러한 파일에 플래그를 수동으로 추가하는 것 외에 커널 변경 사항을 여기에도 표시할 수 있는 올바른 방법은 무엇입니까? usr/include/x86_64-linux-gnu다음 파일 사이의 관계는 무엇입니까 usr/include/linux?

모든 도움에 크게 감사드립니다!

답변1

괜찮습니다. 헤더가 mmapLinux 커널 시스템 호출이 아닌 Glibc 래퍼용이므로 플래그가 표시되지 않습니다. 더 많이 배울수록!

관련 정보