
- 2019/08/08 22:26
- rousalome.egloos.com/10001701
- 덧글수 : 3

핑백
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 유저 프로그램 실행 흐름 추적하기 2019-09-08 11:48:06 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: current_thread_info() 매크로 함수 분석 2019-09-08 11:48:29 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.9 프로세스 컨택스트 정보는 어떻게 저장할까? 2019-09-08 11:49:45 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: struct thread_info 구조체 소개 2019-09-08 11:50:34 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.7.5 프로세스 실행 시각 정보 2019-09-08 11:51:12 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.7.3 프로세스 간 관계/4.7.4 프로세스 연결 리스트 2019-09-08 11:51:48 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.7.1 프로세스를 식별하는 멤버/ 4.7.2 프로세스 상태 저장 2019-09-08 11:52:10 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: do_exit() 함수 분석 2019-09-08 11:52:49 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.6.1 _do_fork() 함수/ 4.6.2 copy_process() 함수 2019-09-08 11:53:11 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.5 커널 스레드 2019-09-08 11:53:41 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.4.2 부모 자식 프로세스 생성 실습 및 ftrace 로그 분석 2019-09-08 11:54:19 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 기본 유저 레벨 프로세스 실행 실습 및 ftrace 로그 분석 2019-09-08 12:01:03 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.3.3 커널 프로세스 생성 시 do_fork() 함수 흐름 2019-09-08 12:02:05 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.3.2 유저 레벨 프로세스 생성 시 _do_fork() 함수 흐름 2019-09-08 12:02:28 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스 커널] 프로세스: 유저 모드와 커널 모드란 2019-09-08 12:02:43 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: do_fork() 함수 소개 2019-09-08 12:03:06 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.2 프로세스 확인하기 2019-09-08 12:03:21 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : 4.1 프로세스 소개 2019-09-08 12:03:37 #
... 택스트 정보 확인하기/ Soft IRQ 컨택스트 정보 확인하기 선점 스케줄링 여부 정보 저장프로세스 디스크립터 접근 매크로 함수 current 매크로란 current_thread_info()프로세스 디버깅 glibc fork 함수 gdb 디버깅 유저 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] thread_info 구조체의 preempt_count - 인터럽트 컨텍스트 실행 저장 2020-03-01 17:20:20 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: struct thread_info 구조체 주소 위치는 어디일까? 2020-03-01 17:28:22 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 커널 스레드는 어떻게 생성할까? 2020-03-01 17:35:40 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: thread_info 구조체 초기화 코드 분석 2020-03-02 00:22:18 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: thread_info 구조체 - cpu 필드에 대한 상세 분석 2020-03-02 00:24:12 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] thread_info 구조체의 preempt_count - 선점 스케줄링 여부 확인 2020-03-02 00:26:05 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] thread_info 구조체의 preempt_count - Soft IRQ 컨텍스트 실행 2020-03-02 00:27:21 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: do_task_dead() 함수 분석 2020-03-02 00:37:08 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 프로세스 종료 흐름 파악 2020-03-02 00:40:42 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 커널 스레드란? 2020-03-02 00:42:36 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 태스크란 2020-04-11 18:19:41 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 스레드란? 2020-04-11 18:22:27 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: ftrace에서 프로세스 확인하기 2020-04-19 09:00:07 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: copy_process() 함수 분석 2020-04-25 18:39:42 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: wake_up_new_task() 함수 분석 2020-04-25 18:40:04 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 태스크 디스크립터(task_struct 구조체) - 프로세스 연결 리스트 2020-04-26 09:54:06 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: 태스크 디스크립터(task_struct 구조체) - 프로세스 상태 2020-04-26 09:54:35 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: do_task_dead() 함수를 호출하고 난 후의 동작 2020-04-26 09:55:32 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 프로세스: thread_info 구조체란? 2020-07-19 09:51:24 #
... d_info 구조체 초기화 코드 분석 프로세스의 태스크 디스크립터에 접근하는 매크로 함수 * current 매크로란? * current_thread_info() 매크로 함수 분석 프로세스 디버깅&n ... more
덧글
-
영악한 얼음여왕 2019/08/21 00:26 # 답글
안녕하세요 질문 하나만 해도될까요? 제가 현재 커널에서 realpath를 구현중입니다...ㅠㅠ
char *realpath(char *buffer, char resolv[256]) 함수입니다.
매개변수값은 이렇게 되어있습니다.
buffer는 __user *filename을 복사한 상대경로값입니다.
resolv[256]는 buffer를 절대경로로 변환한 값입니다.
함수가 진행이 되면서 buffer의 왼쪽부터 폴더 하나하나를 따라가면서 resolv에 차곡차곡 쌓아가게됩니다.
그렇게해서 완성된 절대경로를 return resolve; 하여 함수를 종료하게 됩니다.
그러나 symbolic link, hard link같은 경우에는 링크가 가리키는 절대 경로명을 찾아주고싶습니다.
그래서
__old_kernel_stat sb; 을 선언해 준 후
lstat(resolv, &sb) 해준 다음,
if S_ISLNK(sb.st_mode) 링크폴더라면
readlink() 함수로 링크가 가리키는 폴더의 절대경로를 받아 다시 함수를 작동하게 하고싶습니다.
예를들면 /etc를 카리키는 심볼릭 링크를 test로 생성후 vim /test/tmp 명령어를 실행합니다. 그러면 openat 시스템 콜을 통해 do_sys_open함수의 char __user* filename 변수로 파일값을 전달받고 이 변수를 buffer배열에 copy 합니다. char *path; 선언 후
path = realpath(buffer, resolv); 함수를 실행합니다.
그러면 realpath에서 '/'단위로 토큰을 만들어 따라가서 resolv에 쌓아가기 시작합니다. 그러다 resolv 가 "/test" 상태가 되었을 때 lstat를 통해 "/test"가 심볼릭 링크라는 것을 알아낸 후 readlink()함수를 통해 "/test"를 "/etc"로 변환해준 후 다시 토큰을 쌓아 최종적으로 resolv는 "/etc/tmp"를 최종적으로 가졌으면 합니다.
그러나 커널 내에서는 lstat와 readlink를 사용하지를 못하네요...
혹시 좋은 방법 있을까요..?
[ 현재 fs/stat.c 에서 lstat함수를 k_lstat로, readlink함수를 k_readlink로 복사하여 적용을 시도했으나 커널패닉이 계속 나네요..
__user 를 지워도 보고 copy_to_user를 memcpy로 카피하여 값을 가져오려고도 시도해봤지만 성공을 하지는 못했습니다..
현재는 lstat와 readlink함수 그대로 복원시켜두었습니다..
도와주실수 있나요.. ? :( ] -
JohnLee 2023/01/20 15:34 # 삭제 답글
1회차 책을 읽다 질문이 있어 댓글을 답니다.
4.10.1절 중에
#define get_current() (current_thread_info()->task)
#define current get_current()
에서 왜 굳이 한줄로 사용할 수 있는 매크로를 두 줄로 정의하는 건가요? 앞에서도 몇몇 코드에서도 이런 의문이 들었는데 이 절에서 티나게 두 코드가 붙어있어 이렇게 달려왔습니다.
#define current (current_thread_info()->task)
처럼 한 줄이면 코드 수도 줄어들고 좋을텐데 말입니다. -
AustinKim 2023/01/21 13:01 #
주신 질문에 대해 아래와 같이 새롭게 글을 포스팅했습니다.
http://rousalome.egloos.com/10238490
혹시 추가로 궁금하신 점이 있으면 위 포스팅에 댓글을 남겨주시면 됩니다.
감사합니다.
최근 덧글