int snmp_res_unlock(int groupID, int resourceID) { int rc = 0; mutex_type *mutex = _mt_res(groupID, resourceID); if (!mutex) return EFAULT; #if HAVE_PTHREAD_H rc = pthread_mutex_unlock(mutex); #elif defined(WIN32) LeaveCriticalSection(mutex); #endif return rc; }
int snmp_res_init(void) { int ii, jj; int rc = 0; mutex_type *mutex; for (jj = 0; (0 == rc) && (jj < MT_MAX_IDS); jj++) for (ii = 0; (0 == rc) && (ii < MT_LIB_MAXIMUM); ii++) { mutex = _mt_res(jj, ii); if (!mutex) continue; rc = snmp_res_init_mutex( mutex ); } return rc; }
int snmp_res_destroy_mutex(int groupID, int resourceID) { int rc = 0; mutex_type *mutex = _mt_res(groupID, resourceID); if (!mutex) { return EFAULT; } #if HAVE_PTHREAD_H rc = pthread_mutex_destroy(mutex); #elif defined(WIN32) DeleteCriticalSection(mutex); #endif return rc; }