/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
lnet_eq_wait_lock();
lnet_res_lh_initialize(&the_lnet.ln_eq_container, &eq->eq_lh);
- cfs_list_add(&eq->eq_list, &the_lnet.ln_eq_container.rec_active);
+ list_add(&eq->eq_list, &the_lnet.ln_eq_container.rec_active);
lnet_eq_wait_unlock();
lnet_res_unlock(LNET_LOCK_EX);
lnet_eq_free(eq);
return -ENOMEM;
}
+EXPORT_SYMBOL(LNetEQAlloc);
/**
* Release the resources associated with an event queue if it's idle;
refs = eq->eq_refs;
lnet_res_lh_invalidate(&eq->eq_lh);
- cfs_list_del(&eq->eq_list);
+ list_del(&eq->eq_list);
lnet_eq_free_locked(eq);
out:
lnet_eq_wait_unlock();
return rc;
}
+EXPORT_SYMBOL(LNetEQFree);
void
lnet_eq_enqueue_event(lnet_eq_t *eq, lnet_event_t *ev)
#ifdef __KERNEL__
/* Wake anyone waiting in LNetEQPoll() */
- if (cfs_waitq_active(&the_lnet.ln_eq_waitq))
- cfs_waitq_broadcast(&the_lnet.ln_eq_waitq);
+ if (waitqueue_active(&the_lnet.ln_eq_waitq))
+ wake_up_all(&the_lnet.ln_eq_waitq);
#else
# ifndef HAVE_LIBPTHREAD
/* LNetEQPoll() calls into _the_ LND to wait for action */
if (LNET_SEQ_GT(eq->eq_deq_seq, new_event->sequence))
RETURN(0);
- /* We've got a new event... */
- *ev = *new_event;
+ /* We've got a new event... */
+ *ev = *new_event;
CDEBUG(D_INFO, "event: %p, sequence: %lu, eq->size: %u\n",
new_event, eq->eq_deq_seq, eq->eq_size);
return LNetEQPoll(&eventq, 1, 0,
event, &which);
}
+EXPORT_SYMBOL(LNetEQGet);
/**
* Block the calling process until there is an event in the EQ.
return LNetEQPoll(&eventq, 1, LNET_TIME_FOREVER,
event, &which);
}
+EXPORT_SYMBOL(LNetEQWait);
#ifdef __KERNEL__
static int
lnet_eq_wait_locked(int *timeout_ms)
+__must_hold(&the_lnet.ln_eq_wait_lock)
{
- int tms = *timeout_ms;
- int wait;
- cfs_waitlink_t wl;
- cfs_time_t now;
+ int tms = *timeout_ms;
+ int wait;
+ wait_queue_t wl;
+ cfs_time_t now;
if (tms == 0)
return -1; /* don't want to wait and no new event */
- cfs_waitlink_init(&wl);
- cfs_set_current_state(CFS_TASK_INTERRUPTIBLE);
- cfs_waitq_add(&the_lnet.ln_eq_waitq, &wl);
+ init_waitqueue_entry_current(&wl);
+ set_current_state(TASK_INTERRUPTIBLE);
+ add_wait_queue(&the_lnet.ln_eq_waitq, &wl);
lnet_eq_wait_unlock();
if (tms < 0) {
- cfs_waitq_wait(&wl, CFS_TASK_INTERRUPTIBLE);
+ waitq_wait(&wl, TASK_INTERRUPTIBLE);
} else {
struct timeval tv;
now = cfs_time_current();
- cfs_waitq_timedwait(&wl, CFS_TASK_INTERRUPTIBLE,
+ waitq_timedwait(&wl, TASK_INTERRUPTIBLE,
cfs_time_seconds(tms) / 1000);
cfs_duration_usec(cfs_time_sub(cfs_time_current(), now), &tv);
tms -= (int)(tv.tv_sec * 1000 + tv.tv_usec / 1000);
*timeout_ms = tms;
lnet_eq_wait_lock();
- cfs_waitq_del(&the_lnet.ln_eq_waitq, &wl);
+ remove_wait_queue(&the_lnet.ln_eq_waitq, &wl);
return wait;
}
static int
lnet_eq_wait_locked(int *timeout_ms)
{
- lnet_ni_t *eq_waitni = NULL;
- int tms = *timeout_ms;
- int wait;
- struct timeval then;
- struct timeval now;
+ lnet_ni_t *eq_waitni = NULL;
+ int tms = *timeout_ms;
+ int wait;
+ struct timeval then;
+ struct timeval now;
if (the_lnet.ln_eq_waitni != NULL) {
/* I have a single NI that I have to call into, to get
* \retval -ENOENT If there's an invalid handle in \a eventqs.
*/
int
-LNetEQPoll (lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
- lnet_event_t *event, int *which)
+LNetEQPoll(lnet_handle_eq_t *eventqs, int neq, int timeout_ms,
+ lnet_event_t *event, int *which)
{
int wait = 1;
int rc;
lnet_eq_wait_lock();
- for (;;) {
+ for (;;) {
#ifndef __KERNEL__
lnet_eq_wait_unlock();