Linux Kernel programming 을 할 때는 일반적인 printf 함수를 사용 할 수 없다.
Kernel 에서 Debugging 등을 위해 print를 하고자 하는 경우
printk 함수를 사용할 수 있다.
헤더는 linux/kernel.h
사용법은 printf 함수와 유사하다.
printk("hello world\n");
printk("a=%d\n, a);
사용법은 비슷하지만, kernel에서 print 하는 것이기 때문에 print 된 것은 userspace 에서 보이지 않는다.
따라서, 프로그램 실행 후에 dmesg 를 통해 kernel message 를 확인해야 한다.
$ dmesg
printk 사용 시 floating point number 를 print 하는 데 문제가 생길 수 있다.
undefined reference to __aeabi_f2d 라고 나오는 것은 그 때문이라고 할 수 있는데,
Floting point 자체를 지원하지 않기 때문이다.
Kernel 버전 혹은 CPU 에 따라 kernel 내부에서 floating point 를 지원하는 경우도 있고, 지원하지 않는 경우도 있다.
'Programming > Linux Kernel' 카테고리의 다른 글
cross kernel debugging (0) | 2020.06.19 |
---|---|
Linux kernel module compile from linux source (0) | 2019.01.17 |
Kernel module programming (0) | 2018.05.23 |
Kernel Version Check (0) | 2018.05.23 |