Linux/Kernel Analysis

    프로세스 정보 얻기 (Task Struct 이용)

    struct thread_info *thread = current_thread_info();struct task_struct *task = thread->task; for_each_process(task){printk("pid = %d tgid = %d ppid=%d comm=%s\n ",task->pid,task->tgid,task->real_parent->pid,task->comm);}

    커널영역에서 파일 입출력

    #include mm_segment_t old_fs=get_fs();set_fs(KERNEL_DS); //file openfilp = filp_open(fname, O_RDWR, S_IRUSR|S_IWUSR);if(IS_ERR(filp)){printk("open error\n");return;}//file readret = vfs_read(filp, buff, sizeof(buff), &filp->f_pos);printk(KERN_ALERT "cmd[%s] ", buff); //file closefilp_close(filp, NULL);set_fs(old_fs);strcpy(cmd,buff);

    커널영역 파일 입출력

    이 문서를 읽기 전에 우선 숙지해야 할 사항은 kernel 영역에서 user 영역의 file에 대해 read/write를 사용하는 것은 절대 좋지 않은 정책이라는 것이다. 첫번째 이유는 커널의 보호문제이다. File의 data를 interrupt해가는 과정에서 유발되는 error는 buffer overflow 공격을 받을 가능성이 있다. 두번째 이유는 정책의 문제이다. 특정 fle system으로부터 특정 위치에서 특정 file을 읽어야 하는 kernel module은 user 영역에 의존성을 가지게 된다. 이것은 kernel developer들이 가장 피하는 정책이기도 하다.이럼에도 불구하고 kernel 영역에서 user 영역의 file을 handling하여야 하는 경우는 종종 발생하는데, 이런 경우에..

    커널 유저영역 데이터 전달

    1. 프로세스가 수행되는 모드 1) 사용자 모드 - 커널 모드로 진입하기 위해서는 시스템 콜 함수 호출 - 사용자 메모리 공간 * 사용자 모드에서 프로세스가 사용하는 메모리 공간 * 각 프로세스마다 서로다른 물리적 메모리 공간을 가리킴 2) 커널 모드(수퍼바이저 모드) - 커널 메모리 공간 * 커널메모리 공간에서 프로세스가 사용하는 메모리 공간 * 모든 프로세스가 동일한 물리적 공간을 가리킴 2. 사용자 메모리와 커널메모리 사이에 데이터 전송 함수들 1) #include 포함 - int verify_area(int type, const void _user *addr, unsigned long size); * 사용자 메모리 공간의 유효성 검사 - int copy_to_user(void _user *to, ..

    프로세스의 전체 실행시간 확인하기.

    kernel에 실행되고 있는 프로세스의 전체 실행된 시간을 알아보고 싶다..... 그래서 include/linux/sched.h 를 뜯어 봤다. 정의된 구조체 중 task_cputime 이란 구조체를 확인해 본다. /** 464 * struct task_cputime - collected CPU time counts 465 * @utime: time spent in user mode, in &cputime_t units 466 * @stime: time spent in kernel mode, in &cputime_t units 467 * @sum_exec_runtime: total time spent on the CPU, in nanoseconds 468 * 469 * This structure grou..

    부팅시 쉘 스크립트등 강제 실행하기.

    http://www.placeo.pe.kr/index.php?document_srl=7002&mid=DevelopmentAndroid http://kldp.org/node/134171 http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=&bid=1425 http://www.okprogramming.com/1933 http://shadowxx.egloos.com/10770478 http://blog.daum.net/jackryu/232 http://onecellboy.tistory.com/218