原创 android 使用ninja編譯單個模塊

適用android8/9/10 在android源碼根目錄下source.lunch後, ./prebuilts/build-tools/linux-x86/bin/ninja -f    ./out/combined-******.n

原创 android 裏邊添加hidl服務

  筆者在Android 9 通過以下方式添加hidl服務,理論上對Android 8/9/10 都適用, 對於爲何要有hidl這個東西以及如何添加hidl服務,google在https://source.android.google.c

原创 編譯出現 unused parameter [-Werror,-Wunused-parameter]

編譯時出現  unused parameter [-Werror,-Wunused-parameter] 可通過在 cflags裏邊 添加  "-Wno-unused-parameter" 進行解決  

原创 linux epoll 源碼分析

本文章源碼基於kernel 5.5版本,主要分析epoll在kernel的實現原理,主要源碼在 kernel/fs/eventpoll.c。 目錄 一,關鍵結構體 二,epoll啓動 三,epoll_create 四,epoll_ctl

原创 深入分析Android SensorService

  四個多月前就想寫這個了文章了,一直沒空寫,今天把有空就寫一下吧。本篇文章主要內容如下 目錄 1,Android 各模塊關係基本流程圖 2, SensorService啓動 3,  應用註冊一個sensor流程 4, SensorSer

原创 linux kernel prink 打印格式

           int                      %d or %x         unsigned int             %u or %x         long                  

原创 linux kernel workqueue 簡單使用

struct work_struct work; struct workqueue_struct* work_wq; static void run_work(struct work_str

原创 linux kerner 獲取當前時間和時間差

  struct timeval current_time; struct timeval last_time; unsigned long distance_time = 0; do_gettimeofday(&last_t

原创 Android 打印調用棧

1,java Log.d(TAG, Log.getStackTraceString(new Throwable())); 2,c++   #include <utils/CallStack.h> android::CallStack

原创 linux input event簡單使用

最近需要在kernel  的驅動裏邊將事件傳到用戶空間,打算用input子系統做,用戶空間開一個線程用epoll方式來讀取數據, 記錄一下如何快速簡單使用input子系統上報事件。 //定義一個input_dev 類型結構體變量 sta

原创 linux device tree 摘要

1, dtsi與dts的關係 dtsi相當於c語言的.h頭文件,放置soc共有的內容和各machine共同的內容, 一個.dts文件對應一個ARM的machine,可以include 需要的dtsi文件。 並且dtsi也可以include

原创 Android SensorManager,SystemSensorManager,SensorService調用過程分析

本文主要分析android 在應用層register一個sensor後從應用層調用到framework SensorService的過程。版本:android 8.0.0,abdroid 8.1.0大致調用順序爲:appliction =

原创 Android Framework SensorService 分析

1 SensorService  的啓動1.1 SensorService:onFirsrRef()SensorService 運行在 system_server 裏邊,在android/frameworks/base/services/

原创 Android的 google hal層 sensor分析

分析的Android版本爲:Android 8.0,Android 8.11.,google-hal層的sensor作爲一個server在運行,通過ps |grep sensor可以看到如下進程名字,通過hidl機制與framework的

原创 Android C++獲取線程id,進程id

Android 在c++代碼裏邊獲取pid,tid:#include <sys/syscall.h> int tid = (int)syscall(SYS_gettid); int pid = (int)syscall(SYS_getp