原创 android emulator虛擬設備分析第五篇之pipe上的opengles

一、概述 據說qemu的gpu的實現,運行起來非常慢。所以android emulator提供了一種use host gpu的方式,guest os可以使用host機器的opengl庫去畫圖,速度快很多。 guest os把畫圖的命令通過

原创 qemu QOM(qemu object model)和設備模擬

本文所用qemu爲1.5版本的,不是android emulator的。 之前幾篇文章介紹的都是android emulator中的設備模擬。一些是android自己加的platform bus上的虛擬設備;一些是qemu自己的虛擬設備,

原创 美娜多(manado)潛水遊記

一、美娜多介紹    印尼美娜多,在赤道附近,東八區時區,是五大潛水機構評價第一的潛水勝地,據說擁有太平洋70%的生物物種。此行親眼所見的有:一堆海龜,遍地的彩色珊瑚,一堆藍海星,若干黃海星、白海星,還有沒有節操的粒皮瘤海星,小丑魚,天使

原创 android build system中product的繼承(inherit-product),加載(import-products)和選擇(lunch)

一、前言 android源碼中有很多product,進行配置時,會將源碼中所有product的信息都讀進來(不用的product的信息也會被讀進來),其中每個product,可以包含如下信息 # # Functions for inc

原创 android qemu-kvm i8254 pit虛擬設備

ubuntu12.04下使用android emulator,啓用kvm加速,模擬i8254定時器的代碼比較舊,對應於qemu0.14或者之前的版本,這時還沒有QOM(qemu object model)模型,虛擬設備的代碼是比較簡單的。

原创 ELF函數重定位問題

一、背景 ld將.o連接爲.so或者可執行程序,以及可執行程序使用.so時,都會遇到函數重定位的問題,本文對該問題進行分析。 二、靜態連接 代碼示例: x.c: #include <stdio.h> void foo() {

原创 qemu QLIST數據結構

queue.h中是qemu使用到的一些基礎的數據結構,比如QLIST,QSLIST,QSIMPLEQ,QTAILQ。 本文主要介紹QLIST的數據結構,其它幾種數據結構與之類似。 需要注意entry是嵌入在其他結構體(elm)中使用,Q

原创 使用libhybris,glibc和bionic共存時的TLS衝突的問題

如無特殊說明,系統爲linux,架構爲x86 32bit,使用glibc,通過libhybris調用android bionic的驅動。android版本5.1.0_r1。 一、什麼是TLS TLS的全稱是Thread Local St

原创 android qemu-kvm內存管理和IO映射

爲什麼內存管理和IO映射要放一起呢?因爲IO映射有memory map io(MMIO)和port map io(PMIO)兩種,其中MMIO和內存管理有關的。 MMIO和普通內存的訪問的彙編指令是相同的;PMIO有自己的彙編指令。 kv

原创 android qemu-kvm i8259 中斷控制器虛擬設備

ubuntu12.04下使用android emulator,啓用kvm加速,模擬i8259中斷控制器的代碼比較舊,對應於qemu0.14或者之前的版本,這時還沒有QOM(qemu object model)模型,虛擬設備的代碼是比較簡單

原创 ld.gold使用指南

一、背景 gcc將源碼編譯爲.o,然後linker將.o連接爲.so或者可執行程序,linker可以使用ld.bfd、ld.gold或者lld。 ld.bfd在binutils軟件包中,是最常用的linker;ld.gold也在binu

原创 android emulator虛擬設備分析第三篇之pipe上的qemud service

一、概述 本篇和第二篇是強相關的,需要結合第二篇一起看。 以boot-properties爲例,注意不需要看ANDROID-QEMUD.TXT,這個是和guest os中的qemud進行相關的,已廢棄。 啓動emulator時,有一個參

原创 qemu參數解析

代碼版本:qemu1.5 一、qemu有哪些參數 1、qemu-options.hx文件 qemu可用參數位於qemu-options.hx文件中,例如: DEF("kernel", HAS_ARG, QEMU_OPTION_kern

原创 android emulator虛擬設備分析第四篇之framebuffer

一、概述 framebuffer是啥就不用詳細說了吧,需要注意的是android emulator的framebuffer貌似用處不大,因爲我之前用android emulator運行x86鏡像時,可能是分辨率選得太大了,/dev/gra

原创 ubuntu12.04環境下使用kvm ioctl接口實現最簡單的虛擬機

英文原文:https://lwn.net/Articles/658511/。本文在翻譯的基礎上加了一些自己的理解。 qemu、virtual box、vmware、xen都是虛擬機,一般用戶接觸到的virtual box和vmware比