RISC-V Linux (1)

RISC-V 最近打算做 Linux Kernel upstreaming。順便找了一下資源並測試一下。主要資 訊在官網都可以找到:

大平台小程序 - eBPF

BPF virutal machine in userspace

Linux 4.7 導入 hist trigger tracing

Linux-4.7 tracing 導入 hist trigger[1][2],簡單來說就是可針對 trace event 裡提 供的數據,取出任意欄位來統計製出做 histgram。舉例來說 kernel 的 kmalloc event 記錄以下數據,

透過 buildroot 編譯 sar

想要在 buildroot 下編譯 sysstat 來使用。執行 sar 時一直遇到一個錯誤訊息,

kprobe 實現機制

kprobe 允許使用者透過編寫 kernel module,動態地對想要 probe 的位址註冊處理函式 。kernel 執行到這個指令時,會去呼叫所註冊的處理函數。

自建 buildroot package

最近想拿 buildroot 來測 Linux tracing 的相關機制。大概做一下使用記錄。首先是要 加一個自己的 local package,與原生 package 不同的地方,不需要去 official site 抓 tar ball。

編譯 kernel ebpf 的範例

kernel 本身有自帶 ebpf 的範例程式,該程式中將所有 ebpf 會用到的相關物件放在 xxx_kern.o,經由 LLVM 編譯成 ebpf 的 bytecode object,再透過 kernel syscall 載入執行。

mbed-OS 開發記錄

最近 ARM 釋出了 mbed-OS source code 在 github 上。大概做了一些評估。由於還在 beta 版,其實開發途中遇到很多問題。把問題大致整理如下,

Linux concurrency - 5: Spinlock, the busy-waiting lock

spinlock 基本作法就是 busy waiting loop,一直等到指定的 lock 被釋放之後,取得 lock 才繼續進行 critical section 的操作。由於深度依賴 atomic instruction 的支援 ,primitive 真正的實現都是在每個 architecture 中 (arch/ARCH/include/asm/spinlock.h),原始的實作有如 [20] 中的 pseudo code,

Linux concurrency - 4: Kernel atomic API

Linux kernel 為整數資料提供兩種簡單的 atomic 操作,一種是 atomic counter,另一 是 atomic bitmask operation。