[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 등록 - 코드리뷰
By Guillermo Austin Kim | 2017년 12월 17일 |
리눅스 시스템 프로그램을 보면 fd를 얻어오는 코드를 자주 볼 수 있어요. fd를 보통 file descriptor라고 하죠.특정 프로세스에서 파일 핸들이라고 이야기하고요. 그럼 fd가 커널 공간에서 어떻게 생성되고 저장되는지 살펴보도록 할께요.#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h> #define MAX 1024 int main (int argc, char ** argv[]) { int fd; int readn = 0; int writen = 0; char
[bash: source] 스크립트에서 환경설정 파일 활용하기
By 반달가면 | 2017년 2월 20일 |
셸 스크립트에서 환경설정 파일을 읽어서 변수값을 지정하고 싶을 때 source 명령을 활용할 수 있다. source 명령은 현재의 shell 프로세스에서(즉, fork하지 않고) 지정된 파일에 있는 명령을 실행한다. 아래의 예시를 보자. # test.ini 파일 내용 확인 cat test.ini MY_VALUE=10 MY_NAME="john" # test.ini 파일의 내용을 현재 shell에서 실행 source test.ini # 변수 설정 결과 확인: MY_VALUE, MY_NAME 출력 echo $MY_VALUE 10 echo $MY_NAME john 변수 MY_VALUE, MY_NAME의 값을 test.ini 파일에서 정하고, 이것을 읽어서 실행함으로써 변수값이 설
[리눅스커널] 메모리관리/디버깅: 가상주소를 물리주소로 변환 확인 실습
By Guillermo Austin Kim | 2019년 9월 2일 |
이번 소절에서는 가상주소를 물리주소로 변환하는 과정을 실습으로 알아봅시다. 3장 3.6 절에 소개한 rpi_debugfs.c 소스를 활용해 실습을 진행합니다. 먼저 rpi_debugfs.c 소스를 입력하고 커널 빌드를 하시기 바랍니다. 패치 코드 입력 방법 알아보기 먼저 입력할 패치 코드부터 소개합니다.[drivers/soc/bcm/rpi_debugfs.c] 01 static int rpi_kernel_debug_stat_set(void *data, u64 val)02 {03 int ret;04 05 raspbian_debug_state = (uint32_t)val;06 07 if ( raspbian_debug_state == 1402 ) {08 unsigned long ph
[라즈베리파이] 워크큐(Workqueue) - 워크는 누가 언제 호출하나? (2) @process_one_work
By Guillermo Austin Kim | 2018년 9월 12일 |
From...워크는 누가 언제 호출하나? (1) @process_one_work 다음 24~26번 줄 코드를 분석하겠습니다.24 worker->current_work = work;25 worker->current_func = work->func;26 worker->current_pwq = pwq; 24~25번 줄 코드에서 worker->current_work이란 멤버에 work를 등록하고 worker->current_func 함수 포인터에 워크 핸들러 함수를 지정합니다. 26번 줄 코드를 보면 worker->current_pwq에 워커 풀 주소를 저장합니다. process_one_work() 함수에서 워크 핸들러는 worker->current_func 함