* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
LNET_LOCK();
lnet_initialise_handle (&eq->eq_lh, LNET_COOKIE_TYPE_EQ);
- list_add (&eq->eq_list, &the_lnet.ln_active_eqs);
+ cfs_list_add (&eq->eq_list, &the_lnet.ln_active_eqs);
LNET_UNLOCK();
size = eq->eq_size;
lnet_invalidate_handle (&eq->eq_lh);
- list_del (&eq->eq_list);
+ cfs_list_del (&eq->eq_list);
lnet_eq_free (eq);
LNET_UNLOCK();
#else
struct timeval then;
struct timeval now;
-# ifdef HAVE_LIBPTHREAD
+# ifdef HAVE_PTHREAD
struct timespec ts;
# endif
lnet_ni_t *eqwaitni = the_lnet.ln_eqwaitni;
LNET_LOCK();
for (;;) {
+#ifndef __KERNEL__
+ LNET_UNLOCK();
+
+ /* Recursion breaker */
+ if (the_lnet.ln_rc_state == LNET_RC_STATE_RUNNING &&
+ !LNetHandleIsEqual(eventqs[0], the_lnet.ln_rc_eqh))
+ lnet_router_checker();
+
+ LNET_LOCK();
+#endif
for (i = 0; i < neq; i++) {
lnet_eq_t *eq = lnet_handle2eq(&eventqs[i]);
}
cfs_waitlink_init(&wl);
- set_current_state(TASK_INTERRUPTIBLE);
+ cfs_set_current_state(CFS_TASK_INTERRUPTIBLE);
cfs_waitq_add(&the_lnet.ln_waitq, &wl);
LNET_UNLOCK();
cfs_waitq_timedwait(&wl, CFS_TASK_INTERRUPTIBLE,
cfs_time_seconds(timeout_ms)/1000);
cfs_duration_usec(cfs_time_sub(cfs_time_current(), now),
- &tv);
- timeout_ms -= tv.tv_sec * 1000 + tv.tv_usec / 1000;
+ &tv);
+ timeout_ms -= (int)(tv.tv_sec * 1000 + tv.tv_usec / 1000);
if (timeout_ms < 0)
timeout_ms = 0;
}
RETURN (0);
}
-# ifndef HAVE_LIBPTHREAD
+# ifndef HAVE_PTHREAD
/* If I'm single-threaded, LNET fails at startup if it can't
* set the_lnet.ln_eqwaitni correctly. */
LBUG();