• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)21 Lock *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)45 int 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)54 int 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)63 void OsLockDestroy(Lock *lock)
64 {
65     if (lock == NULL) {
66         return;
67     }
68     pthread_mutex_destroy(lock);
69     free(lock);
70 }
71