| 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;
}
}