linux核心的快取記憶體管理有時稱為『slab分配器』。因此,相關函式和型別在中宣告。
資料型別kmem_cache。
建立快取:
struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align,
unsigned long flags,
void (*ctor)(void *));
name:a string which is used in /proc/slabinfo to identify this cache. 與整個快取記憶體相關聯,其功能是保管一些指向該名稱的指標,而不是複製其內容,因此,驅動程式應該將指向靜態(通常可取直接字串)的指標傳遞給這個函式。名稱不能包含空白。
size:the size of objects to be created in this cache.
align:the required alignment for the objects.
flags:slab flags。是乙個掩碼。
/*
* flags to pass to kmem_cache_create().
* the ones marked debug are only valid if config_debug_slab is set.
*/#define slab_consistency_checks 0x00000100ul /* debug: perform (expensive) checks on alloc/free */
#define slab_red_zone 0x00000400ul /* debug: red zone objs in a cache */
#define slab_poison 0x00000800ul /* debug: poison objects */
#define slab_hwcache_align 0x00002000ul /* align objs on cache lines */
#define slab_cache_dma 0x00004000ul /* use gfp_dma memory */
#define slab_store_user 0x00010000ul /* debug: store the last owner for bug hunting */
#define slab_panic 0x00040000ul /* panic if kmem_cache_create() fails */
ctor:a constructor for the objects.
分配記憶體物件:
一旦某個物件的快取記憶體被建立,就可以呼叫kmem_cache_alloc從中分配記憶體物件。
void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags);
cachep:the cache to allocate from.就是剛建立的cache。
flags:和傳遞給kmalloc的相同。
釋放記憶體物件:
void kmem_cache_free(struct kmem_cache *cachep, void *objp)
cachep:是建立的cache。
objp:是通過kmem_cache_alloc分配記憶體的物件。
釋放快取:
如果驅動程式**中和快取記憶體有關的部分已經處理完了(乙個經典的情況是模組被解除安裝的時候),這時驅動程式應該釋放它的快取記憶體,函式如下:
void kmem_cache_destroy(struct kmem_cache *s);
linux DNS快取記憶體
配置名稱伺服器 本機ip 172.25.254.117 1 安裝 bind 軟體包 yum install y bind2 編輯 etc named.conf listen on port 53 開啟埠 allow query 允許訪問 forwarders 如果伺服器沒有這個位址就去訪問250 3...
快取記憶體DNS
dns 客戶端修改dns 服務端yum install bind y firewall cmd permanent add service dns firewall cmd reload setenforce 0 netstat antulpe grep named vim etc named.co...
快取記憶體DNS
yum install bind y systemctl start named 啟動dns服務 此時可能需要在虛擬機器中進行無規律的敲鍵盤,動滑鼠等操作 systemctl enable named firewall cmd add service dns 設定dns可通過火牆 step1 首先配...