1 /* 2 * This file is part of the openHiTLS project. 3 * 4 * openHiTLS is licensed under the Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * 8 * http://license.coscl.org.cn/MulanPSL2 9 * 10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13 * See the Mulan PSL v2 for more details. 14 */ 15 16 #include <pthread.h> 17 #include <stdint.h> 18 #include "securec.h" 19 #include "logger.h" 20 #include "lock.h" OsLockNew(void)21Lock *OsLockNew(void) 22 { 23 pthread_mutexattr_t attr; 24 Lock *lock; 25 26 if ((lock = (Lock *)malloc(sizeof(pthread_mutex_t))) == NULL) { 27 LOG_ERROR("OAL_Malloc error"); 28 return NULL; 29 } 30 31 pthread_mutexattr_init(&attr); 32 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL); 33 34 if (pthread_mutex_init(lock, &attr) != 0) { 35 LOG_ERROR("pthread_mutex_init error"); 36 pthread_mutexattr_destroy(&attr); 37 free(lock); 38 return NULL; 39 } 40 41 pthread_mutexattr_destroy(&attr); 42 return lock; 43 } 44 OsLock(Lock * lock)45int OsLock(Lock *lock) 46 { 47 if (pthread_mutex_lock(lock) != 0) { 48 LOG_ERROR("pthread_mutex_lock error"); 49 return -1; 50 } 51 return 0; 52 } 53 OsUnLock(Lock * lock)54int OsUnLock(Lock *lock) 55 { 56 if (pthread_mutex_unlock(lock) != 0) { 57 LOG_ERROR("pthread_mutex_unlock error"); 58 return -1; 59 } 60 return 0; 61 } 62 OsLockDestroy(Lock * lock)63void OsLockDestroy(Lock *lock) 64 { 65 if (lock == NULL) { 66 return; 67 } 68 pthread_mutex_destroy(lock); 69 free(lock); 70 } 71