[라즈베리파이]워크큐(Workqueue) - 워크 초기화는 어떻게 하나
By Guillermo Austin Kim | 2018년 9월 5일 |
워크를 실행하기 위해서 먼저 워크를 초기화해야 합니다. 워크를 초기화하기 위해서 INIT_WORK() 혹은 DECLARE_WORK() 매크로를 써야 합니다. INIT_WORK() 매크로는 함수가 실행할 때 워크를 동적으로 초기화하고 DECLARE_WORK()은 컴파일이 될 때 전역 변수로 워크를 설정합니다. 두 매크로를 쓰면 워크를 어떻게 초기화하는지 드라이버 코드를 확인하겠습니다. 첫 번째로 INIT_WORK() 매크로로 워크를 초기화하는 방법입니다. 다음 4번째 줄 코드를 보겠습니다.1 void tty_buffer_init(struct tty_port *port)2 {3 struct tty_bufhead *buf = &port->buf;..4 INIT_WORK(&buf->wo
리눅스에서 특정 디렉토리를 다른 디렉토리에 마운트(mount)하기 (--bind 옵션)
By 반달가면 | 2019년 5월 11일 |
특정한 디렉토리를 다른 디렉토리에 마운트(mount)해서 양쪽 디렉토리가 같은 곳으로 연결되도록 할 수 있다. mount에서 --bind 옵션을 사용하면 된다. 예를 들어 /home/john/data 디렉토리를 /home/jane/data_from_john 디렉토리에 연결하는 경우다. mount를 사용하므로 심볼릭 링크(symbolic link)와 달리 루트 권한을 필요로 한다. # /home/john/data 디렉토리를 /home/jane/data_from_john에 마운트 sudo mount --bind /home/john/data /home/jane/data_from_john 마운트를 해제하려면 umount를 사용. # 마운트 해제 sudo umount /home/jane/da
[리눅스커널] 시그널: 유저 공간에서 pause() 함수 호출 시 커널 실행 흐름 파악하기
By Guillermo Austin Kim | 2019년 6월 22일 |
유저 공간에서 pause() 함수를 호출하면 커널 공간에서 어떤 함수가 실행할까요? 다음 시그널 설정 흐름도에서 가장 하단에 표시된 박스를 확인합시다. [그림 ] 유저 공간에서 pause() 함수 호출 시 실행 흐름도 pause() 함수는 시그널을 기다릴 때 호출합니다. 라즈베리파이에서 다음 명령어를 입력해 pause 명령어에 대한 매뉴얼을 확인합시다. root@raspberrypi:/home/pi# info pausePAUSE(2) Linux Programmer's Manual PAUSE(2)NAME top pause - wait for signal 매뉴얼에서 출력하는 결과와 같이 시그널을 기다리는 역할을 수행합니다
ufw - 리눅스용 방화벽
By 반달가면 | 2021년 4월 5일 |
ufw는 우분투 계열 리눅스에 기본으로 탑재된 방화벽이다. 기본적인 몇가지 명령어들을 정리해 두기로. 방화벽이 활성화되어 있는지 상태를 확인하고 활성화/비활성화하는 예시는 아래와 같다. # ufw 상태 확인 sudo ufw status # ufw 상태 확인, 허용/거부 규칙 표시 (규칙 번호 표시) sudo ufw status numbered # ufw 활성화 sudo ufw enable # ufw 비활성화 sudo ufw disable 특정 접속을 허용하는 규칙은 allow, 거부하는 규칙은 deny로 지정한다. 예를 들어 특정 IP주소 또는 IP주소 대역을 허용 또는 거부할 수 있다. # 192.168.0.10으로부터의 접속 허용 sudo ufw allow