[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?
By Guillermo Austin Kim | 2019년 1월 13일 |
이번에는 커널 스레드 생성 요청과 커널 스레드를 생성하는 코드 흐름을 살펴봅시다. 커널 스레드를 생성하려면 다음과 같이 kthread_create() 함수를 호출해야 합니다.1 #define kthread_create(threadfn, data, namefmt, arg...) \2 kthread_create_on_node(threadfn, data, NUMA_NO_NODE, namefmt, ##arg)34 struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),5 void *data, int node,6 const char namefmt[],7 ...) 먼저 이 함수에 전달하는 인자부터 살펴봅시다.
[python] mac 과 linux 에서 group 구하기
By 지훈현서 | 2018년 9월 27일 |
의외로 맥과 리눅스에서 현재 로그인 한 계정의 그룹 이름을 구해오는 것이 쉽지 않았습니다. 이것을 파이썬으로 간단히 한줄로 (?) 구해 보도록 하겠습니다. python -c 'import grp,sys; gid=sys.stdin.readline().strip(); [gname]=[g.gr_name for g in grp.getgrall() if g.gr_gid==int(gid)][:1]; print(gname)' <<< $(id -g) 하나씩 파헤쳐 보겠습니다. * 마지막의 id -g 명령은 현재 계정의 gid 를 구해옵니다.* python -c '...' 은 '...'의 파이썬 코드를 실행합니다.* import grp, sys 는 두 표준 모듈을 import 합니다.* gid=
[리눅스커널] Arm64: VMEMMAP_START, vmemmap, PAGE_OFFSET 위치 조정(v5.4)
By Guillermo Austin Kim | 2021년 8월 8일 |
리눅스 커널 v5.4 버전부터 가상 주소 맵이 약간 변경됐습니다.그 중 대표적인 속성은 아래 정보입니다. VMEMMAP_START: 0xfffffffeffe00000PAGE_OFFSET: 0xffffff8000000000 이 정보를 직접 어셈블리 코드로 확인해보겠습니다. 관련 코드는 참고로 다음과 같습니다. vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT)) 패치 코드 먼저 다음과 같은 패치 코드를 작성합시다. diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.cindex 9af647d..3000332 100644--- a/arch/arm64/mm/
Ubuntu 14.04 apt-get update & install & xrandr & 해상도 문제
By 개발로_그(Development_Log) | 2018년 2월 20일 |
ubuntu 14.04 LTS 를 설치하고, apt-get update 조차 제대로 되지 않아서 문제를 겪었다. 처음에는 사내 개발망 허용 문제로 탓을 돌렸지만, 그것을 해결한 후에도 apt-get install이 제대로 되지 않는 것들도 있었고, update도 잘 안되었다. 특히, 그래픽 드라이버는 당췌 말을 듣지 않았다. 해상도가 고정되어있었고, xrandr를 이용해서 정말... 수 많은 방법을 적용해 보았다. 위의 문제들을 해결하려 정말 여러 웹을 돌아다니며 적용해보았지만, 소용 없었다. 그러던 중 만나게 된 답이다. sudo apt-get install --install-recommends linux-generic-lts-xenial xserver-xorg-core-lts-xenial xse