X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lnet%2Flnet%2Flib-eq.c;h=50ac435e9ed8c7f6fde92aa65c4dcf4911d64d05;hb=48a0697d79101ad3ff7651779808dcf002a68890;hp=1e5011c38e2ecc92b24856ece9f96352ead71d8a;hpb=e531dc437c56a08a65de9074a511faa55184712b;p=fs%2Flustre-release.git diff --git a/lnet/lnet/lib-eq.c b/lnet/lnet/lib-eq.c index 1e5011c..50ac435 100644 --- a/lnet/lnet/lib-eq.c +++ b/lnet/lnet/lib-eq.c @@ -26,6 +26,8 @@ /* * 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/ @@ -120,7 +122,7 @@ LNetEQAlloc(unsigned int count, lnet_eq_handler_t callback, 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); @@ -138,6 +140,7 @@ failed: lnet_eq_free(eq); return -ENOMEM; } +EXPORT_SYMBOL(LNetEQAlloc); /** * Release the resources associated with an event queue if it's idle; @@ -191,7 +194,7 @@ LNetEQFree(lnet_handle_eq_t eqh) 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(); @@ -204,6 +207,7 @@ LNetEQFree(lnet_handle_eq_t eqh) return rc; } +EXPORT_SYMBOL(LNetEQFree); void lnet_eq_enqueue_event(lnet_eq_t *eq, lnet_event_t *ev) @@ -230,8 +234,8 @@ 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 */ @@ -243,7 +247,7 @@ lnet_eq_enqueue_event(lnet_eq_t *eq, lnet_event_t *ev) lnet_eq_wait_unlock(); } -int +static int lnet_eq_dequeue_event(lnet_eq_t *eq, lnet_event_t *ev) { int new_index = eq->eq_deq_seq & (eq->eq_size - 1); @@ -300,6 +304,7 @@ LNetEQGet (lnet_handle_eq_t eventq, lnet_event_t *event) return LNetEQPoll(&eventq, 1, 0, event, &which); } +EXPORT_SYMBOL(LNetEQGet); /** * Block the calling process until there is an event in the EQ. @@ -325,34 +330,36 @@ LNetEQWait (lnet_handle_eq_t eventq, lnet_event_t *event) 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; + 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); @@ -364,7 +371,7 @@ lnet_eq_wait_locked(int *timeout_ms) *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; }