71 mutex->lineno = lineno;
73 mutex->collisions = 0;
105 if (
mutex->locks > 0 ||
mutex->collisions > 0) {
106 info(0,
"Mutex %s:%d: %ld locks, %ld collisions.",
112 if ((ret = pthread_mutex_destroy(&
mutex->
mutex)) != 0)
113 panic(ret,
"Attempt to destroy locked mutex!");
138 panic(0,
"%s:%ld: %s: Mutex failure! (Called from %s:%ld:%s.)", \
139 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
141 panic(0,
"%s:%ld: %s: Managed to lock the mutex twice! (Called from %s:%ld:%s.)", \
142 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
151 error(0,
"%s:%ld: %s: Trying to unlock a NULL mutex! (Called from %s:%ld:%s.)", \
152 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
159 panic(0,
"%s:%ld: %s: Mutex failure! (Called from %s:%ld:%s.)", \
160 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
170 error(0,
"%s:%ld: %s: Trying to lock a NULL mutex! (Called from %s:%ld:%s.)", \
171 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
178 panic(0,
"%s:%ld: %s: Managed to lock the mutex twice! (Called from %s:%ld:%s.)", \
179 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
183 else if (ret == EINVAL)
184 panic(0,
"%s:%ld: %s: Mutex failure! (Called from %s:%ld:%s.)", \
185 __FILE__, (
long) __LINE__, __func__,
file, (
long) line, func);
void error(int err, const char *fmt,...)
void info(int err, const char *fmt,...)
gw_assert(wtls_machine->packet_to_send !=NULL)
int mutex_unlock_real(Mutex *mutex, char *file, int line, const char *func)
Mutex * mutex_create_real(void)
Mutex * mutex_init_static_real(Mutex *mutex)
char filename[FILENAME_MAX+1]
void mutex_destroy(Mutex *mutex)
void mutex_lock_real(Mutex *mutex, char *file, int line, const char *func)
int mutex_trylock_real(Mutex *mutex, const char *file, int line, const char *func)
Mutex * mutex_create_measured(Mutex *mutex, char *filename, int lineno)