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

📄 kmem.h

📁 linux 内核源代码
💻 H
字号:
/* * Copyright (c) 2000-2005 Silicon Graphics, Inc. * All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write the Free Software Foundation, * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */#ifndef __XFS_SUPPORT_KMEM_H__#define __XFS_SUPPORT_KMEM_H__#include <linux/slab.h>#include <linux/sched.h>#include <linux/mm.h>/* * General memory allocation interfaces */#define KM_SLEEP	0x0001u#define KM_NOSLEEP	0x0002u#define KM_NOFS		0x0004u#define KM_MAYFAIL	0x0008u#define KM_LARGE	0x0010u/* * We use a special process flag to avoid recursive callbacks into * the filesystem during transactions.  We will also issue our own * warnings, so we explicitly skip any generic ones (silly of us). */static inline gfp_tkmem_flags_convert(unsigned int __nocast flags){	gfp_t	lflags;	BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL|KM_LARGE));	if (flags & KM_NOSLEEP) {		lflags = GFP_ATOMIC | __GFP_NOWARN;	} else {		lflags = GFP_KERNEL | __GFP_NOWARN;		if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))			lflags &= ~__GFP_FS;	}	return lflags;}extern void *kmem_alloc(size_t, unsigned int __nocast);extern void *kmem_zalloc(size_t, unsigned int __nocast);extern void *kmem_zalloc_greedy(size_t *, size_t, size_t, unsigned int __nocast);extern void *kmem_realloc(void *, size_t, size_t, unsigned int __nocast);extern void  kmem_free(void *, size_t);/* * Zone interfaces */#define KM_ZONE_HWALIGN	SLAB_HWCACHE_ALIGN#define KM_ZONE_RECLAIM	SLAB_RECLAIM_ACCOUNT#define KM_ZONE_SPREAD	SLAB_MEM_SPREAD#define kmem_zone	kmem_cache#define kmem_zone_t	struct kmem_cachestatic inline kmem_zone_t *kmem_zone_init(int size, char *zone_name){	return kmem_cache_create(zone_name, size, 0, 0, NULL);}static inline kmem_zone_t *kmem_zone_init_flags(int size, char *zone_name, unsigned long flags,		     void (*construct)(kmem_zone_t *, void *)){	return kmem_cache_create(zone_name, size, 0, flags, construct);}static inline voidkmem_zone_free(kmem_zone_t *zone, void *ptr){	kmem_cache_free(zone, ptr);}static inline voidkmem_zone_destroy(kmem_zone_t *zone){	if (zone)		kmem_cache_destroy(zone);}extern void *kmem_zone_alloc(kmem_zone_t *, unsigned int __nocast);extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast);static inline intkmem_shake_allow(gfp_t gfp_mask){	return (gfp_mask & __GFP_WAIT) != 0;}#endif /* __XFS_SUPPORT_KMEM_H__ */

⌨️ 快捷键说明

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