+/*
+ * GPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * 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.
+ *
+ * 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 COPYING file that accompanied this code.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * GPL HEADER END
+ */
+
#ifndef __LIBCFS_USER_MEM_H__
#define __LIBCFS_USER_MEM_H__
typedef struct page {
void *addr;
unsigned long index;
- struct list_head list;
+ cfs_list_t list;
unsigned long private;
/* internally used by liblustre file i/o */
#ifdef LIBLUSTRE_HANDLE_UNALIGNED_PAGE
int _managed;
#endif
- struct list_head _node;
+ cfs_list_t _node;
} cfs_page_t;
#define CFS_PAGE_SIZE (1UL << CFS_PAGE_SHIFT)
#define CFS_PAGE_MASK (~((__u64)CFS_PAGE_SIZE-1))
-cfs_page_t *cfs_alloc_pages(int mask, unsigned long order);
-void cfs_free_pages(cfs_page_t *pg, int what);
cfs_page_t *cfs_alloc_page(unsigned int flags);
void cfs_free_page(cfs_page_t *pg);
void *cfs_page_address(cfs_page_t *pg);
void *cfs_kmap(cfs_page_t *pg);
void cfs_kunmap(cfs_page_t *pg);
-#define __cfs_free_pages(pg, what) cfs_free_pages((pg), (what))
-
#define cfs_get_page(p) __I_should_not_be_called__(at_all)
#define cfs_page_count(p) __I_should_not_be_called__(at_all)
#define cfs_page_index(p) ((p)->index)
+#define cfs_page_pin(page) do {} while (0)
+#define cfs_page_unpin(page) do {} while (0)
/*
* Memory allocator
int size;
} cfs_mem_cache_t;
-#define SLAB_HWCACHE_ALIGN 0
+#define CFS_SLAB_HWCACHE_ALIGN 0
#define SLAB_DESTROY_BY_RCU 0
-#define SLAB_KERNEL 0
-#define SLAB_NOFS 0
+#define CFS_SLAB_KERNEL 0
+#define CFS_SLAB_NOFS 0
cfs_mem_cache_t *
cfs_mem_cache_create(const char *, size_t, size_t, unsigned long);
int cfs_mem_is_in_cache(const void *addr, const cfs_mem_cache_t *kmem);
/*
+ * NUMA allocators
+ */
+#define cfs_cpt_malloc(cptab, cpt, bytes, flags) \
+ cfs_alloc(bytes, flags)
+#define cfs_cpt_vmalloc(cptab, cpt, bytes) \
+ cfs_alloc(bytes)
+#define cfs_page_cpt_alloc(cptab, cpt, mask) \
+ cfs_alloc_page(mask)
+#define cfs_mem_cache_cpt_alloc(cache, cptab, cpt, gfp) \
+ cfs_mem_cache_alloc(cache, gfp)
+
+#define smp_rmb() do {} while (0)
+
+/*
* Copy to/from user
*/
-static inline int copy_from_user(void *a,void *b, int c)
+static inline int cfs_copy_from_user(void *a,void *b, int c)
{
memcpy(a,b,c);
return 0;
}
-static inline int copy_to_user(void *a,void *b, int c)
+static inline int cfs_copy_to_user(void *a,void *b, int c)
{
memcpy(a,b,c);
return 0;