X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Fuser-mem.c;h=615fa000a0cb28069fda668a8cbc6b7d68ce0419;hb=0c00b4a10c951a7a5cba075a3e8181662dab50b8;hp=6fac6145a8f0093214b4fbc9f204d83d673e9d27;hpb=0f8dca08a4f68cba82c2c822998ecc309d3b7aaf;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/user-mem.c b/libcfs/libcfs/user-mem.c index 6fac614..615fa00 100644 --- a/libcfs/libcfs/user-mem.c +++ b/libcfs/libcfs/user-mem.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -45,67 +43,41 @@ #include -#ifdef __linux__ -#include /* memalign declared here on linux */ -#endif - /* * Allocator */ -cfs_page_t *cfs_alloc_pages(int mask, unsigned long order) +cfs_page_t *cfs_alloc_page(unsigned int flags) { cfs_page_t *pg = malloc(sizeof(*pg)); + int rc = 0; if (!pg) return NULL; -#if 0 //#ifdef MAP_ANONYMOUS - pg->addr = mmap(0, PAGE_SIZE << order, PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); -#elif defined (__DARWIN__) - pg->addr = valloc(CFS_PAGE_SIZE << order); + pg->addr = NULL; + +#if defined (__DARWIN__) + pg->addr = valloc(CFS_PAGE_SIZE); #elif defined (__WINNT__) - pg->addr = pgalloc(order); + pg->addr = pgalloc(0); #else - pg->addr = memalign(CFS_PAGE_SIZE, CFS_PAGE_SIZE << order); + rc = posix_memalign(&pg->addr, CFS_PAGE_SIZE, CFS_PAGE_SIZE); #endif - - if (!pg->addr) { + if (rc != 0 || pg->addr == NULL) { free(pg); return NULL; } return pg; } -void cfs_free_pages(cfs_page_t *pg, int what) +void cfs_free_page(cfs_page_t *pg) { -#if 0 //#ifdef MAP_ANONYMOUS - munmap(pg->addr, PAGE_SIZE); -#elif defined (__WINNT__) +#if defined (__WINNT__) pgfree(pg->addr); #else free(pg->addr); #endif - free(pg); -} -cfs_page_t *cfs_alloc_page(unsigned int flags) -{ - cfs_page_t *pg = malloc(sizeof(*pg)); - - if (!pg) - return NULL; - pg->addr = malloc(CFS_PAGE_SIZE); - - if (!pg->addr) { - free(pg); - return NULL; - } - return pg; -} - -void cfs_free_page(cfs_page_t *pg) -{ - free(pg->addr); free(pg); }