커널 소스코드 에서 자주 볼 수 있는 __init 와 __initdata 는 초기화시에만 사용하고 사용되지 않는 함수와 데이터를 지정할때 사용되어진다. 커널 소스코드의 include/linux/init.h 에 아래와 같이 정의되어 있다. include/linux/init.h #define __init __section(.init.text) __cold notrace#define __initdata __section(.init.data) include/linux/compiler.h#define __section(S) __attribute__ ((__section__(#S))) 컴파일러는 __init 로 지정된 함수와 __Initdata 로 지정된 데이터는 커널 초기화과정 이후에 해제되는 영역에 배치함으로서..
리눅스 커널 소스를 보다보면 심심치 않게 __read_mostly 매크로를 마주하게된다. unsigned long __per_cpu_offset[NR_CPUS] __read_mostly; __read_mostly 매크로를 통해서 프로그래머는 컴파일러에게 " 이 데이터는 자주 수정되지 않으며 대부분 읽기 연산만 이루어진다" 라는 것을 알려준다. __read_mostly 는 다음과 같이 정의 되어있다. #define __read_mostly __attribute__((__section__(".data.read_mostly"))) 보통 SMP 를 고려한 코드 내에서 자주 볼수가 있는데, 컴파일러는 __read_mostly 로 선언 되어있는 데이터들을 바이너리 파일의 일정 부분에 모여있게 하여, 코어(core)..
리눅스 커널(linux-3.9.3)에 시스템 콜 추가하기1. 우선 arch/x86/syscalls/syscall_32.tbl 에 시스템 콜 번호를 정의한다. 시스템 콜 테이블의 포멧은 아래와 같다. 351 i386 opsyscall sys_opsyscall 2. 시스템 콜 헤더파일을 수정한다. 위치는 include/linux/syscalls.h 에 아래와 같은시스템 콜 함수를 추가한다.asmlinkage long sys_opsyscall(const char* test); 3. linux-3.9.3/ 커널소스디렉토리 아래에 opsyscall/syscall.c 파일을 작성한다. opsyscall/Makefile 도 작성해준다. 아래와 같다. 4. 커널 Makefile(linux-3.9.3/Makefile)에..
Document/kbuild/makefile.txt 및 Document/kbuild/modules.txt 문서를 번역편집한 문서정리출처좌표 : http://deepbluedawn.wordpress.com/2009/07/31/169/ 이 문서는 리눅스 커널 2.6.x에 사용되는 kbuild System의 module build과정에 대해 설명하기 위한 문서입니다.Linux Kernel소스의 Documents/kbuild/makefiles.txt 및 Documents/kbuild/modules.txt문서를 번역및 편집한 것입니다. 따라서 상당부분이 난해하기도 하고 직역을 한 부분이 있으니 이해해 주셨으면 합니다. 번역이 매끄럽지 못한 부분은 반드시 원문을 읽어 영어 단어의 뜻을 파악하시기 바랍니다.1.Kbu..
/etc/default/grub 파일을 연다.(sudo vi /etc/default/grub) GRUB_CMDLINE_LINUX="" 을 GRUB_CMDLINE_LINUX="text"로 수정GRUB_CMDLINE_LINUX_DEFAULT ="quiet splash" 을 GRUB_CMDLINE_LINUX_DEFAULT=""로 수정 sudo update-grub 을 실행한후에 sudo reboot 을 이용하여 재부팅한다. 다시 원래 그래픽 모드로 바꾸려면 원래값으로 수정한후 다시 재부팅...
MinGW(Minimalist GNU for Window) MinGW는 마이크로소프트 윈도로 포팅한 GNU 소프트웨어 도구 모음이다. mingw32로도 알려져 있다. MinGW는 Cygwin 프로젝트의 한 갈래로 개발된 윈도우용 GNU 소프트웨어 개발도구로서 , 윈도우용 GNU 컴파일러를 제공한다. MinGW 프로젝트는 두 개의 기본 꾸러미를 관리하고 배포한다. 첫번째로는 포팅된 GCC 컴파일러들을 윈도 명령 줄에서 아니면 IDE에 통한된 채로 쓸 수 있다. 아니면 둘째로는 MSYS(minimal system의 약자)를 쓸 수 있는데 이것은 가벼운 유닉스 계통의 쉘환경을 제공한다. 보다 자세한 설명은 아래 참조를 확인 http://ko.wikipedia.org/wiki/MinGW MinGW 설치과정 1...