본문 바로가기

Programming

arm 에서 system call 을 호출할때 4개 이상의 파라미터를 어떻게 처리하는가? 다음과 같이 arm 컴파일러를 지정해 주면 arm 용으로 컴파일이 가능하다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -o test test.c 이때 -S 옵션을 주면 어셈형태의 파일이 나와서 직접 asm 파일을 볼 수 있다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -S test.c 다음과 같이 파라미터가 6개인 sendto system call 에 가상으로 파라미터들을 넣어서 추적해 보았다. #include #include #include int main() { int _s=0x11; void *_msg = (void*)0x22; size_t _len = 0x33; int _flags = 0x44; str.. 더보기
fallocate system call 원문 : http://lwn.net/Articles/239738/ fallocate 는 일련된 메모리 블럭을 예약할 수 있는 시스템 콜이다. 이 system call 은 파일시스템 단위에서 지원되어야 사용할 수 있으며 현재 Ext4와 XFS에서 지원하고 있다고 한다. 향후 다양한 플렛폼 및 파일시스템에 이식 되어 널리 사용될 것이라고 한다. 현재는 이러한 기능을 사용하기 위해서는 posix_fallocate 를 사용해야 하는데 이 syscall은 메모리 블럭을 잡은후 fregmantaion 을 막기위해 0으로 체워둔다고 한다. 이러한 낭비를 막기 위해서 fallocate syscall 에 대한 필요성이 대두되고 있다. root@onegun-ubuntu:~/2_hdisk/Project/Mobibench/s.. 더보기
winamp 를 이용해서 mid 를 mp3로 변환하기 아래글은 어딘가에서 퍼 두었던 글인데 지금은 출처를 알 수가 없네요. 너무 유용한 정보라서 올려두고, 나름 내용도 추가했습니다. 만약 문제가 된다면 삭제 하겠습니다. 윈앰프를 이용해서 mid 파일을 mp3 파일로 변환하는 요령을 설명해 드리겠습니다. mid 파일을 CD로 구울 때 동일한 음질을 유지해야 하는데 mid to mp3 파일 변환기를 사용해 본 경험에 의하면 음질이 정말 맘에 안듭니다. 그래서 어떤 경우에는 mp3 플레이어를 스피커에 직접 대고 녹음도 해 보았지만 이것도 1~2곡 할 때 하는 것이지 엄청난 노가다(?)와 숨도 제대로 못 쉬고 녹음을 해야 하기에 정말 짜증이 납니다. 그래서 제가 설명해 드리는 것을 잘 숙지해서 활용하시기 바랍니다. 버전(윈앰프 5.08)에 따라서 메뉴가 다소 상이.. 더보기
windows XP 로그인 암호를 잊었을때 해결 방법 이건 Administrator의 계정암호를 삭제하는 거지만 Administratior말고 Owner 계정암호를 삭제한다 라고 생각하시고 따라하시면 됩니다 ----------------------------------- net user 계정아이디 * 까지 치고 엔터 여기서 계정 아이디는 현재 썼던 아이디 입니다.(띄우기 하세요) 새 비밀번호 를 입력 하라고 나옵니다. 그러면 새비밀번호를 입력후 엔터를 친다 (주의:비밀번호 칠때 커서는 변하지 않으니 잘 기억하면서 치세요) 다시한번더 비밀번호 입력 후 엔터 후 재부팅 하고 바뀐 비밀번호로 부팅하면 됨 XP 를 시작하면 사용자 계정 암호를 까먹었는데.. 알수있는 방법은 없나요? 윈도우xp시작할때 로그온시 비밀번호를 푸는방법좀 1. 사용하시던 계정이 admini.. 더보기
swap - samba 서버 설정을 외부 window pc에서 하자. 원문 1 : http://unix.co.kr/bbs/board.php?bo_table=02_23&wr_id=21 원문 2 : http://www.opensourcehowto.org/how-to/samba/swat-samba-web-administration-tool.html 원문 3 : http://forum.falinux.com/zbxe/?mid=lecture_tip&page=3&document_srl=405974&listStyle=&cpage= 당장 회사에서는 port 가 방화벽으로 막혀있어서 쓰기 힘들겠지만, 사용할 수 있다면 무척 편리한 기능일 것이다. 아래는 퍼온글이니 보이지 않는 그림 링크는 직접 찾아가길 바란다. S.W.A.T stands for Samba Web Administration .. 더보기
알툴즈 - 툴바클리너 언젠가부터 웹브라우져에 이름도 알 수 없는 툴바가 깔렸다. 삭제 메뉴도 없고.. 또 레지스트리 수정하자니 귀찮고 짜증난다. 이런 나(?) 를 위해서 툴바클리너가 탄생했나보다. -_- http://www.altools.co.kr/EstLab/History_Contents.aspx?idx=19 앞으로 쒸레기 같은 툴바들을 바로바로 삭제 할 수 있을것 같다. 더보기
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의 값이.. 더보기
wati(), wait4(), waitpid() 함수의 status 반환값 원문 : http://forum.falinux.com/zbxe/?mid=C_LIB&page=4&document_srl=408551 안그래도 strace 소스 분석하는데 status 에 따라 상당히 많은 분기문이 있어서 정확한 의미를 파악해야 했다. 이 문서가 상당히 많은 도움이 된다. wati()나 waitpid()에서 자식 프로세스의 종료 상태를 확인하기 위해서 인수로 전달했던 변수 status 값을 직접 확인해야 했습니다. 이값은 아래와 같이 값이 구성된다고 했지만 앞으로 시스템이 발전하면, 이와 같은 내용이 바뀌지 않는다는 보장이 없습니다. 즉, 8비트 2개에서 16비트 2개로 늘려질 수 있다는 것이죠. 8비트 8비트 정상 종료 프로세스 반환 값 0 비정상 종료 0 종료 시킨 시그널 번호 또한 직접.. 더보기
Playing with ptrace, Part I 원문 : http://www.linuxjournal.com/article/6100 ptrace 는 리눅스에 입문한 나에게 마법과 같은 기능이다. 물론 제약이 있겠지만, 언듯 보면 이것은 Linux의 process 보호의 컨샙을 넘나들며, 동작을 한다. 이 놀라운 기능을 조금씩 알아가는것은 나에게 커다란 즐거움이다. Using ptrace allows you to set up system call interception and modification at the user level. Have you ever wondered how system calls can be intercepted? Have you ever tried fooling the kernel by changing system call arg.. 더보기
Playing with ptrace, Part II 원문 : http://www.linuxjournal.com/node/6210/print In Part II of his series on ptrace, Pradeep tackles the more advanced topics of setting breakpoints and injecting code into running processes. In Part I of this article [LJ, November 2002], we saw how ptrace can be used to trace system calls and change system call arguments. In this article, we investigate advanced techniques like setting breakpoi.. 더보기
paper on debugging kernel oops or hang 출처 : http://mail.nl.linux.org/kernelnewbies/2003-08/msg00347.html To: "'kernelnewbies@nl.linux.org'" Subject: paper on debugging kernel oops or hang From: "HABBINGA,ERIK (HP-Loveland,ex1)" Date: Mon, 25 Aug 2003 14:30:10 -0700 List-archive: List-help: List-owner: List-post: List-software: Listar version 1.0.0 List-subscribe: List-unsubscribe: Original-Recipient: rfc822;kernelnewbies-archive@nl.l.. 더보기
diff 를 이용한 kernel patch 만들기 - 또다른 문서 원문 : http://wiki.kldp.org/wiki.php/SubmittingPatches How to Get Your Change Into the Linux Kernel or Care And Operation Of Your Linus Torvalds 리눅스 커널에 여러분의 패치(역자주:원본에는 change를 사용하였으나 문맥상 patch로 번역함)를 반영하는 법 혹은 여러분의 Linux Torvalds를 치료하고 수술하는 법 For a person or company who wishes to submit a change to the Linux kernel, the process can sometimes be daunting if you're not familiar with "the system." .. 더보기
diff를 이용한 kernel patch 만들기 원문 : http://kltp.kldp.org/stories.php?story=02/06/23/4844278 [ 패치파일 만들어 적용하기 ] 작성자 : 정택진 (nveteran@netian.com) 작성일 : 2002. 6. 23. 1. 패치파일 만들기 (diff 이용) - diff 의 쓰임 : 두 대상간의 차이점만을 모아 파일로 저장한다. - 확장자 : .diff or .patch - 만들기 전에는 make clean, make distclean, make mrproper 등을 수행하여, 컴파일된 파일을 모두 삭제한 뒤 만듭니다. - 아래 설명들은 pwd 를 항상 생각하면서 도움이 됩니다. * 실제 소스 코드를 통한 테스트를 합시다. - 대상 : wu-ftpd-2.6.2.tar.gz # cd /usr/.. 더보기
Linux Kernel 에 대한 문서들 여기 있는 내용들만 알아도 Linux Kernel 에 대해서 전반적인 지식은 습득할 수 있을 것이다. 이렇게 방대한 내용이 한글로 작업되어있다는 것만으로도 얼마나 감사한 일인지 모른다. 번역해 주신 분들에게 감사함을 표한다. 원문 : http://katalog.egloos.com/3191241 1 일반 문서 ¶ Unreliable Guide To Hacking The Linux Kernel (김남형) 리눅스 커널 해커들을 위한 입문서 Kernel Analysis HOWTO (김남형) 리눅스 커널을 구성하는 각 부분을 정의하고 그 부분을 수행하는 주된 함수와 자료 구조, 그리고 이들이 어떻게 동작하는지에 대한 설명 임베디드 시스템 개발자를 위한 리눅스 커널 (남상규) 리눅스 커널을 임베디드 시스템에 포팅하.. 더보기
ptrace 번역 윈도우에 hooking 이 있다면 Linux 에는 ptrace 가 있다. (이게 무슨말인지 아는사람? 둘다 무척 잼있는(?) 기술이다.) 이것을 번역해 놓으신 분이 있으셔서 고맙게도 자료를 떠 왔다. 원문 : http://blog.naver.com/int_com?Redirect=Log&logNo=80055576334 정말 날림으로 번역했다 ㅠㅠ ;;; 그냥 원문 읽자니 잘 집중도 안되서 번역하면서 읽으면 잘 될거 같아서 ㅎㅎ 원문 주소 -> http://linuxgazette.net/issue81/sandeep.html ------------------------------------------------------------ 1. introduction ptrace()는 한 프로세스가 다른 프로세스의 .. 더보기
warning: function declaration isn't a prototype gcc 로 빌드하다보면 다음과 같은 warning 을 만나게 된다. warning: function declaration isn't a prototype 신경쓰여서 찾아봤더니 다음과 같은 의미가 있다고 한다. warning 없는 compile 을 위하여... > gcc: gcc version 2.95.3 20010315 (release) > > i get these warnings on a project i'm trying to port using > arm-linux-gcc .. is there some place i can find a more detailed > description of what these warnings mean and how i can clean them up? i > am h.. 더보기
해더파일을 통한 배열 입력 Linux 바닐라 커널에 다음과 같은 코드가 있다. struct sysent { int nargs; int sys_flags; int (*sys_func)(); const char *sys_name; long native_scno; /* Match against SYS_* constants. */ }; const struct sysent *sysent; static const struct sysent sysent0[] = { #include "syscallent.h" }; // "syscallent.h" { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 0 */ { 1, TP, sys_exit, "exit" }, /* 1 */ { 0, TP, sys_fork, .. 더보기
HOWTO do Linux kernel development 리눅스 커널 개발자가 되는 일은 정말 길고도 힘든 길일것 같다. 하지만, 그렇기에 정말 멋진 일이 아닐까.. 나는 지금 그 길의 첫발을 딛고 있다. 원문 : http://wiki.kldp.org/wiki.php/HOWTO_do_Linux_kernel_development FrontPage › LinuxdocSgml/Majordomo-KLDP › HOWTO_do_Linux_kernel_development 원문: "HOWTO do Linux kernel development" 저자: Greg Kroah-Hartman 번역: 조수형 HOWTO do Linux kernel development 이 문서는 이 주제에 대한 가장 중요한 문서로 어떻게 리눅스 커널 개발자가 되고 어떻게 리눅스 커널 개발 커뮤니티와 .. 더보기
sigaction() 원문 : http://blog.naver.com/msd102?Redirect=Log&logNo=150009176058 ------------------------------------------------------------------------------------------- #include int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); sigaction() 시스템 호출은 특정 시그널의 수신에 대해서 취할 액션을 설정하거나 변경하기 위해서 사용된다. signum는 시그널을 명시한다. SIGKILL과 SIGSTOP를 제외한 모든 시그널이 타당한 시그널이 될 수 있다. 만약 act가 null이 아니라면 .. 더보기
blocked signal 검사와 변경 : sigprocmask 원문 : http://kr.blog.yahoo.com/jinynet9/1011.html ------------------------------------------------------------------------------------------- signal mask - 프로세스에게 전달되지 않도록 블럭된 signals 들의 집합 #include int sigprocmask(int how, sigset_t * set, sigset_t * oset);- sigprocmask는 시그널 마스크를 검사하거나 변경하는데 쓰인다. how SIG_BLOCK - 새로운 시그널 마스크는 현재의 시그널 마스크와 set에 의해 지정된 시그널 마스크의 합집합이다. - 즉, set는 블럭시키고자 하는 추가적인 시그널들을 .. 더보기
ARM과 파워PC에 기반한 임베디드 프로그래밍 최적화 기법 원문 : http://blog.naver.com/artmedia0?Redirect=Log&logNo=60032808059 최적화란 프로그래밍의 시작과 끝이다 라고 생각한다. 최초 설계 단계에서 부터 최적화를 염두해 두어야 하며, 모듈을 작성한 마지막에 하는것도 profiling 을 통해 병목을 찾고, 최적화를 하는 일이다. 최적화는 낮은수준의 코드 최적화와, 전반적인 동작에 대한 높은수준의 구조 최적화가 있다. 근래에 프로세서들이 강력해 지면서 코드 최적화는 그 의미를 많이 잃고 있지만, 잘 짜여진 코드가 보기도 좋고, 수행능력도 좋다고.. 코드의 가독성과 수행성을 위한 노력을 등한시 할수는 없는 일이다. 특히, 임베디드 프로그래밍 세계에서는 C만 잘 한다고 코드 최적화를 달성할 수 없다. 각 프로세서에.. 더보기
Linux Signal Handling 원문 : http://www.linuxjournal.com/article/3985 APUE 책만 보니까 실제 리눅스에서 signal 처리가 궁금해 졌다. 아래 문서에 잘 나와있다. -------------------------------------------------------------------------------------------- The Linux Signals Handling Model May 1st, 2000 by Moshe Bar in · Software Communication is the key to healthy relationships between threads and the kernel; these are the signals they use to communicate. 양.. 더보기
gprof 를 이용한 profiling 원문 : http://blog.naver.com/doky99?Redirect=Log&logNo=20005409020 사용하면 완전 좋을 듯하나.. 내가 하는 과제에서는 gmon.out 파일이 나오지 않는다. ㅜㅜ arm 은 되는게 너무 없다..;; ------------------------------------------------------------------------------------------ gprof를 사용한 프로파일링 By Vinayak Hegde 한글번역 전정호 이 글은 한글번역판입니다. 원문은 여기에서 볼 수 있습니다. 연재 소개 리눅스(와 다른 유닉스)에는 같이 사용하여 놀라운 기능을 하는 작고 멋진 도구들이 많다. 이런 소프트웨어를 사용하거나 직접 만들면 재미있다. 나는 이번 .. 더보기
strace man page STRACE(1) STRACE(1) NAME strace - trace system calls and signals SYNOPSIS strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ... [ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ -Evar=val ] ... [ -Evar ] ... [ command [ arg ... ] ] strace -c [ -eexpr ] ... [ -Ooverhead ] [ -Ssortby ] [ command [ arg ... ] ] DESCRIPTION In the simplest case strace runs the specified command until it exits... 더보기
_alloca 와 smart point 얼마전 stack 에 동적 메모리를 할당하는 _alloca 라는 함수를 들었다. 힙을 스택처럼 사용하는 smart point 와 스택을 힙처럼 사용하는 _alloca 중 어떤것이 더 효율적일까? _alloca 는 스택에 공간을 미리 할당해서 힙처럼 사용할 수 있도록 해준다. smart point 는 힙을 사용하되 스택풀기에 들어가면 할당한 memory 를 자동으로 해제시켜 주는 코드를 포함하도록 힙포인터를 수정한것이다. 자세한 내용은 아래의 포스팅을 참고.. _alloca 는 smart point 에 대해 비교적 가볍지만, 사용상 주의할 점이 존재한다. 이 주의할 점이 좀 애매한 편이여서 편하게 코딩하다가는 자칫 알수없는 오류를 만들어 내기 쉬운 부분이 있다... 더보기
ptrace() 함수의 PTRACE_ATTACH 옵션 사용시 stop 문제 해결 원문 : http://letsme.com/tag/ptrace -------------------------------------------------------------------------------------------- 리눅스에서 ptrace() 함수의 PTRACE_ATTACH 옵션을 사용하여 특정 프로세스에 attach 할 경우에 return value는 정상이지만 해당 프로세스에 attach 가 되지 않고 detach 후에도 프로세스가 STOP 인 상태로 남게되는 경우가 있습니다. 이런 경우에 ptrace() 함수를 사용하여 attach한 직후에 sleep() 이나 usleep() 함수를 사용하여 스케쥴링을 시키면 원하는대로 동작을 하게 됩니다. ptrace(PTRACE_ATTACH, pid,.. 더보기
Process Tracing Using Ptrace - By Sandeep S 원문 : http://linuxgazette.net/issue81/sandeep.html ------------------------------------------------------------------------------------------- The ptrace system call is crucial to the working of debugger programs like gdb - yet its behaviour is not very well documented - unless you believe that the best documentation is kernel source itself! I shall attempt to demonstrate how ptrace can be used t.. 더보기
How to code debuggers 원문 : http://t-a-w.blogspot.com/2007/03/how-to-code-debuggers.html ------------------------------------------------------------------------------------------ Coding low-level infrastructure like kernels, compilers, and linkers can be very scary, and most programmers stay as far away from them as they can. And the scariest of all are debuggers, which rip apart warm flesh of innocent programs, and .. 더보기
/Proc/[pid]/stat 에서 보이는 정보 분석하기 출력되는 정보를 다음과 같은 순서로 해석하면 된다. FLDNUM FMT ARG OUTPUT 1 %d task->pid 18173 2 (%s) task->comm (run-mozilla.sh) 3 %c state S 4 %d ppid 932 5 %d task->pgrp 18173 6 %d task->session 904 7 %d tty_nr 0 8 %d tty_pgrp -1 9 %lu task->flags 0 10 %lu task->min_flt 186 11 %lu task->cmin_flt 118 12 %lu task->maj_flt 483 13 %lu task->cmaj_flt 470 14 %lu task->times.tms_utime 0 15 %lu task->times.tms_stime 0 16 %.. 더보기