KERNEL
Posts
183 posts[라즈베리파이] 커널 타이머 - timer_after/timer_before 함수
리눅스 커널 중요 시스템은 물론 여러 디바이스 드라이버에서 time_after()와 time_before() 함수를 써서 실행 시간과 타이밍을 제어합니다. 보통 함수 처리 시간과 실행 시간의 데드라인을 점검합니다. 그러니 이 함수들이 어떤 역할을 하는지 잘 알아둘 필요가 있습니다. 먼저 time_after()와 time_before() 함수 구현부를 보겠습니다.[include/linux/jiffies.h]1 #define time_after(a,b) \2 (typecheck(unsigned long, a) && \3 typecheck(unsigned long, b) && \4 ((long)((b) - (a)) < 0))5 #define time_before(a,b
리눅스 커널은 정말 오픈 소스 프로젝트일까(2)?
경험은 실력을 낳고 실력은 경험으로 이어진다. 임베디드 리눅스 개발 경험은 그 만큼 중요하다. 데이터 시트에 맞게 디바이스 드라이버 구현을 하는 작업은 코드 몽키도 할 수 있다. 초보와 고수 차이는 디바이스 드라이버를 여러 다양한 환경에서 구동할 때 생기는 문제를 해결하는 능력이다. 임베디드 리눅스 개발 도중 여러 문제를 만난다. 그럼 이 문제를 해결하기 위해서 여러 단계를 밟아야 한다. 문제는 이런 문제 해결 분석과 같은 실무 경험이 리눅스 커널 개발자끼리도 공유되고 있지 않다는 것이다. 이 이유가 뭔 지 조금 더 살펴보자. 첫 번째는 실력 있는 임베디드 리눅스 개발자들은 대부분 바쁘다. 문제 하나를 해결하면 다른 문제를 봐야 할 경우가 많다. 내 주위에 밤 낮으로 문제를 해결해야 하는 고수 개발자를
[라즈베리파이] 커널 타이머 - msecs_to_jiffies 함수란
커널은 타이머를 HZ 단위 상대 시간을 나타내는 jiffies값을 기준으로 관리 합니다. 그리고 커널 타이머 함수는 HZ 단위 시간 정보를 받아 처리합니다. 그래서 커널이 이해할 수 있는 단위로 시간 정보를 변환시켜 줘야 합니다. msecs_to_jiffies() 함수가 이 역할을 수행합니다. 이 함수는 가독성도 높습니다. 함수 이름만 봐도 무슨 뜻인지 알기 쉽습니다. 실제 리눅스 커널에서 msecs_to_jiffies() 함수를 쓰는 코드를 살펴보겠습니다. 다음은 pstore 파일 시스템 코드 일부 조각입니다.[fs/pstore/platform.c]1 pstore_timer.expires = jiffies +2 msecs_to_jiffies(pstore_update_ms);3 add_time
[라즈베리파이] 커널 타이머 - jiffies란 값은 누가 언제 증가하나
jiffies에 대해 조금 더 깊이 알아보겠습니다. jiffies는 커널 시스템 타이머가 동적 타이머를 처리하는 횟수입니다. 그럼, jiffies란 값은 누가 언제 증가시킬까요? 이 변수는 타이머 인터럽트가 발생하고 난 후 do_timer() 함수에서 jiffies를 업데이트합니다. 소스 코드를 보면 이 내용을 더 쉽게 이해할 수 있으니 바로 코드 분석으로 들어가겠습니다.[kernel/time/timekeeping.c]1 void do_timer(unsigned long ticks)2 {3 jiffies_64 += ticks;4 calc_global_load(ticks);5} 3번 줄 코드를 보면 ticks이란 인자를 jiffies_64이란 jiffies 변수에 증감합니다. 여기서 do_timer()



![[1년 전 오늘] 250608 인천 무의도 덕점방파제 바다루어낚시 - 장대, 광어](https://img.zoomtrend.com/2026/06/10/1781084366-20250608122254.jpg)
![[CV] [Comi] '終末のハーレム ファンタジア' (종말의 하렘 판타지아) 17권. 그동안 SAVAN에 무슨 일이 있었던 거냐](https://img.zoomtrend.com/2026/06/10/1781084386-ECA484EBA6ACEC9790.jpg)