Return TypeFunction nameArguments
voidhzSysLock::Lock(void)

Declared in file: hzProcess.h
Defined in file : hzLock.cpp

Function Logic:

0:START 1:pthread_self tid 2:m_nSemId==-1 3:hzexit 4:m_lockval&&m_lockval==tid 5:fprintf items 6:lockbuf lockbuf lockbuf lockbuf lockbuf lockbuf fprintf 7:semop(m_nSemId,&lockbuf[0],2)==-1 8:hzexit 9:fprintf m_lockval m_count 10: No text

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