[라즈베리파이] 동기화 - 인터럽트 발생으로 레이스 컨디션 발생
By Guillermo Austin Kim | 2018년 12월 16일 |
이번에는 인터럽트 발생으로 Race가 발생하는 경우를 알아보겠습니다. 그동안 어떤 함수도 인터럽트가 발생하면 실행을 멈추고 인터럽트 벡터로 프로그램 카운터를 이동하고 인터럽트 핸들러와 서브 루틴을 실행합니다. 그런데 인터럽트 발생하기 전에 실행을 멈춘 함수가 인터럽트가 발생해서 다시 실행할 수 있습니다. 이를 확인하기 위해 다음 패치 코드를 입력합시다.diff --git a/mm/slub.c b/mm/slub.c--- a/mm/slub.c+++ b/mm/slub.c@@ -3740,10 +3740,42 @@ static int __init setup_slub_min_objects(char *str) __setup("slub_min_objects=", setup_slub_min_objects); 1 +ex
tshark에서 패킷의 특정 정보(field)만 출력하기
By 반달가면 | 2019년 12월 19일 |
tshark에서 패킷 관련 정보를 출력할 때 보고 싶은 특정 정보만 표시하도록 할 수 있다. 예를 들어 my_data.pcap 파일에서 다른 정보는 다 필요 없고 패킷 출현시간, 송신자 IP주소, 수신자 IP주소, 이렇게 세가지 항목만 출력하고 싶을 수 있다. 이런 경우 "-T fields" 옵션을 사용하고 -e 옵션으로 항목을 지정한다. 예시를 보면 금방 감이 잡힐 것이다. # my_data.pcap 파일에서 출현시간, 송신자 IP주소, 수신자 IP주소만 출력 tshark -r my_data.pcap -T fields -e frame.time -e ip.src -e ip.dst 위의 예시를 보면, -r 옵션으로 my_data.pcap 파일을 읽으라고 지정해 주고 -T fields 옵션과 -e
MODULE_INIT("GPL") 분석 - "module license 'unspecified' tainting kernel"
By Guillermo Austin Kim | 2017년 12월 28일 |
MODULE_INIT("GPL") - "module license 'unspecified' tainting kernel" 모듈 타입 드라이버를 짤 때 주의해야 할 포인트를 공유드리고자 해요. 예전에 제가 처음 리눅스 드라이버를 처음 접할 때,아래와 같은 모듈 드라이버를 짠 다음에 컴파일 후 보드에 올려 봤어요.#include <linux/module.h> int init_module(void){ printk(" init_module() \n"); return 0; } void cleanup_module(void){ printk(" cleanup_module() \n");} insmod로 드라이버를 실행했는데요. 동작을 안해요. 커널 로그가 안 찍히구요.뭐가 문제일까요? 우선 커널 로그를
우분투 계열 리눅스 배포판에서 "System program problem detected" 메시지 문제
By 반달가면 | 2019년 6월 4일 |
우분투 또는 우분투 계열 배포판에서 패키지를 업데이트한 후에 간혹 발생했던 문제다. 부팅해서 로그인한 후에 팝업창이 나오면서 "System program problem detected"라는 메시지가 출력된다. 선택할 수 있는 옵션은 취소(cancel) 또는 문제를 보고하기(report problem)인데, 이후에도 재부팅하면 또 다시 이 팝업창이 떠서 매우 귀찮을 수 있다. "System program problem detected" 메시지가 나오는 이유는 어떤 프로세스가 비정상적으로 종료되면서(crash) /var/crash/ 디렉토리에 로그(log)를 남겼기 때문이다. 따라서, /var/crash/ 디렉토리에 있는 로그를 삭제한 후에 재부팅을 해 보자. 시스템 로그이므로 삭제하기 위해서는 루트(ro