[라즈베리파이] 커널 타이머 - msecs_to_jiffies 함수란
By Guillermo Austin Kim | 2018년 7월 30일 |
커널은 타이머를 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
[리눅스커널] 워크큐: 워커 자료구조인 struct worker 구조체 알아보기
By Guillermo Austin Kim | 2019년 9월 22일 |
워커를 관리하고 저장하는 자료구조는 struct worker 구조체입니다. 이번 시간에는 struct worker 구조체 세부 필드를 분석하겠습니다. struct worker 구조체 분석하기 다음은 struct worker 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/workqueue_internal.h]1 struct worker {2 union {3 struct list_head entry; 4 struct hlist_node hentry; 5 };6 struct work_struct *current_work; 7 work_func_t current_func; 8 struct pool_workqueue *current
주분투 14.04 LTS -> 16.04 LTS 업그레이드
By 반달가면 | 2017년 12월 23일 |
레노버 S435 노트북에 주분투(Xubuntu) 14.04 LTS 버전을 설치해서 그동안 잘 사용해 오다가, 이번에 16.04 LTS 버전으로 업그레이드를 했다. 업그레이드 과정은 그리 복잡하지 않았다. 터미널창에서 아래와 같이 입력 sudo do-release-upgrade 시간이 꽤나 많이 걸리므로, 노트북에서 업그레이드한다면 반드시 전원 아답터를 연결한 상태에서 진행하는 것이 좋겠다. 진행할 것이냐고 물으면 "y"라고 입력해서 진행. 업그레이드하는 중간에 "Configuring unattended-upgrades"라는 제목의 창이 나오고 사용자가 선택을 해야 하는 과정이 있었다. /etc/apt/apt.conf.d/50unattended-upgrades라는 설정 파일을 어떻게
[리눅스커널] 워크큐(Workqueue) - 딜레이워크(delayed_work)는 어떻게 실행하나?
By Guillermo Austin Kim | 2018년 9월 26일 |
딜레이 워크를 실행하려면 어떤 함수를 호출해야 할까요? schedule_delayed_work() 함수를 실행하면 됩니다. 먼저 딜레이 워크를 실행하는 드라이버 코드를 예제로 열어 보겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/drivers/mmc/host/bcm2835.c#L651]1 static2 bool bcm2835_send_command(struct bcm2835_host *host, struct mmc_command *cmd)3 {...3 if (!cmd->data && cmd->busy_timeout > 9000)4 timeout = DIV_ROUND_UP(cmd->busy_timeout, 1000) *