原创 給10^7個數據量的磁盤文件排序

前奏     經過幾天的痛苦沉思,最終決定,把原程序員面試題狂想曲系列正式更名爲程序員編程藝術系列,同時,狂想曲創作組更名爲編程藝術室。之所以要改名,我們考慮到三點:1、爲面試服務不能成爲我們最終或最主要的目的,2、我更願把解答一

原创 linux設備驅動--globalmem字符設備框架分析

目錄(?)[+] linux設備驅動--globalmem字符設備框架分析 有不對,不足,需要改正的地方還望大家指出,而且希望結識志同道合的朋友一起學習技術,共同進步. 功能:    1.設備驅動開發詳解-globa

原创 虛擬地址和物理地址的含義

  虛擬地址和物理地址的概念     CPU通過地址來訪問內存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內存管理單元),或者有MMU但沒有啓用,CPU核在取指令或訪問內存

原创 Linux 虛擬地址與物理地址的映射關係分析

  目錄(?)[+] 虛擬空間進程虛擬地址的組織 1 虛擬空間用戶空間2 內存區間系統物理地址的組織 1 用戶空間頁面目錄映射關係2用戶空間的映射3內核空間虛擬地址的映射相關數據結構關係圖 源碼版本 2.4.0 1. 虛擬空間

原创 內核工具 – Sparse 簡介

  Sparse是內核代碼靜態分析工具, 能夠幫助我們找出代碼中的隱患. 主要內容: Sparse 介紹Sparse 使用方法Sparse

原创 linux中字符串轉換函數 simple_strtoul

Linux內核中提供的一些字符串轉換函數: lib/vsprintf.c [html] view plaincopy  1. unsigned long long simple_strtoull(const cha

原创 Android中對標準內核的按鍵映射以及按鍵驅動

  Linux內核的平臺代碼的按鍵定義如下: /* GPIO_KEY for Tablet */ static struct gpio_keys_button tablet_gpio_keys_buttons[] = { [0] = {

原创 虛擬地址、線性地址和物理地址之間的關係

  《Linux內核完全剖析—基於0.12內核》第5章Linux內核體系結構,本章首先概要介紹了Linux內核的編制模式和體系結構,然後詳細描述了Linux 內核源代碼目錄的組織形式以及子目錄中各個代碼文件的主要功能以及基本調用的層次關

原创 enable_irq_wake()

低功耗模式 實現你所有驅動的supend和resume函數.註冊一箇中斷喚醒源,一般是GPIO,RTC中斷 .然後調用echo mem > state將系統掛起到內存中,這時候SDRAM在進行self-refresh的動作.基本電源的消

原创 u盤在linux系統下文件只讀方式的解決方案

  我用的時ubuntu系統,經常使用u盤來傳送文件,最近不知道爲什麼,u盤在window可以正常使用,但是到linux下文件就變成了只讀方面了,沒法進行復制,粘貼了.上網查找,發現方法比較簡單,經過改變,變得更加實用的.所以記錄下來

原创 Configure交叉編譯

交叉編譯某個Application 或者 Library時,通常需要 ./configure 來生成對應的 Makefile ./configure 最關鍵的三個選項是: --host=HOST 是指定軟件運行的系統平臺.如果沒有指定,將

原创 解決OpenVPN在編譯時的依賴問題

在其官網下載最新版本的源碼包,解壓後按開始編譯 $ ./configure $ make $ sudo make install configure 過程中會出現相關依賴未安裝的錯誤提示 configure: error: openssl

原创 Linux 命令開啓V-P-N

在Linux的世界裏,不像是在Win下,可以透過圖形化界面很方便的配置V-P-N ,更多的是通過命令行模式。那接下來我們介紹一下如何通過命令 來配置V-P-N。 我們需要借用 pptpsetup 這個command,pptp一般是系統中自

原创 Android 指令打開BT、WIFI

某些時候我們不想通過手動打開某些功能,比如我們在測試某些自動化功能時,這個時候只有透過命令了, 例如BT,WIFI一些常用的功能: BT on: $adb shell am start -a android.bluetooth.adap

原创 OpenJDK 1.8的安裝,build Android N

以ubuntu14.04LTS 64位爲例: sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-j