ssize_t와 size_t 타입의 실체를 확인해보자.
아래 코드를 전처리 코드로 확인해볼까?
static ssize_t default_read_file(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
return 0;
}
size_t 타입의 정체
먼저 size_t의 정체를 확인해보자.
280 # 55 "/root/src/kernel_src/linux/include/linux/types.h"
281 typedef __kernel_size_t size_t;
size_t 는 __kernel_size_t로 캐스팅 된다.
201 # 68 "/root/src/kernel_src/linux/include/uapi/asm-generic/posix_types.h"
202 typedef unsigned int __kernel_size_t;
__kernel_size_t 타입은 'unsigned int'로 타입으로 캐스팅된다.
정리하자.
size_t -> unsigned int
ssize_t 타입의 정체
이번에는 ssize_t 타입을 확인하자.
280 # 55 "/root/src/rachman_kernel_src/linux/include/linux/types.h"
...
282
283
284
285
286 typedef __kernel_ssize_t ssize_t;
ssize_t은 __kernel_ssize_t 타입으로 캐스팅된다.
201 # 68 "/root/src/rachman_kernel_src/linux/include/uapi/asm-generic/posix_types.h"
202 typedef unsigned int __kernel_size_t;
203 typedef int __kernel_ssize_t;
__kernel_ssize_t은 int 타입으로 캐스팅된다.
정리하면;
ssize_t -> int
마무리
이제 default_read_file() 함수를 볼 때,
static ssize_t default_read_file(struct file *file, char *buf,
size_t count, loff_t *ppos)
{
return 0;
}
다음과 같이 해석해보자.
static int default_read_file(struct file *file, char *buf,
unsigned int count, loff_t *ppos)
{
return 0;
}
'Core BSP 분석 > 리눅스 커널 핵심 분석' 카테고리의 다른 글
[리눅스커널] 특정 CPU를 Isolation 시키고 싶은 경우 (0) | 2023.05.06 |
---|---|
[리눅스커널] GCC: notrace 옵션 - no_instrument_function (0) | 2023.05.06 |
[Crash-Utility][리눅스커널][디버깅] Radix Tree(라덱스-트리) 디버깅 하기(크래시 유틸리티) (0) | 2023.05.06 |
[리눅스커널] 비트 마스크를 어셈블리 코드로 빨리 읽는 방법 - HARDIRQ_MASK, SOFTIRQ_MASK, NMI_MASK (0) | 2023.05.06 |
[리눅스커널] smp thread에 대해서 (0) | 2023.05.06 |