X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=libcfs%2Finclude%2Flibcfs%2Flinux%2Flinux-mem.h;h=8fb2184a3c9dc4b8b49435ee0d67f8ca2e425950;hp=fa4ba3d3ae72312fd6efc8c74ec9fd276a3bbd7d;hb=3dcf18d3;hpb=e1b3d71a27c166bebd26ab33f7299c41bd75dab5 diff --git a/libcfs/include/libcfs/linux/linux-mem.h b/libcfs/include/libcfs/linux/linux-mem.h index fa4ba3d..8fb2184 100644 --- a/libcfs/include/libcfs/linux/linux-mem.h +++ b/libcfs/include/libcfs/linux/linux-mem.h @@ -1,25 +1,41 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2001 Cluster File Systems, Inc. + * GPL HEADER START * - * This file is part of Lustre, http://www.lustre.org. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. * - * Lustre is distributed in the hope that it will 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. + * This program is distributed in the hope that it will 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 version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * - * Basic library routines. + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + * GPL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. * + * libcfs/include/libcfs/linux/linux-mem.h + * + * Basic library routines. */ #ifndef __LIBCFS_LINUX_CFS_MEM_H__ @@ -29,14 +45,17 @@ #error Do not #include this file directly. #include instead #endif -#ifdef __KERNEL__ -# include -# include -# include -# include -# ifdef HAVE_MM_INLINE -# include -# endif +#ifndef __KERNEL__ +#error This include is only for kernel use. +#endif + +#include +#include +#include +#include +#ifdef HAVE_MM_INLINE +# include +#endif typedef struct page cfs_page_t; #define CFS_PAGE_SIZE PAGE_CACHE_SIZE @@ -91,6 +110,10 @@ extern void __cfs_free_pages(cfs_page_t *page, unsigned int order); #define __cfs_free_page(page) __cfs_free_pages(page, 0) #define cfs_free_page(p) __free_pages(p, 0) +#define libcfs_memory_pressure_get() (current->flags & PF_MEMALLOC) +#define libcfs_memory_pressure_set() do { current->flags |= PF_MEMALLOC; } while (0) +#define libcfs_memory_pressure_clr() do { current->flags &= ~PF_MEMALLOC; } while (0) + /* * In Linux there is no way to determine whether current execution context is * blockable. @@ -110,6 +133,7 @@ extern cfs_mem_cache_t * cfs_mem_cache_create (const char *, size_t, size_t, uns extern int cfs_mem_cache_destroy ( cfs_mem_cache_t * ); extern void *cfs_mem_cache_alloc ( cfs_mem_cache_t *, int); extern void cfs_mem_cache_free ( cfs_mem_cache_t *, void *); +extern int cfs_mem_is_in_cache(const void *addr, const cfs_mem_cache_t *kmem); /* */ @@ -117,13 +141,4 @@ extern void cfs_mem_cache_free ( cfs_mem_cache_t *, void *); #define CFS_MMSPACE_OPEN do { __oldfs = get_fs(); set_fs(get_ds());} while(0) #define CFS_MMSPACE_CLOSE set_fs(__oldfs) -#else /* !__KERNEL__ */ -#ifdef HAVE_ASM_PAGE_H -#include /* needed for PAGE_SIZE - rread */ -#endif - -#include -/* __KERNEL__ */ -#endif - #endif /* __LINUX_CFS_MEM_H__ */