update readme
[c11concurrency-benchmarks.git] / mabain / src / lock.cpp
1 /**
2  * Copyright (C) 2017 Cisco Inc.
3  *
4  * This program is free software: you can redistribute it and/or  modify
5  * it under the terms of the GNU General Public License, version 2,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 // @author Changxue Deng <chadeng@cisco.com>
18
19 #include "lock.h"
20
21 namespace mabain {
22
23 // rwlock within a process
24 pthread_rwlock_t MBLock::mb_rw_lock = PTHREAD_RWLOCK_INITIALIZER;
25
26 void MBLock::Init(pthread_rwlock_t *rw_lock)
27 {
28 #ifdef __SHM_LOCK__
29     // using process lock for initializing shared memory lock
30     pthread_rwlock_wrlock(&mb_rw_lock);
31     mb_rw_lock_ptr = rw_lock;
32     pthread_rwlock_unlock(&mb_rw_lock);
33 #endif
34 }
35
36 MBLock::MBLock()
37 {
38 #ifndef __SHM_LOCK__
39     mb_rw_lock_ptr = &MBLock::mb_rw_lock;
40 #endif
41 }
42
43 MBLock::~MBLock()
44 {
45 }
46
47 }