KERNEL
Posts
183 posts워크큐(Workqueue) - struct work_struct->data
workqueue를 디버깅할 때 여러 변수를 점검해야 하거든요.그 중에 하나가 struct work_struct->data 변수이거든요 일단 데이터 구조체는 아주 명령어로 볼 수 있죠.crash64> struct -o work_structstruct work_struct { [0] atomic_long_t data; [8] struct list_head entry; [24] work_func_t func;} 이번 기회에 struct work_struct->data 값들을 정리하려고 하는데요.결과는 아래와 같아요. 가끔 디버깅 할 때 아래 매크로 값들을 찾다가 짜증날 때가 가끔 있거든요.workque macro Hexa ValueWORK_STRUCT_COLOR_BITS 0x4
ARM64 - 각 익셉션(Exception) 레벨 소개
64비트의 ARM 아키텍쳐(ARMv8)의 익셉션 레벨에 대해 간단히 살펴보고자 합니다. 각 Exception Level(EL) 특징을 간단하게 적을께요.1> EL0 -> EL1 -> EL2 -> EL3로 갈수록 execution privilege가 증가해요. 볼 수 있는 코드나 파일에 대한 Permission이 더 있다는 거죠. 2> EL0는 유일한 unprivileged 특성을 가져요.3> EL2는 Non-secure 모드에서 가상화를 구현하기 위해서 사용되곤 하는데 자주 쓰지는 않아요.4> EL3는 secure 와 Non-secure 모드 전환을 위해서 사용되죠.5> ARMv8에서 EL0, EL1은 필수 구현 사항이며 나머지는 Option이에요.즉 ARMv8을
fd - file descriptor(파일 디스크립터) 갯수 확인 및 업데이트 방법
리눅스 커널에서는 하나의 프로세스가 소유할 수 있는 파일 디스크립터의 갯수를 정해 놓았는데요.그럼 이 갯수를 어떻게 알 수 있을까요? 아래 명령어로 확인할 수 있어요.ulimit -a 결과를 보니 "nofiles(descriptors) 1024" fd의 갯수는 1024이네요.adb shell ulimit -atime(cpu-seconds) unlimitedfile(blocks) unlimitedcoredump(blocks) 0data(KiB) unlimitedstack(KiB) 8192lockedmem(KiB) 64nofiles(descriptors) 1024processes 6609flocks
[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 디버깅 CrashTool
"echo c > /proc/sysrq-trigger" 명령어로 강제 커널 패닉을 유발시킨 다음 코어 덤프를 받아 보았어요.crash> bt -I C01003AC -S C59C3E20 0xD110E040PID: 4944 TASK: d110e040 CPU: 0 COMMAND: "sh" #0 [ ] (do_DataAbort) from [ ] pc : [ ] lr : [ ] psr: 60010013 sp : c59c3f10 ip : c1920700 fp : bee5765c r10: 00000000 r9 : acf2a284 r8 : 00000000



