spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석
By Guillermo Austin Kim | 2017년 12월 26일 |
자 그 동안 궁금해왔던 아래 API들의 차이점에 대해서 알아보는 시간을 갖도록 하겠습니다.spin_lock(), spin_lock_irq(), spin_lock_irqsave() 리눅스 커널 책에서 마르고 닳도록 설명을 많이 하고 있는데요. 직접 소스를 열어서 분석하는게 가장 좋은 리눅스 커널을 마스터하는 길인 것 같아요. 소스 코드가 오픈되어 있잖아요. 1> spin_lock()아래 순서로 실제 구현부는 __raw_spin_lock() 함수 라는 걸 알 수 있어요. spin_lock -> raw_spin_lock -> __raw_spin_lockstatic inline void spin_lock(spinlock_t *lock){ raw_spin_lock(&lock->rlo
[라즈베리파이] 시스템 콜 - 소프트웨어 인터럽트 벡터(vector_swi) 코드 분석
By Guillermo Austin Kim | 2018년 11월 21일 |
커널 공간에서 시스템 콜 실행 출발점은 vector_swi 레이블입니다. svc 명령어를 실행하면 소프트웨어 인터럽트 벡터인 vector_swi 레이블으로 브랜치하기 때문입니다. vector_swi 레이블 어셈블리 코드 분석으로 ARM 리눅스 커널에서 시스템 콜이 어떻게 동작하는지 살펴봅시다. vector_swi 레이블 어셈블리 코드는 다음과 같습니다.1 80107ee0 <vector_swi>:2 80107ee0: e24dd048 sub sp, sp, #72 ; 0x483 80107ee4: e88d1fff stm sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}4 80107ee8: e28d803c add r8, s
[bash: awk] 특정 필드(field)의 값이 있는 경우, 또는 없는 경우 판별하기
By 반달가면 | 2018년 6월 18일 |
여러개의 항목 또는 필드(field)로 이루어진 내용에서 특정한 항목의 값이 있는지 없는지 판별할 때, 즉 특정한 필드 값의 유무에 따라 선별을 해야 할 경우에 awk를 활용할 수 있다. (우선 awk에서 조건에 따른 작업에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로) 예를 들어 이름, 전화번호, 이메일을 저장한 파일에서 전화번호가 없는 사람만 골라서 출력한다거나 아니면 이메딜 주소가 있는 사람만 출력하는 경우다. 각 항목을 탭(tab)으로 구분한다고 가정한다. # list.txt 파일 내용 확인 cat list.txt john 123-1234 [email protected] jane [email protected] sam 222-3434 위의 예시에서 탭이
[임베디드] 뛰어난 임베디드 리눅스 프로그래머가 되기 위한 조건
By Guillermo Austin Kim | 2019년 12월 19일 |
뛰어난 프로그래머가 되기 위한 가장 중요한 덕목은 뭘까? 개인적으로; * 바로 부지런히 새로운 것을 배우려는 자세라고 생각한다. 일단 난 게으른 편이고 새로운 지식이나 스킬을 배우는 속도도 정말 느리다. 그래서 이런 주제에 대해 이야기하는게 정말 부끄럽다. 그런데 한 가지 내가 잘한다고 느끼는 것을 말해보까? '바로 쪼잔하다는 거다.' * 쪼잔하다? 그게 뭔 소리니? 쪼잔하다는 게 뭔 소리인데 풀어서 설명을 해볼까? 코드를 한 줄 추가할 때나 분석할 때 스스로 나에게 다음과 같은 질문을 던진다. * 배열의 인덱스가 제대로 처리되고 있나? * 배열을 초기화하지 않고 사용하면 문제가 되지 않을까? * 이 코드 구간에서 레이스 컨디션이 발생하면 어떻게 될까? * 지금 보는 코드