⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slab_def.h

📁 Axis 221 camera embedded programing interface
💻 H
字号:
#ifndef _LINUX_SLAB_DEF_H#define	_LINUX_SLAB_DEF_H/* * Definitions unique to the original Linux SLAB allocator. * * What we provide here is a way to optimize the frequent kmalloc * calls in the kernel by selecting the appropriate general cache * if kmalloc was called with a size that can be established at * compile time. */#include <linux/init.h>#include <asm/page.h>		/* kmalloc_sizes.h needs PAGE_SIZE */#include <asm/cache.h>		/* kmalloc_sizes.h needs L1_CACHE_BYTES */#include <linux/compiler.h>/* Size description struct for general caches. */struct cache_sizes {	size_t		 	cs_size;	struct kmem_cache	*cs_cachep;	struct kmem_cache	*cs_dmacachep;};extern struct cache_sizes malloc_sizes[];static inline void *kmalloc(size_t size, gfp_t flags){	if (__builtin_constant_p(size)) {		int i = 0;#define CACHE(x) \		if (size <= x) \			goto found; \		else \			i++;#include "kmalloc_sizes.h"#undef CACHE		{			extern void __you_cannot_kmalloc_that_much(void);			__you_cannot_kmalloc_that_much();		}found:		return kmem_cache_alloc((flags & GFP_DMA) ?			malloc_sizes[i].cs_dmacachep :			malloc_sizes[i].cs_cachep, flags);	}	return __kmalloc(size, flags);}static inline void *kzalloc(size_t size, gfp_t flags){	if (__builtin_constant_p(size)) {		int i = 0;#define CACHE(x) \		if (size <= x) \			goto found; \		else \			i++;#include "kmalloc_sizes.h"#undef CACHE		{			extern void __you_cannot_kzalloc_that_much(void);			__you_cannot_kzalloc_that_much();		}found:		return kmem_cache_zalloc((flags & GFP_DMA) ?			malloc_sizes[i].cs_dmacachep :			malloc_sizes[i].cs_cachep, flags);	}	return __kzalloc(size, flags);}#ifdef CONFIG_NUMAextern void *__kmalloc_node(size_t size, gfp_t flags, int node);static inline void *kmalloc_node(size_t size, gfp_t flags, int node){	if (__builtin_constant_p(size)) {		int i = 0;#define CACHE(x) \		if (size <= x) \			goto found; \		else \			i++;#include "kmalloc_sizes.h"#undef CACHE		{			extern void __you_cannot_kmalloc_that_much(void);			__you_cannot_kmalloc_that_much();		}found:		return kmem_cache_alloc_node((flags & GFP_DMA) ?			malloc_sizes[i].cs_dmacachep :			malloc_sizes[i].cs_cachep, flags, node);	}	return __kmalloc_node(size, flags, node);}#endif	/* CONFIG_NUMA */#endif	/* _LINUX_SLAB_DEF_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -