커널 기여: race condition 가능성 해결
·
Linux/start_contribute()
drivers/staging/rtl8723bs 드라이버쪽을 최근에 기웃기웃 보고있다.그러던 중race contition 해결 패치void expire_timeout_chk(struct adapter *padapter) { struct list_head *phead, *plist, *tmp; u8 updated = false; ..
커널 기여 근황
·
Linux/start_contribute()
처음 기여를 시작한 11월 말부터 현재까지 약 10개 가까이 되는(시리즈 포함) 패치를 보냈다.이중에서 현재,2개 승인8개 리뷰중3개 리젝인데, 생각보다 리뷰가 상당히 까다롭다.승인 패치[패치]https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?h=mm-nonmm-unstable&id=f34e19c34e4e92338d2ceaab2b95dd7790d262dekernel/fork.c에 있던 주석 수정인데, 기존의 주석이 함수의 동작을 애매하게 표현했었다.따라서 함수의 동작과정(mm_release())를 분석하고 그에 맞게 주석을 수정했다.이건 별다른 리뷰 없이 승인 받았다. [패치]https://git.kernel.org/pub/scm/l..
내가 쓰는 vim 설정
·
똥글
C언어(커널 개발)에 맞춘 vim 설정" --- 외관 및 기본 설정 --- syntax on " 문법 하이라이트 활성화 set number " 왼쪽 줄 번호 표시 set cursorline " 현재 커서가 있는 줄 강조 set showmatch " 괄호를 닫을 때 짝이 맞는 괄호 표시 ..
리눅스 커널 2번째 기여: 수동 메모리 정렬 연산 PTR_ALIGN으로 최적화
·
Linux/start_contribute()
커널의 코어 영역에 기여하기란 쉽지 않다.그래서 보통 초보 개발자들은 드라이버쪽 기여를 많이 하게되는데,특히 드라이버쪽에 staging디렉토리에서 한다. staging 디렉토리는 아직 메인라인 커널의 엄격한 코딩 표준을 완벽히 충족하지 못했거나,추가적인 테스트가 필요한 과도기적 드라이버들이 모여있는 곳,그래서 초보 기여자들이 개선할 여지가 가장 많은 곳이다. 난 그중에서 rtl8723bs 와이파이 드라이버에서 기여를 해보고자 선택했다./drivers/staging/rtl8723bs/core/rtw_cmd.c여기서,이 코드를 보면, 엄청나게 긴 연산이 있다.이 비트 연산이 포함된 연산은 '메모리 정렬'을 위한 연산이다. 메모리 연산이 뭐냐면컴퓨터는 데이터를 읽어낼 때, 뭉텅이 단위로 읽는다.예를 들어, 8..
나의 sht20드라이버는 무엇이 부족했을까, 메인라인 코드와 비교 분석
·
Linux/start_analyse()
라즈베리파이 온습도 제어 시스템을 만들면서sht20 온습도 센서를 사용했고, 이 과정에서 sht20센서의 디바이스 드라이버를 직접 제작했다. 디바이스 트리를 작성하고, 데이터 시트를 보고 명령어를 짜고 꽤나 공부가 되었던 토이 프로젝트 인데,정작 리눅스 내에 sht21 드라이버가 있는 줄은 몰랐다.https://github.com/Jminu/Yocto-rasp-BSP/blob/master/meta-mylayer/recipes-kernel/sensor-drivers/files/sht20_driver.c Yocto-rasp-BSP/meta-mylayer/recipes-kernel/sensor-drivers/files/sht20_driver.c at master · Jminu/Yocto-rasp-BSPbuil..
/drivers/char/mem.c 드라이버 2차 분석
·
Linux/start_analyse()
기존devlist[5] = {"zero", &zero_fops, FMODE_NOWAIT, 0666};devlist[7] = {"full", &full_fops, 0, 0666};에서 write_zero와 read_zero에 대해서 이전에 봤다. 간단하게 보자면,zero_fops#define write_zero write_null이고,write_null 코드421 static ssize_t write_null(struct file *file, const char __user *buf,422 size_t count, loff_t *ppos)423 { 424 return count;425 }걍 아무 동작도 하지않음.read_zero 코드4..