[라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock() 어셈블리 코드 분석
By Guillermo Austin Kim | 2018년 12월 25일 |
이전 시간에 인라인 어셈블리 코드를 살펴봤는데, 이번에는 어셈블리 코드를 분석하겠습니다. 실제 ARM 프로세서 입장에서 스핀락을 어떻게 실행하는지 정확히 파악하려면 어셈블리 코드를 봐야 합니다. 어셈블리 코드를 분석해야 스핀락 핵심 개념을 알 수 있다는 겁니다. 이전 절에 다룬 내용을 이해했으면 그리 어렵지 않습니다. 분석하려는 코드는 다음과 같습니다.1 80704b60 <_raw_spin_lock>:2 80704b60:e1a0c00d movip, sp3 80704b64:e92dd800 push{fp, ip, lr, pc}4 80704b68:e24cb004 subfp, ip, #45 80704b6c:e52de004 push{lr}; (str lr, [sp, #-
[bash: if] if 조건문에서 띄어쓰기에 유의
By 반달가면 | 2017년 7월 25일 |
별 것 아닌 기본적인 내용이긴 한데, 스크립트를 만들다가 의외로 실수하는 경우가 종종 있어서 잊지 말자는 의미에서 적어 두기로. if 조건문에서 비교 조건을 지정하기 위해 대괄호([])를 사용하게 되는데, 대괄호와 비교조건 사이에는 반드시 공백이 있어야 한다. 아래의 예시를 보자. str="abc" # 오류 발생! (띄어쓰기 오류) if [[$str="abc"]] then echo "ABC" fi [[abc=abc]]: command not found 대괄호와 조건이 붙을 경우 bash에서 대괄호와 조건이 붙은 전체 문구를 하나의 명령어로 해석하여 처리하려 하므로 오류가 발생하게 된다. 띄어쓰기를 제대로 해 주면 정상 동작한다. # 정상 동작 if [[ $str="ab
vmalloc - debugging(1)
By Guillermo Austin Kim | 2017년 12월 6일 |
자, 이제 vmap_area_list 변수 T32로 올려서 좀 들여다 볼까요? (static struct list_head) [D:0xC124E630] vmap_area_list = ( (struct list_head *) [D:0xC124E630] next = 0xDE8026D8, (struct list_head *) [D:0xC124E634] prev = 0xDD85F258) 링크드 리스트이니 좀 T32의 비주얼 속성을 좀 써볼께요.(출처: 참 항목이 많네요.do _fake_list_sym.cmm 0xC124E630 0x0 (0)| [C:0xC124E630] ( | [C:0xC124E630] next = 0xDE8026D8, | [C:0xC124
Ubuntu계열 운영체계를 사용하며 겪는 어려운 점들
By Perpendicular vector | 2017년 8월 11일 |
이따금 Ubuntu 계열(flavours)의 운영체계를 설치해서 사용해보고 있는데, 매번 마주하게 되는 난항들이 있어요. 1. 한글 입력 운영체계 설치가 끝난 후 사용해보면 종종 한글 입력이 되지 않는 경우가 있습니다. 수차례 이런 문제를 만나다보니 어느정도 해결방법을 터득하게 되었지만, 잘 사용하다가 어느날 갑자기 다시 한글 입력이 되지 않는일이 종종 발생하네요. Xubuntu 또는 Hamonikr 등의 운영체계의 경우, 설치가 끝나자마자 곧장 사용하더라도 한글 입력도 가능하고, 한/영키도 잘 작동한다는 점이 인상적이지만, Xubuntu의 경우 GNOME계열 소프트웨어 설치 프로그램이 어째선지 종종 말썽을 일으키고, Hamonikr의 경우에는 2016년 1분기에 이루어진 업데이트 이후로 아무런 소식이