본문 바로가기

Process

taskset : user process 를 특정 cpu에서 동작하도록 하기 원문 : http://coffeenix.net/board_view.php?bd_code=1702 ■ Taskset 이란? TaskSet은 프로세스가 사용할 CPU(CPU affinity) 를 보여주거나 지정해준다. ■ 사용 방법 taskset [options] [mask | list ] [pid | command [arg]...] mask는 Process가 사용할 CPU 값을 나타내며 16진수로 표현이 된다. 0x00000001 는 0번 프로세스(CPU)의 사용을 나타내며 0x00000003 는 0번과 1번 프로세스(CPU)의 사용을 나타내며 0xFFFFFFFF 는 모든 프로세스(CPU)의 사용을 나타냅니다.(0 ~ 31번..) 물론, mask를 프로세서(CPU)의 숫자로 표현할 수도 있다. mask를 .. 더보기
find PID as process name and send signal using shell script #!/system/bin/shecho "sigquit.system_server.sh: start" > /dev/kmsgecho "sigquit.system_server.sh: start"sleep 10.0str=""echo "sigquit.system_server.sh: delay finish" > /dev/kmsgecho "sigquit.system_server.sh: delay finish"while [ "$str" = "" ]; do str=`ps | grep system_server` sleep 0.1donepid=${str:10:4}echo "sigquit.system_server.sh: kill -3 ${pid}" > /dev/kmsgecho "sigquit.system_server.sh: k.. 더보기
get pid by process name - example source code (예제 코드) 원문 : https://phoxis.org/2013/09/13/find-process-ids-of-a-running-process-by-name/ 이름으로 pid 를 찾아내는 예제 #include #include #include #include #include #include /* checks if the string is purely an integer * we can do it with `strtol' also */int check_if_number (char *str){ int i; for (i=0; str[i] != '\0'; i++) { if (!isdigit (str[i])) { return 0; } } return 1;} #define MAX_BUF 1024#define PID_LIST_BL.. 더보기
kill parent and child process sametime #include //#include #include #include #include #include #include int main(int argc, char *argv[]){// signal(SIGALRM, timer_handler); // add handler about sigalrm pid_t pid, child_pid; int rc=0; pid = fork(); if (pid == 0){ // childprintf("[child] I'm child(%d)\n", getpid()); //char *argvs[] = {~~~~~~~, (char *)0}; //return execv(~~~~~~~~~); // run other program pid_t ppid = getppid();pid_t pgid .. 더보기
현재 프로세스의 이름 출력, print current process name linux platform side 에서 현재 프로세스 이름을 출력하는 방법 입니다. extern char *__progname;char* get_process_name(){return __progname;} 더보기
arm 에서의 linux process 와 thread 1) linux 에서 process 와 thread 의 차이점은?2) interrupt handler 의 pid 는?3) system call 이 호출되었을때의 pid 는? 이러한 것들을 해결해 본다. 1. kernel 에서의 pid 알기pid = task_pid_nr(current); current->pid 이글은 계속해서 업데이트 됩니다. 더보기
linux process memory usage 원문 : http://blog.naver.com/PostView.nhn?blogId=yesing1&logNo=70120580840 linux kernel stack에 대한 오해출처 : http://blog.naver.com/lache96?Redirect=Log&logNo=140051813931 정리하면3G~4G영역에 프로세스마다 커널 스택이 존재한다.인터럽트 발생시 커널 스택에 현재 프로세서의 context를 push한다. 인터럽트 핸들러를 처리 후 scheduler에 의해 같은 프로세스가 실행되면push 되었던 프로세서 context를 pop하여 동작한다.(다른 프로세스가 먼저 선택되면 역시 kernel stack의 정보를 pop하여 사용한다.커널스택은 프로세스마다 같은 공간을 사용한다. 출처 : ht.. 더보기
kernel 동작을 trigger 시킨 process name과 pid 얻기 system call 이나 sysfs 등을 통해서 kernel 을 동작시킨 process 주체의 name 과 pid 를 kernel 단에서 얻을 수 있습니다. process 명칭 문자열 : current->comm pid : task_pid_nr(current) 더보기
kernel 에서 user process 실행하기 call_usermodehelper 라는 함수를 사용하면 됩니다. envp 의 0에 실행파일의 path 가 들어가는것을 눈여겨 보시기 바랍니다. #define NAND_DUMP_MAKE_FILE_APPL_PATH "/bin/nand_log_dump_file" #define DEFAULT_LOG_FILE_SAVE_PATH "--to=/mnt/ums/.tmp/debug/" char *argv[] = {NAND_DUMP_MAKE_FILE_APPL_PATH, DEFAULT_LOG_FILE_SAVE_PATH, NULL}; char *envp[] = { "HOME=/", "TERM=linux", "PATH=/usr/bin:/bin", NULL }; rst = call_usermodehelper(argv[0], ar.. 더보기
wait 를 이용한 프로세스 종료 상태 원문 : http://database.sarang.net/study/glibc/23.htm 23. 6 프로세스 종료 이 절에서 설명하고 있는 함수들은 자식 프로세스가 종료하거나 멈추도록 기다리는데 사용되고, 그러한 상황인지의 여부를 알아보는데 사용된다. 그들 함수들은 헤더파일 `sys/wait. h'에 선언되어 있다. 함수 : pid_t waitpid (pid_t pid, int *status_ptr, int options) waitpid 함수는 프로세스 ID를 pid로 가진 자식 프로세스로 부터 상황 정보를 요청하는데 사용된다. 일반적으로, 호출된 프로세스는 자식 프로세스가 종료됨으로써 유용한 상황정보를 만들 때까지 잠시 중지되어 있다. pid 인수를 위한 다른 값들은 특별한 뜻을 갖는다. -1의 값이.. 더보기