Programming
-
[linux] 디바이스 드라이버 만들기Programming/system programming 2015. 6. 1. 19:22
device등록 Device driver를 커널에 등록할때에는 register_chrdev(장치 주번호, 장치이름, file_operations)함수를 사용하고, module_init함수내에서 수행한다.터미널 드라이버 경우에는 주번호 : 4, 디바이스 이름 : "tty” , 파일 연산 : tty_fops struct file_operations Linux/include/linux/fs.h http://lxr.free-electrons.com/source/include/linux/fs.h리눅스에서 디바이스는 위의 함수들을 지원한다. led 디바이스에는 open, write, release만 있으면 되므로 아래와 같이 정의해주면 된다. struct file_operations iom_led_fops ={op..
-
[네트워크]주소변환관련 APIProgramming/system programming 2014. 10. 3. 19:33
항상 헷갈리는 주소변환.참조 : http://blog.naver.com/PostView.nhn?blogId=dkssud2623&logNo=70043775711&redirect=Dlog&widgetTypeCall=true 주소변환관련 API intelx86은 little endian 방식으로 데이터 처리,저장network는 big endian 방식으로 데이터 처리둘이 다르기때문에 Data to Network 는 big endian방식으로 애초에 메모리에 저장하고,Data from Network는 메모리에 있는 데이터를 little endian으로 변환해서 프로그래머가 처리한다. long short little endian -> big endian(Host byte order TO Network byte o..
-
little endian과 big endianProgramming 2014. 7. 11. 23:26
little endian Least significant byte(LSB)가 최소 주소에 저장됨장점>산술연산이 빠르다.Intel x86계열 big endian Least significant byte(LSB)가 최대 주소에 저장됨장점>가독성이 뛰어나고, 대소비교가 빠르다.Sun,모토로라계열네트워크는 big Endian사용한다.! example변수 x는 다음과 같은 4bytes의 워드이다. 0x01234567big endian 0x100 0x1010x102 0x103 0123 45 67 little endian 0x100 0x101 0x102 0x103 67 45 23 01 dump나 text에서 나타나는 순서와 메모리(stack)에서 나타나는 순서가 뒤바뀜.
-
VIX programming 을 위한 VS2012설정Programming 2014. 6. 23. 20:57
1. 라이브러리 디렉토리 추가법 해당프로젝트 - 속성 - 링커 - 일반 - '추가 라이브러리 디렉터리' 에 추가해당 프로젝트 - 속성 - 링커 - 입력 - '추가 종속성' 에 lib파일 풀로 써준다 해당 프로젝트 - 속성 - C/C++ - 일반 - '추가 포함 디렉토리' 에 추가 ㅔ 방법|ㄹ작성자 nimi315#pragma commentALT+F7과 같은 역활이다. 오히려 컴파일러에 영향을 안받으므로 pragma써주는게 좋음. Visual Studio. NET 2003에서 제공하는 런타임 라이브러리다중 스레드 (/ MT)다중 스레드 디버그 (/ MTd)멀티 스레드 DLL (/ MD)다중 스레드 디버그 DLL (/ MDd)참조 : http://blog.naver.com/lenasea/10175581276
-
[Widnwos] Hooking (Application level)Programming 2013. 12. 31. 02:07
1. Message Hooking SetWindowsHookEx()를 이용해서 hook을 설치해놓으면, 어떤 프로세스에서 해당 메시지가 발생했을 때 운영체제가 해당 DLL파일을 해당 프로세스에 강제로 injection하고, 등록된 hook procedure를 호출한다. 2. How to hook the API ? how?어떤 방식으로 API를 hooking할지의 문제이다. 크게 debugging을 만들거나, 혹은 dll injection으로 후킹이 가능하다. 1) debugging방식(soft hooking) notepad의 writeFILE()후킹 : process에 attach해서, INT3이 호출될때 마다 hooking routine을 수행한다. 2)dll injectionhooking프로그램은 d..
-
vim 환경 세팅Programming 2013. 11. 9. 00:26
whitespace, 80 column, tab size 포함! set autoindent set cindent set smartindentset smarttab set wrap set nowrapscan set nobackup set visualbell set ruler "tab설정set tabstop=4 set shiftwidth=4set expandtab set number set bs=2 set nocpset expandtab "여분의 space를 빨간색으로 표시해줌highlight ExtraWhitespace ctermbg = red guibg=redmatch ExtraWhitespace /\s\+$/ "색표시syntax on set csto=0set cstset nocsverb vi ~/.vi..
-
[Linux] shared memoryProgramming/system programming 2013. 6. 19. 18:40
#include #include int shmget(key_t key, size_t size, int shmflg) 공유 메모리를 생성하는 함수. 또한 공유메모리를 생성하기 전에 이미 만들어져 있나 확인할 때 사용함. 성공시 반환값 : 공유 메모리 식별자 실패시 반환값 : -1 key_t key 공유 메모리를 구별하는 식별번호(공유 메모리의 고유 값으로 사용자가 임의 설정) size_t size 공유 메모리 크기 int shmflg 동작 옵션 IPC_CREATE : key에 해당하는 공유 메모리가 없다면 생성한다. 만약 있다면 무시하며 생성을 위해 접근 권한을 저정해 주어야 한다. IPC_EXCL: 공유 메모리가 이미 있다면 실패로 반환하며 공유 메모리에 접근하지 못한다. void* shmat(int s..