Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 #include "util.h"
0003 #include "rwsem.h"
0004 
0005 int init_rwsem(struct rw_semaphore *sem)
0006 {
0007     return pthread_rwlock_init(&sem->lock, NULL);
0008 }
0009 
0010 int exit_rwsem(struct rw_semaphore *sem)
0011 {
0012     return pthread_rwlock_destroy(&sem->lock);
0013 }
0014 
0015 int down_read(struct rw_semaphore *sem)
0016 {
0017     return perf_singlethreaded ? 0 : pthread_rwlock_rdlock(&sem->lock);
0018 }
0019 
0020 int up_read(struct rw_semaphore *sem)
0021 {
0022     return perf_singlethreaded ? 0 : pthread_rwlock_unlock(&sem->lock);
0023 }
0024 
0025 int down_write(struct rw_semaphore *sem)
0026 {
0027     return perf_singlethreaded ? 0 : pthread_rwlock_wrlock(&sem->lock);
0028 }
0029 
0030 int up_write(struct rw_semaphore *sem)
0031 {
0032     return perf_singlethreaded ? 0 : pthread_rwlock_unlock(&sem->lock);
0033 }