Return Type | Function name | Arguments |
---|---|---|
void | hzSysLock::Lock | (void) |
Declared in file: hzProcess.h
Defined in file : hzLock.cpp
Function Logic:
Function body:
void hzSysLock::Lock (void) { _hzfunc("hzSysLock::Lock") ; sembuf lockbuf [2]; int32_t tid ; tid = pthread_self() ; if (m_nSemId == -1) hzexit(E_NOTFOUND, "Attempting to lock an uninitialized semaphore") ; if (m_lockval && m_lockval == tid) { fprintf(stderr, "thread %u re-locking sema %d:%d\n", tid, m_nResource + 1,m_nSemId) ; m_count++ ; } else { lockbuf[0].sem_num= m_nResource ; lockbuf[0].sem_op= 0; lockbuf[0].sem_flg= 0; lockbuf[1].sem_num= m_nResource ; lockbuf[1].sem_op= 1; lockbuf[1].sem_flg= 0; fprintf(stderr, "thread %u seeking sema %d:%d\n", tid, m_nResource + 1,m_nSemId) ; if (semop(m_nSemId, &lockbuf[0],2)== -1) hzexit(E_INITFAIL, "lock on sema %d [%d] could not be obtained\n", m_nResource + 1,m_nSemId) ; fprintf(stderr, "thread %u obtained sema %d:%d\n", tid, m_nResource + 1,m_nSemId) ; m_lockval = tid ; m_count = 1; } }