본문 바로가기

Address

[arm] EL2 에서 EL1의 virtual address 보기 EL2 mode 에서 동작하는 code 에서 vbar_el1 값을 읽으면 아래와 같이 보인다. VBAR_EL1 FFFFFF8008082000 VBAR_EL2 00000000800BC800 vbar_el2 의 address 값을 d.l 로 보면, 아래와 같이 exception vector table을 볼 수 있으나, vbar_el1의 값을 따라가 보면 아무것도 볼 수 없다. 0x800BC800 _arm64_vectors_base: .global arm_vectors_minimal arm_vectors_minimal: // SPSel == 0 _arm64_fault // Synchronous EL2 _arm64_fault // IRQ EL2 _arm64_fault // FIQ EL2 _arm64_fault .. 더보기
linux partitions (sda, sda1, sda2...) # cat partitions major minor #blocks name 1 0 8192 ram0 8 0 247087104 sda -> 디스크.. 보통 여기에 파티션을 만들지는 않는다. 8 1 204800 sda1 -> 실제 파티션 8 2 1048576 sda2 8 3 1048576 sda3 8 4 1048576 sda4 8 5 30720 sda5 8 6 102400 sda6 8 7 20480 sda7 8 8 30720 sda8 8 9 614400 sda9 8 10 17039360 sda10 8 11 225898444 sda11 8 16 4096 sdb 8 32 4096 sdc = 아래는 byte 단위 일듯 # cat size 494174208 # cat /sys/block/sda/sda1/start .. 더보기
LG U+ 인터넷 유무선공유기 내부 ip 고정할당 하는 방법 (DHCP 고정할당) 홈 네트워크를 구성하다 보면,NAS 종류의 서버나 연결 장치들의 IP가 자주 바뀌어서, 곤란한 경우가 있습니다. 특히 ftp 나 smb(windows 공유) 종류의 연결을 사용하면 직접 IP address 를 입력해 주어야 하기 때문에,자동할당된 IP가 변경될 때마다, 설정에 들어가서 매번 바꾸어 주어야 합니다. 왠만한 수준의 공유기들은 내부 연결된 장치에 배정하는 ip address 를 고정시키는 기능을 가지고 있습니다. (mac address 기반) 이 포스팅에서는 LG U+ 공유기 설정 변경방법을 공유 합니다. 1. 웹 브라우저를 통해 LG U+ 공유기 설정 페이지(http://192.168.219.1)에 접속합니다.아래 유무선 공유기를 클릭해 줍니다. 2. 암호를 입력하여 access 한후 "DH.. 더보기
printf / printk 에서 %p 사용방법 %p : 주로 변수가 가지고 있는 주소값을 출력하는데 사용함. - 변수가 저장된 주소값을 출력해주는 것이 아니라, 변수가 저장하고 있는 주소값을 출력해줌- 16진수 address 로 출력해줌.- 앞에 0x 를 붙이지 않아도 알아서 출력해줌.- 주소값을 가지고 있는 void* , char* 등은 그대로 출력unsigned char* data;printf("data(%p)\n" data);- 배열은 앞에 '&'를 붙여야 함.printf("%s() psrc[d]=%p, psrc[t]=%p\n", __func__, &psrc[d], &psrc[t]); 추가하고 싶은 내용%x 와 %p 의 출력 차이점. 더보기
virtual address to physical address (64bit linux) linux 64bit 에서 page address 변환에 대해서 한눈에 보기 쉽게 그려보았습니다. 사용할때는 꼭 출처를 명시해 주기 바랍니다. pde64_table = (pde64_t *)__va(BASE_TO_PAGE_ADDR(pdpe64_table->pd_base_addr) + (PDE64_INDEX(fault_addr)*sizeof(pde64_t))); if(!pde64_table->present) { uintptr_t tmp_pte64_table; tmp_pte64_table = (uintptr_t)petmem_smart_alloc_pages(map, (uintptr_t)NULL, (pte64_t *)NULL); memset((void *)__va(tmp_pte64_table), 0, PAGE_S.. 더보기
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.. 더보기
virtual address 와 physical address 를 서로 변환하기 static inline unsigned long virt_to_phys(volatile void * address) { return __pa(address); } static inline void * phys_to_virt(unsigned long address) { return __va(address); } 더보기
symbol table 로 code area 에서 함수 위치 찾기 readelf -s library.so 를 치면 symbol table 이 나온다. 9315: 000c3230 28 FUNC LOCAL DEFAULT 11 __GI_delete_module 9316: 00093188 540 FUNC LOCAL DEFAULT 11 __pathconf 9317: 0006ca08 952 FUNC LOCAL DEFAULT 11 __malloc 9318: 00059b88 236 FUNC LOCAL DEFAULT 11 _IO_padn_internal 9319: 000b4614 24 FUNC LOCAL DEFAULT 11 __read_nocancel # cat /proc/1456/maps 을 해서 나온 code 영역에서 40242000-4035b000 r-xp 00000000 8b:.. 더보기
readelf - 섹션 위치 한눈에 보기 readelf 에는 다음과 같은 기능이 있습니다. elf의 각 섹션들을 나열해 주고 크기와 속성을 보여줍니다. > readelf -l core.1455 Elf file type is CORE (Core file) Entry point 0x0 There are 79 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align NOTE 0x000a14 0x00000000 0x00000000 0x001dc 0x00000 0 LOAD 0x001000 0x2a000000 0x00000000 0x4d000 0x4d000 R E 0x1000 LOAD 0x04e000 0x2a0550.. 더보기