-/* $Id: flock.c,v 1.16 2006-07-03 13:40:58 adam Exp $
+/* $Id: flock.c,v 1.17 2006-07-05 12:02:12 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
#include <yaz/xmalloc.h>
#include <yaz/log.h>
-/** whether this module should debug */
-#define DEBUG_FLOCK 1
-
/** have this module (mutex) been initialized? */
static int initialized = 0;
int zebra_unlock(ZebraLockHandle h)
{
int r = 0;
- int do_unlock = 0;
yaz_log(log_level, "zebra_unlock fd=%d p=%p fname=%s begin",
h->p->fd, h, h->p->fname);
#ifdef WIN32
h->p->no_file_read_lock--;
}
if (h->p->no_file_read_lock == 0 && h->p->no_file_write_lock == 0)
- do_unlock = 1;
- if (do_unlock)
r = unixLock(h->p->fd, F_UNLCK, F_SETLKW);
else
{
+ r = 0;
assert(posix_locks);
}
+
zebra_mutex_unlock(&h->p->file_mutex);
if (posix_locks)
{
initialized = 1;
log_level = yaz_log_module_level("flock");
-#if DEBUG_FLOCK
- log_level = YLOG_LOG|YLOG_FLUSH;
-#endif
+ yaz_log(log_level, "zebra_flock_init");
check_for_linuxthreads();
zebra_mutex_init(&lock_list_mutex);
yaz_log(log_level, "posix_locks: %d", posix_locks);
}
- yaz_log(log_level, "zebra_flock_init");
}
/*
* Copyright (C) 1995-2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: tstflock.c,v 1.13 2006-07-03 21:19:13 adam Exp $
+ * $Id: tstflock.c,v 1.14 2006-07-05 12:02:12 adam Exp $
*/
#include <assert.h>
}
}
-#if 0
tst_thread(6, 0); /* read locks */
-#endif
-#if 1
+
tst_thread(20, 2); /* random locks */
-#endif
}
void fork_tst()
#endif
}
-
int main(int argc, char **argv)
{
char logname[220];
yaz_log_time_format("%s:%!");
+ /* ensure the flock system logs in our test */
+ yaz_log_init_level(yaz_log_mask_str("flock"));
+
zebra_flock_init();
test_fd = open("tstflock.out", (O_BINARY|O_CREAT|O_RDWR), 0666);