31#define MAX_COUNTER 100000
42static int i = 0, x = 0;
117#define wait_for_flag(f_, val) while (apr_atomic_read32(&(f_)) != val) apr_sleep(100000)
131 fprintf(
stderr,
"testlock: failed to lock timeout mutex, errno %d\n", rv);
153 buff[put.nput] = put.nval;
164 *((
int *)
data) += 1;
176 while (
nready.nready == 0)
217#if APR_HAS_TIMEDLOCKS
308 put.nput = put.nval = 0;
383#if APR_HAS_TIMEDLOCKS
525 ABTS_NOT_IMPL(tc,
"Threads not implemented on this platform");
538#if APR_HAS_TIMEDLOCKS
546#if APR_HAS_TIMEDLOCKS
void abts_run_test(abts_suite *ts, test_func f, void *value)
#define ABTS_PTR_NOTNULL(a, b)
#define ABTS_NOT_IMPL(a, b)
#define ABTS_ASSERT(a, b, c)
#define ABTS_INT_EQUAL(a, b, c)
#define APR_ASSERT_SUCCESS(tc, ctxt, rv)
APR Miscellaneous library routines.
APR Command Arguments (getopt)
APR Condition Variable Routines.
APR Thread Mutex Routines.
APR Thread and Process Library.
APR Reader/Writer Lock Routines.
void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
static apr_thread_mutex_t * timeout_mutex
#define APR_STATUS_IS_TIMEUP(s)
const char apr_int32_t flag
apr_int64_t apr_interval_time_t
#define apr_time_from_sec(sec)
apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t retval)
apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd)
apr_status_t apr_thread_create(apr_thread_t **new, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *pool)
static void threads_not_impl(abts_case *tc, void *data)
abts_suite * testlock(abts_suite *suite)