Release 4.10 fs/xfs/kmem.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>
#include <linux/vmalloc.h>
/*
* General memory allocation interfaces
*/
typedef unsigned __bitwise xfs_km_flags_t;
#define KM_SLEEP ((__force xfs_km_flags_t)0x0001u)
#define KM_NOSLEEP ((__force xfs_km_flags_t)0x0002u)
#define KM_NOFS ((__force xfs_km_flags_t)0x0004u)
#define KM_MAYFAIL ((__force xfs_km_flags_t)0x0008u)
#define KM_ZERO ((__force xfs_km_flags_t)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_t
kmem_flags_convert(xfs_km_flags_t flags)
{
gfp_t lflags;
BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL|KM_ZERO));
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;
}
if (flags & KM_ZERO)
lflags |= __GFP_ZERO;
return lflags;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
nathan scott | nathan scott | 34 | 38.64% | 4 | 40.00% |
christoph hellwig | christoph hellwig | 23 | 26.14% | 2 | 20.00% |
stephen lord | stephen lord | 16 | 18.18% | 1 | 10.00% |
gu zheng | gu zheng | 12 | 13.64% | 1 | 10.00% |
al viro | al viro | 3 | 3.41% | 2 | 20.00% |
| Total | 88 | 100.00% | 10 | 100.00% |
extern void *kmem_alloc(size_t, xfs_km_flags_t);
extern void *kmem_zalloc_large(size_t size, xfs_km_flags_t);
extern void *kmem_realloc(const void *, size_t, xfs_km_flags_t);
static inline void kmem_free(const void *ptr)
{
kvfree(ptr);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
yalin wang | yalin wang | 10 | 58.82% | 1 | 20.00% |
nathan scott | nathan scott | 5 | 29.41% | 2 | 40.00% |
barry naujok | barry naujok | 1 | 5.88% | 1 | 20.00% |
christoph hellwig | christoph hellwig | 1 | 5.88% | 1 | 20.00% |
| Total | 17 | 100.00% | 5 | 100.00% |
extern void *kmem_zalloc_greedy(size_t *, size_t, size_t);
static inline void *
kmem_zalloc(size_t size, xfs_km_flags_t flags)
{
return kmem_alloc(size, flags | KM_ZERO);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
gu zheng | gu zheng | 24 | 100.00% | 1 | 100.00% |
| Total | 24 | 100.00% | 1 | 100.00% |
/*
* Zone interfaces
*/
#define KM_ZONE_HWALIGN SLAB_HWCACHE_ALIGN
#define KM_ZONE_RECLAIM SLAB_RECLAIM_ACCOUNT
#define KM_ZONE_SPREAD SLAB_MEM_SPREAD
#define KM_ZONE_ACCOUNT SLAB_ACCOUNT
#define kmem_zone kmem_cache
#define kmem_zone_t struct kmem_cache
static inline kmem_zone_t *
kmem_zone_init(int size, char *zone_name)
{
return kmem_cache_create(zone_name, size, 0, 0, NULL);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
christoph hellwig | christoph hellwig | 18 | 62.07% | 2 | 50.00% |
nathan scott | nathan scott | 11 | 37.93% | 2 | 50.00% |
| Total | 29 | 100.00% | 4 | 100.00% |
static inline kmem_zone_t *
kmem_zone_init_flags(int size, char *zone_name, unsigned long flags,
void (*construct)(void *))
{
return kmem_cache_create(zone_name, size, 0, flags, construct);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
nathan scott | nathan scott | 40 | 93.02% | 1 | 33.33% |
christoph lameter | christoph lameter | 2 | 4.65% | 1 | 33.33% |
christoph hellwig | christoph hellwig | 1 | 2.33% | 1 | 33.33% |
| Total | 43 | 100.00% | 3 | 100.00% |
static inline void
kmem_zone_free(kmem_zone_t *zone, void *ptr)
{
kmem_cache_free(zone, ptr);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
christoph hellwig | christoph hellwig | 12 | 54.55% | 2 | 50.00% |
nathan scott | nathan scott | 10 | 45.45% | 2 | 50.00% |
| Total | 22 | 100.00% | 4 | 100.00% |
static inline void
kmem_zone_destroy(kmem_zone_t *zone)
{
if (zone)
kmem_cache_destroy(zone);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
christoph hellwig | christoph hellwig | 12 | 60.00% | 2 | 40.00% |
nathan scott | nathan scott | 7 | 35.00% | 2 | 40.00% |
alexey dobriyan | alexey dobriyan | 1 | 5.00% | 1 | 20.00% |
| Total | 20 | 100.00% | 5 | 100.00% |
extern void *kmem_zone_alloc(kmem_zone_t *, xfs_km_flags_t);
static inline void *
kmem_zone_zalloc(kmem_zone_t *zone, xfs_km_flags_t flags)
{
return kmem_zone_alloc(zone, flags | KM_ZERO);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
gu zheng | gu zheng | 16 | 64.00% | 1 | 16.67% |
christoph hellwig | christoph hellwig | 5 | 20.00% | 2 | 33.33% |
nathan scott | nathan scott | 3 | 12.00% | 2 | 33.33% |
al viro | al viro | 1 | 4.00% | 1 | 16.67% |
| Total | 25 | 100.00% | 6 | 100.00% |
#endif /* __XFS_SUPPORT_KMEM_H__ */
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
nathan scott | nathan scott | 176 | 43.89% | 7 | 33.33% |
christoph hellwig | christoph hellwig | 107 | 26.68% | 3 | 14.29% |
gu zheng | gu zheng | 56 | 13.97% | 1 | 4.76% |
al viro | al viro | 16 | 3.99% | 2 | 9.52% |
stephen lord | stephen lord | 16 | 3.99% | 1 | 4.76% |
dave chinner | dave chinner | 11 | 2.74% | 1 | 4.76% |
yalin wang | yalin wang | 10 | 2.49% | 1 | 4.76% |
vladimir davydov | vladimir davydov | 4 | 1.00% | 1 | 4.76% |
christoph lameter | christoph lameter | 2 | 0.50% | 1 | 4.76% |
barry naujok | barry naujok | 1 | 0.25% | 1 | 4.76% |
paul jackson | paul jackson | 1 | 0.25% | 1 | 4.76% |
alexey dobriyan | alexey dobriyan | 1 | 0.25% | 1 | 4.76% |
| Total | 401 | 100.00% | 21 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.