1 /* 2 * GPL HEADER START 3 * 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 only, 8 * as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License version 2 for more details (a copy is included 14 * in the LICENSE file that accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License 17 * version 2 along with this program; If not, see 18 * http://www.gnu.org/licenses/gpl-2.0.html 19 * 20 * GPL HEADER END 21 */ 22 /* 23 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 /* 27 * This file is part of Lustre, http://www.lustre.org/ 28 * Lustre is a trademark of Sun Microsystems, Inc. 29 * 30 * libcfs/include/libcfs/libcfs_prim.h 31 * 32 * General primitives. 33 * 34 */ 35 36 #ifndef __LIBCFS_PRIM_H__ 37 #define __LIBCFS_PRIM_H__ 38 39 /* 40 * Memory 41 */ 42 #if BITS_PER_LONG == 32 43 /* limit to lowmem on 32-bit systems */ 44 #define NUM_CACHEPAGES \ 45 min(totalram_pages, 1UL << (30 - PAGE_SHIFT) * 3 / 4) 46 #else 47 #define NUM_CACHEPAGES totalram_pages 48 #endif 49 memory_pressure_get(void)50static inline unsigned int memory_pressure_get(void) 51 { 52 return current->flags & PF_MEMALLOC; 53 } 54 memory_pressure_set(void)55static inline void memory_pressure_set(void) 56 { 57 current->flags |= PF_MEMALLOC; 58 } 59 memory_pressure_clr(void)60static inline void memory_pressure_clr(void) 61 { 62 current->flags &= ~PF_MEMALLOC; 63 } 64 cfs_memory_pressure_get_and_set(void)65static inline int cfs_memory_pressure_get_and_set(void) 66 { 67 int old = memory_pressure_get(); 68 69 if (!old) 70 memory_pressure_set(); 71 return old; 72 } 73 cfs_memory_pressure_restore(int old)74static inline void cfs_memory_pressure_restore(int old) 75 { 76 if (old) 77 memory_pressure_set(); 78 else 79 memory_pressure_clr(); 80 } 81 #endif 82