[라즈베리파이] 동기화 - 스핀락(spinlock) 소개
By Guillermo Austin Kim | 2018년 12월 21일 |
리눅스 커널에서 가장 많이 쓰는 동기화 기법 중 하나가 스핀락입니다. 먼저 스핀락의 특징을 알아봅시다. 1. 뮤텍스락 비해 구현 복잡도가 낮습니다.2. spin_lock_irq(), spin_lock_irq_save() 등등 추가 기능이 포함된 함수를 제공합니다.3. 스핀락 구현부는 아키텍처에 의존적입니다. ARM, ARM64 그리고 x86 CPU에 따라 구현부가 다릅니다. 스핀락 동작을 제대로 이해하기 위해선 어셈블리 코드를 분석해야 합니다. 임계 영역에 특정 프로세스에 접근하기 위해서 임계 영역 코드 구간에 스핀락을 걸어 다른 프로세스 접근을 막아야 합니다. 이를 위해 다음과 같은 함수를 호출해야 합니다.static DEFINE_SPINLOCK(static_spinlock);void kernel_fu
Gmail에서 notes 라벨이 지워지지 않을 때 대책
By 자그니 블로그 : 거리로 나가자, 키스를 하자 | 2018년 5월 22일 |
![Gmail에서 notes 라벨이 지워지지 않을 때 대책](https://img.zoomtrend.com/2018/05/22/a0001544_5b042de4e165d.jpg)
남들 다 아는데 나만 모르던 팁..이 하나 있습니다. 예전부터 있던 증상인데, 이상하게 지메일에서 'Notes' 라벨이 지워도 지워도 또 생기는 겁니다. 몇년을 이상하게 생각하다 최근 이런 저런 데이터를 정리하는 김에 이 증상에 대해서도 찾아봤는데, 의외로 간단하네요. 아이폰/아이패드 설정 → 계정 및 암호 → Gmail 로 들어가셔서, '메모'라고 되어 있는 것을 꺼주시면 됩니다. 무려 2010년에 씌여진 글에서 찾았어요, 이 내용. 하아... 이것말고 동기화 실패나 뭐 그런 이상한 라벨이 자꾸 생성되시는 분들은, 아웃룩이나 윈도 메일 같은 곳에 동기화 시켜뒀는지 확인해 주세요. 거기서 생기면 Gmail에서도 생기고, 메일 설정에서 아무리 지워줘도 동기화하면 다시 부
[리눅스커널] 워크큐(Workqueue) - 딜레이워크(delayed_work)는 어떻게 초기화하나?
By Guillermo Austin Kim | 2018년 9월 26일 |
딜레이 워크를 실행하기 위해서 먼저 딜레이 워크를 초기화해야 합니다. 이를 위해 INIT_DELAYED_WORK() 매크로 함수를 호출해야 합니다. 먼저 딜레이 워크를 초기화하는 디바이스 드라이버 코드를 열어 봅시다.[https://elixir.bootlin.com/linux/v4.14.43/source/drivers/thermal/da9062-thermal.c#L248]1 static int da9062_thermal_probe(struct platform_device *pdev)2 {3 struct da9062 *chip = dev_get_drvdata(pdev->dev.parent);4 struct da9062_thermal *thermal;...5 INIT_DELAYED_WORK(&th
[bash: strings] 바이너리 파일에서 문자열만 골라 출력하기
By 반달가면 | 2017년 4월 6일 |
strings는 바이너리 파일에 포함되어 있는 문자열만 골라 화면에 출력해 주는 기능을 제공한다. 별도의 옵션을 지정하지 않을 경우 4바이트 이상의 문자열이 존재할 경우 화면에 출력해 준다. 아래의 예시를 보자. # my_data.bin 파일에 포함된 문자열 출력 strings my_data.bin 화면에 출력할 문자열의 최소 길이는 기본값이 4이나, -n 옵션을 이용해서 사용자가 직접 지정해 줄 수도 있다. # my_data.bin 파일에 포함된 길이 8바이트 이상의 문자열 출력 strings -n 8 my_data.bin 만약 출력 결과에 파일명을 같이 표시해 주고 싶다면 -f 옵션을 이용한다. # 파일명을 함께 출력(-f) strings -f my_data.bin my