1.在你的所要使用的模組中包含標頭檔案
#include
2.將rb_node嵌入到自己結構體中
struct my_data;
3.定義rb樹的根,一般為全域性變數
struct rb_root my_root_tree =rb_root;
4.實現自己的查詢,遍歷,插入等函式
比較函式定義:
int compare_id(char* key1, char *key2)
查詢函式:
struct my_data* my_search(struct rb_root *root, char *key)
return
null;
}
插入函式:
int my_insert(struct rb_root *root, struct my_data *
data)
/* add new node and rebalance tree. */
rb_link_node(&
data
->node, parent, tmp);
rb_insert_color(&
data
->node, root);
return
0;}
刪除函式:
void my_delete(struct rb_root *root, char *key)
rb_erase(&data->node, root);
free(data);
}
遍歷函式:
void print_rbtree(struct rb_root *tree)
}
完整例項: Linux核心基礎
linux系統執行的應用程式通過系統呼叫來與核心通訊。應用程式通常呼叫庫函式 比如c庫函式 再有庫函式通過系統呼叫介面,讓核心帶其完成各種不同的任務。下面這張圖顯示的就是應用程式,核心和硬體之間的關係 在任何時間點上我們都可以將每個處理器的活動概括為以下三者之一 1.執行於使用者空間,執行使用者程序...
Linux核心基礎
linux系統執行的應用程式通過系統呼叫來與核心通訊。應用程式通常呼叫庫函式 比如c庫函式 再有庫函式通過系統呼叫介面,讓核心帶其完成各種不同的任務。下面這張圖顯示的就是應用程式,核心和硬體之間的關係 在任何時間點上我們都可以將每個處理器的活動概括為以下三者之一 1.執行於使用者空間,執行使用者程序...
Linux 核心基礎
1 linux 分為使用者空間和核心空間的作用是為了安全性 1 arm的7種工作模式 2 x86實現有ring0 ring3的級別 ring0下,可以執行特權指令,核心 執行在ring0 使用者 執行在ring3 3 通過系統呼叫和硬體中斷能完成從使用者空間到核心空間的轉換 2 linux核心架構 ...