原创 在Ubuntu上下載、編譯和安裝Android最新內核源代碼(Linux Kernel

  在前一篇文章提到,從源代碼樹下載下來的最新Android源代碼,是不包括內核代碼的,也就是Android源代碼工程默認不包含Linux Kernel代碼,而是使用預先編譯好的內核,也就是prebuilt/android-arm/ker

原创 物理內存的分配

物理內存的分配在內核分配內存時,必須記錄頁幀的已分配或空閒狀態,以免兩個進程使用同樣的內存區域。由於內存分配和釋放非常頻繁,內核還必須保證相關操作儘快完成。內核可以只分配完整的頁幀。將內存劃分爲更小的部分的工作,則委託給用戶空間中的標準庫

原创 Linux內核同步機制API函數:宏:spin_lock_init ( )

宏定義:       在內核源碼中的位置:linux-2.6.30/include/linux/spinlock.h 宏定義格式:# define spin_lock_init(lock)                      

原创 typecheck()

typeof是取變量的類型 如果 int x; typecheck(double,x); 展開之後就是 double __dummy; int __dummy2; (void)(&__dummy == &__dummy

原创 7z報錯 "Can't allocate required memory"的解決方法

錯誤: 7-Zip [32] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16 p7zip Version 15.09 beta (locale=en_US.UT

原创 Android深入淺出之Binder機制

一 說明         Android系統最常見也是初學者最難搞明白的就是Binder了,很多很多的Service就是通過Binder機制來和客戶端通訊交互的。所以搞明白Binder的話,在很大程度上就能理解程序運行的流程。      

原创 driver_register 理解

我們首先來完整地看下driver_register函數定義: int driver_register(struct device_driver *drv) { int ret; struct device_driver

原创 Android上C++對象的自動回收機制分析

本文摘要 C++ 沒有像Java那樣的內建的對象自動回收機制,new創建的對象沒有delete,會一直存在於內存中。對象已經不再使用,但是如果忘記delete,會 造成內存資源的泄露。 1.       背景 C++ 沒有像J

原创 linux編譯信息重定向

引用地址:http://blog.chinaunix.net/article.ph...61&blogId=4921 Linux shell I/O重定向詳解  I/O重定向詳解及應用實例 1、 基本概念(這是理解後面的知識的前提,請務必

原创 copy_from_user && copy_to_user

在內核的學習中會遇到很多挺有意思的函數,而且能沿着一個函數扯出來很多個相關的函數。copy_to_user和copy_from_user就是在進行驅動相關程序設計的時候,要經常遇到的兩個函數。由於內核空間與用戶空間的內存不能直接互訪,

原创 vim 常用用法

在vim設置標記,目的就是爲了快速定位,提高效率。   1、標記命令mark    在vim命令行模式下用help mark 查看mark命令的幫助手冊   2、標記符   在文本中使用26 個標記符(a到z)。這些標記是不

原创 從spin_lock到spin_lock_irqsave

Spinlock的目的是用來同步SMP中會被多個CPU同時存取的變量。在Linux中,普通的spinlock由於不帶額外的語義,使用起來反而要非常小

原创 device_register

原文地址:我對linux的理解之device_register 作者:amingriyue ----------------------------

原创 sdio 驅動

1 確定關注範圍 根據公司代碼編譯出的原始.o 文件,可以間接確定真正起作用的源文件包括(也可以通過 Makefile 來直接確定)。 1) <kernel/driver/mmc/card>  card目錄下的驅動文件是卡的設備驅動,也

原创 tasklet、wait_queue、completion、work_queue用法總結

對於內核中常用的中斷處理機制做一些總結,方便在合適的時候採用合適的機制。   tasklet 和 work_queue 是延期執行工作的機制,實現基於軟中斷;completion的實現基於wait_queue。 —————————————