[라즈베리파이] 워크큐(Workqueue)는 왜 잘 알아야 할까?
By Guillermo Austin Kim | 2018년 8월 22일 |
이번에 워크큐는 왜 잘 알아야 하는지 생각해 봅시다.워크큐는 영어 문법으로 보면 BE 동사와 같다고 볼 수 있습니다. 리눅스 커널을 탑재한 어느 시스템에서도 워크, 워커 쓰레드를 볼 수 있습니다. 리눅스 핵심 함수들에서 워크큐를 쓰고 있기 때문입니다. 다른 기법과 마찬가지로 워크큐 함수를 모르면 드라이버 코드를 읽을 수 없습니다. 워크를 써서 후반부 처리를 하는 코드를 작성하기는 쉽습니다. 하지만 워크를 쓰다가 생기는 문제는 개발자가 직접 해결해야 합니다. 워크큐 커널 함수 입장에서는 누가 워크를 큐잉했는지 모릅니다. 그래서 커널 핵심함수나 드라이버에서 워크를 큐잉해도 워크큐 커널 함수는 동등하게 처리합니다. 워크를 쓰다 생기는 문제를 해결하려면 어떤 단계를 밟아야 할까요? 우선 우선 커널이 워크큐를 어떻
[bash: bc, if]실수(부동소수점) 수자의 크기 비교
By 반달가면 | 2021년 4월 19일 |
리눅스 bash 스크립트의 if 조건문에서 정수(integer)의 크기 비교는 기본적으로 제공된다. x=2 y=-1 if (( $x > $y )) then echo "x의 값이 y의 값보다 큽니다." fi if [[ $x -gt $y ]] then echo "x의 값이 y의 값보다 큽니다." fi 만약 비교하고자 하는 수자가 실수(부동소수점)인 경우에는 위의 예시와 같은 비교를 할 수 없다. 이럴때는 bc와 조합을 하면 되겠다. 우선 bc와 관련한 아래의 예시를 보자. x=2.34 y=0.45 # x의 값이 y의 값보다 크면 1을 출력, 그렇지 않으면 0을 출력 echo "$x > $y" | bc # x의 값이 y의 값과 같으면 1을 출
[라즈베리파이] 인터럽트 디버깅 - in_interrupt #CS
By Guillermo Austin Kim | 2018년 6월 4일 |
in_interrupt 함수는 현재 구동 중인 프로세스 스택 Top 주소에 위치한 current_thread_info()->preempt_count 멤버이며 인터럽트 서비스 루틴이 실행되기 전 __irq_enter 함수에서 HARDIRQ_OFFSET를 더하고 인터럽트 서비스 루틴이 종료되면 해제합니다. 이제 커널 소스를 조금 수정해서 라즈베리안에서는 in_interrupt 매크로 값이 뭔지 확인하겠습니다. 인터럽트 핸들러에 아래 코드를 반영하고 로그를 받아보면 in_interrupt() 함수 리턴값을 볼 수 있습니다.diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.cindex 273b1be05..5f5
샤프 X68000 XVI, 라즈베리 파이 케이스로 부활하다
By 자그니 블로그 : 거리로 나가자, 키스를 하자 | 2018년 7월 24일 |
![샤프 X68000 XVI, 라즈베리 파이 케이스로 부활하다](https://img.zoomtrend.com/2018/07/24/a0001544_5b56b609cb756.jpg)
80년말 90년대초에 소년 시절을 보낸 사람들에겐, 꿈 같은 컴퓨터가 몇 개 있습니다. 샤프에서 나온 X68000 도 그 중 하나였죠. 그래픽이 끝내주는 게임기... 같은 느낌도 있지만, 아무튼 뭔가 굉장히 비싸고 좋은 컴퓨터인 것 같은데 본 기억은 없는, 그럼 컴퓨터였습니다. 그 컴퓨터가, 라즈베리 파이 2/3용 케이스로 부활... 했다고 합니다. 부활이라고 하긴 뭐하지만, 라즈베리 파이라는 기종 특성상, 에뮬을 이용해 원판 느낌을 살려쓰는 것도 가능... 하겠죠. 아무튼 제가 이런 레트로 기기 미니어처를 좋아해서, 보자마자 이거 소개해야지! 하고 적어놨다가... 6개월만에 소개합니다. 아하하... 보시면 아시겠지만, 일종의 프라모델이기도 합니다. 여기저기 라즈베리 파이를 위한