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

📄 vm_mutex_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 <pthread.h>#include <sys/time.h>#include <errno.h>#include "vm_mutex.h"/* Invalidate a mutex */void vm_mutex_set_invalid(vm_mutex *mutex){    /* check error(s) */    if (NULL == mutex)        return;    mutex->is_valid = 0;} /* void vm_mutex_set_invalid(vm_mutex *mutex) *//* Verify if a mutex is valid */int vm_mutex_is_valid(vm_mutex *mutex){    /* check error(s) */    if (NULL == mutex)        return 0;    return mutex->is_valid;} /* int vm_mutex_is_valid(vm_mutex *mutex) *//* Init a mutex, return 1 if success */vm_status vm_mutex_init(vm_mutex *mutex){    vm_status umc_res;    pthread_mutexattr_t mutex_attr;    /* check error(s) */    if (NULL == mutex)        return VM_NULL_PTR;    vm_mutex_destroy(mutex);    pthread_mutexattr_init(&mutex_attr);    pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_ERRORCHECK_NP);    mutex->is_valid = !pthread_mutex_init(&mutex->handle, &mutex_attr);    umc_res = mutex->is_valid ? VM_OK : VM_OPERATION_FAILED;    pthread_mutexattr_destroy(&mutex_attr);    return umc_res;} /* vm_status vm_mutex_init(vm_mutex *mutex) *//* Lock the mutex with blocking. */vm_status vm_mutex_lock(vm_mutex *mutex){    vm_status umc_res = VM_NOT_INITIALIZED;    /* check error(s) */    if (NULL == mutex)        return VM_NULL_PTR;    if (mutex->is_valid)    {        if (0 == pthread_mutex_lock(&mutex->handle))            umc_res = VM_OK;        else            umc_res = VM_OPERATION_FAILED;    }    return umc_res;} /* vm_status vm_mutex_lock(vm_mutex *mutex) *//* Unlock the mutex. */vm_status vm_mutex_unlock(vm_mutex *mutex){    vm_status umc_res = VM_NOT_INITIALIZED;    /* check error(s) */    if (NULL == mutex)        return VM_NULL_PTR;    if (mutex->is_valid)    {        if (0 == pthread_mutex_unlock(&mutex->handle))            umc_res = VM_OK;        else            umc_res = VM_OPERATION_FAILED;    }    return umc_res;} /* vm_status vm_mutex_unlock(vm_mutex *mutex) *//* Lock the mutex without blocking, return 1 if success */vm_status vm_mutex_try_lock(vm_mutex *mutex){    vm_status umc_res = VM_NOT_INITIALIZED;    /* check error(s) */    if (NULL == mutex)        return VM_NULL_PTR;    if (mutex->is_valid)    {        int i_res = pthread_mutex_trylock(&mutex->handle);        switch (i_res)        {        case 0:            umc_res = VM_OK;            break;        case EBUSY:            umc_res = VM_TIMEOUT;            break;        default:            umc_res = VM_OPERATION_FAILED;            break;        }    }    return umc_res;} /* vm_status vm_mutex_try_lock(vm_mutex *mutex) *//* Destroy the mutex */void vm_mutex_destroy(vm_mutex *mutex){    /* check error(s) */    if (NULL == mutex)        return;    if (mutex->is_valid)    {        pthread_mutex_destroy(&mutex->handle);        mutex->is_valid = 0;    }} /* void vm_mutex_destroy(vm_mutex *mutex) */#endif /* LINUX32 */

⌨️ 快捷键说明

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