Character Device Driver(캐릭터 디바이스 드라이버) - Overview
By Guillermo Austin Kim | 2017년 12월 5일 |
캐릭터 디바이스 코드를 보다가 한 가지 의문이 생겼어요.아래 코드는 캐릭터 타입 디바이스의 메이저 번호를 0으로 설정하네요. 어라?이거 잘못된 코드인가? static int pacman_probe(struct platform_device *pdev){ pr_debug("%s: %s version %s\n", __func__, DEVICE_NAME, PACMAN_VERSION); pacman_ctl.dev_num = register_chrdev(0, DEVICE_NAME, &pacman_fops); //<<-- if (pacman_ctl.dev_num < 0) { pr_err("%s: register_chrdev failed\n", __func__);
[리눅스커널][스케줄링] 컨택스트 스위칭: context_switch() 세부 코드 분석
By Guillermo Austin Kim | 2019년 3월 6일 |
컨택스트 스위칭 세부 코드 분석이전 소절에서 다룬 컨택스트 스위칭이란 다음과 같은 문장으로 정리할 수 있습니다.CPU에서 실행 중인 프로세스 정보로 채워진 CPU 레지스터 세트를 프로세스 스택 공간에 저장하고 다음에 실행할 프로세스의 레지스터 세트를 스택 공간에서 로딩해 CPU 레지스터 세트에 채우는 동작입니다. 이번에는 context_switch() 함수 분석으로 컨택스트 스위칭 코드 동작을 알아보겠습니다. 먼저 context_switch() 함수에 전달하는 인자를 확인합시다.[https://elixir.bootlin.com/linux/v4.14.70/source/kernel/sched/core.c]static __always_inline struct rq *context_switch(struct rq
[라즈베리파이] 커널 타이머 - 동적 타이머 초기화
By Guillermo Austin Kim | 2018년 8월 6일 |
동적 타이머 초기화를 알아 보기 앞서 동적 타이머는 전체 동작 흐름에 대해 알아 봅시다.동적 타이머 동작은 3단계로 나눌 수 있습니다. 1. 동적 타이머 초기화2. 동적 타이머 실행3. 동적 타이머 만료 3.1 동적 타이머 해제 3.2 동적 타이머 핸들러 실행 첫 번째 초기화 단계입니다.동적 타이머 초기화는 보통 드라이버 레벨에서 수행합니다. 동적 타이머는 struct timer_list 이란 자료구조로 표현할 수 있는데 이 멤버 중 flags만 업데이트 합니다. 두 번째 동적 타이머 실행 단계입니다.동적 타이머 실행도 마찬가지로 드라이버 레벨에서 이루어집니다. 각자 드라이버 시나리오에 따라 동적 타이머 만료 시간을 HZ 단위로 지정한 다음에 add_timer() 함수를 호출합니다. 이제는 동적 타이머
docker에서 insecure 로 설정 후, default registry 변경하
By 박모 사진첩 | 2023년 1월 16일 |
nexus 같은 걸로 192.168.26.10 를 private 로 해 놓고 5001 포트를 미러로 잡은 경우add-registry 를 통해 등록하고 block을 통해 docker.io를 없애면 default 로 동작 시킬 수 있음 { "insecure-registries" ["192.168.26.105000", "192.168.26.105001"], "registry-mirrors" ["http//192.168.26.105001"], "add-registry" ["192.168.26.105001"], "block-registry" ["docker.io"]} 참조 정보 https//stackoverflow.com/questions