⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vm_mmap_linux32.c

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 C
字号:
/*////                  INTEL CORPORATION PROPRIETARY INFORMATION//     This software is supplied under the terms of a license agreement or//     nondisclosure agreement with Intel Corporation and may not be copied//     or disclosed except in accordance with the terms of that agreement.//       Copyright(c) 2003-2005 Intel Corporation. All Rights Reserved.//*/#ifdef LINUX32#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#include "vm_mmap.h"/* Set the mmap handle an invalid value */void vm_mmap_set_invalid(vm_mmap *handle){    /* check error(s) */    if (NULL == handle)        return;    handle->fd= -1;    handle->address = NULL;    handle->fAccessAttr = 0;} /* void vm_mmap_set_invalid(vm_mmap *handle) *//* Verify if the mmap handle is valid */int vm_mmap_is_valid(vm_mmap *handle){    /* check error(s) */    if (NULL == handle)        return 0;    return (-1 != handle->fd);} /* int vm_mmap_is_valid(vm_mmap *handle) *//* Map a file into system meory, return size of the mapped file */vm_sizet vm_mmap_create(vm_mmap *handle, vm_char *file, int fileAccessAttr){    size_t sizet;    /* check error(s) */    if (NULL == handle)        return 0;    handle->address = NULL;    handle->sizet = 0;    if(FLAG_ATTRIBUTE_READ & fileAccessAttr)        handle->fd = open(file, O_RDONLY);    else        handle->fd = open(file, O_RDWR | O_CREAT);    if (-1 == handle->fd)        return 0;    sizet = lseek(handle->fd, 0, SEEK_END);    lseek(handle->fd, 0, SEEK_SET);    return sizet;} /* vm_sizet vm_mmap_create(vm_mmap *handle, vm_char *file, int fileAccessAttr) *//* Obtain a view of the mapped file, return the adjusted offset & size */void *vm_mmap_set_view(vm_mmap *handle, vm_sizet *offset, vm_sizet *sizet){    vm_sizet pagesize = getpagesize();    vm_sizet edge;    /* check error(s) */    if (NULL == handle)        return NULL;    if (handle->address)        munmap(handle->address,handle->sizet);    edge = (*sizet) + (*offset);    (*offset) = ((vm_sizet)((*offset) / pagesize)) * pagesize;    handle->sizet = (*sizet) = edge - (*offset);    handle->address = mmap(0,                           *sizet,                           PROT_READ,                           MAP_SHARED,                           handle->fd,                           *offset);    return handle->address;} /* void *vm_mmap_set_view(vm_mmap *handle, vm_sizet *offset, vm_sizet *sizet) *//* Remove the mmap */void vm_mmap_close(vm_mmap *handle){    /* check error(s) */    if (NULL == handle)        return;    if (handle->address)    {        munmap(handle->address, handle->sizet);        handle->address = NULL;    }    if (-1 != handle->fd)    {        close(handle->fd);        handle->fd= -1;    }} /* void vm_mmap_close(vm_mmap *handle) */vm_var32 vm_mmap_get_page_size(void){    return getpagesize();} /* vm_var32 vm_mmap_get_page_size(void) */vm_var32 vm_mmap_get_alloc_granularity(void){    return 16 * getpagesize();} /* vm_var32 vm_mmap_get_alloc_granularity(void) */void vm_mmap_unmap(vm_mmap *handle){    /* check error(s) */    if (NULL == handle)        return;    if (handle->address)    {        munmap(handle->address, handle->sizet);        handle->address = NULL;    }} /* void vm_mmap_unmap(vm_mmap *handle) */#endif /* LINUX32 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -