kernel2 sparse : kernel static analysis tool 커널 코드를 보다 보니 이상한 문법의 코드가 있어서 확인해보았다. 203 static int expand_fdtable(struct files_struct *files, int nr) 204 __releases(files->file_lock) 205 __acquires(files->file_lock) 206 { expand_fdtable() 함수를 보면, 파라미터 정의 다음 줄에 __releases / __acquires 라는 함수 비슷한 것이 정의되어있다. 이를 찾아보면 include/linux/compiler.h 파일에 다음과 같이 정의되어 있다. 6 #ifdef __CHECKER__ 7 # define __user __attribute__((noderef, address_space(1))) 8 # .. 2013. 2. 12. 커널 로컬 버전 세팅 리눅스 커널 버전을 나타내는 파일은 다음과 같이 2가지가 존재한다. 파일은 모두 컴파일시에 생성된다.include/config/kernel.releaseinclude/generated/utsrelease.h위 파일중 utsrelease.h 내에 정의된 UTS_RELEASE 의 값이 실제 uname 에서 보여지는 커널의 버전이 된다.systemTap 을 사용해서 특정 모듈을 올리는데, kernel.release 와 UTS_RELEASE 가 다르다고 해서 모듈로딩이 실패하는 상황이 발생하였다.코드를 찾아보니 Makefile 에서 KERNEL_RELEASE 대신 KERNEL_VERSION 을 UTS_RELEASE 에 넣도록 수정을 해놓은 상황.. 이렇게 되어서 kernel.release 와 utsrelease.. 2012. 11. 9. 이전 1 다음