Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1252514 > unrolled thread
| Started by | "Kilian, Jens" <jens.kilian@advantest.com> |
|---|---|
| First post | 2015-10-21 09:40 +0200 |
| Last post | 2015-10-21 16:10 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
Missing wait_event_killable_timeout? "Kilian, Jens" <jens.kilian@advantest.com> - 2015-10-21 09:40 +0200
Re: Missing wait_event_killable_timeout? Peter Hurley <peter@hurleysoftware.com> - 2015-10-21 16:10 +0200
| From | "Kilian, Jens" <jens.kilian@advantest.com> |
|---|---|
| Date | 2015-10-21 09:40 +0200 |
| Subject | Missing wait_event_killable_timeout? |
| Message-ID | <qlWa5-4E2-5@gated-at.bofh.it> |
SSdkIGxpa2UgdG8gdXNlIGEgdmVyc2lvbiBvZiB3YWl0X2V2ZW50X2tpbGxhYmxlKCkgd2l0aCBh IHRpbWVvdXQsIGJ1dCBpdCBzZWVtcyB0byBiZSBtaXNzaW5nPyAgSSBmb3VuZCBhIG1lbnRpb24g b2YgaXQgaW4gYSByZWNlbnQgTEtNTCBtZXNzYWdlIHRob3VnaDoNCg0KCWh0dHBzOi8vbGttbC5v cmcvbGttbC8yMDE1LzEwLzE0LzMzNw0KDQpEb2VzIHRoaXMgcGF0Y2ggbG9vayByZWFzb25hYmxl Pw0KDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC93YWl0LmggYi9pbmNsdWRlL2xpbnV4L3dh aXQuaA0KaW5kZXggMWUxYmY5Zi4uODQxOTk4NiAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbGludXgv d2FpdC5oDQorKysgYi9pbmNsdWRlL2xpbnV4L3dhaXQuaA0KQEAgLTczOCw2ICs3MzgsNDEgQEAg ZG8gewkJCQkJCQkJCVwNCiAJX19yZXQ7CQkJCQkJCQlcDQogfSkNCiANCisjZGVmaW5lIF9fd2Fp dF9ldmVudF9raWxsYWJsZV90aW1lb3V0KHdxLCBjb25kaXRpb24sIHRpbWVvdXQpICAgCVwNCisJ X19fd2FpdF9ldmVudCh3cSwgX19fd2FpdF9jb25kX3RpbWVvdXQoY29uZGl0aW9uKSwJCVwNCisJ CSAgICAgIFRBU0tfS0lMTEFCTEUsIDAsIHRpbWVvdXQsCQkJXA0KKwkJICAgICAgX19yZXQgPSBz Y2hlZHVsZV90aW1lb3V0KF9fcmV0KSkNCisNCisvKioNCisgKiB3YWl0X2V2ZW50X2tpbGxhYmxl X3RpbWVvdXQgLSBzbGVlcCB1bnRpbCBhIGNvbmRpdGlvbiBnZXRzIHRydWUgb3IgYSB0aW1lb3V0 IGVsYXBzZXMNCisgKiBAd3E6IHRoZSB3YWl0cXVldWUgdG8gd2FpdCBvbg0KKyAqIEBjb25kaXRp b246IGEgQyBleHByZXNzaW9uIGZvciB0aGUgZXZlbnQgdG8gd2FpdCBmb3INCisgKiBAdGltZW91 dDogdGltZW91dCwgaW4gamlmZmllcw0KKyAqDQorICogVGhlIHByb2Nlc3MgaXMgcHV0IHRvIHNs ZWVwIChUQVNLX0tJTExBQkxFKSB1bnRpbCB0aGUgQGNvbmRpdGlvbg0KKyAqIGV2YWx1YXRlcyB0 byB0cnVlIG9yIGEgc2lnbmFsIGlzIHJlY2VpdmVkLg0KKyAqIFRoZSBAY29uZGl0aW9uIGlzIGNo ZWNrZWQgZWFjaCB0aW1lIHRoZSB3YWl0cXVldWUgQHdxIGlzIHdva2VuIHVwLg0KKyAqDQorICog d2FrZV91cCgpIGhhcyB0byBiZSBjYWxsZWQgYWZ0ZXIgY2hhbmdpbmcgYW55IHZhcmlhYmxlIHRo YXQgY291bGQNCisgKiBjaGFuZ2UgdGhlIHJlc3VsdCBvZiB0aGUgd2FpdCBjb25kaXRpb24uDQor ICoNCisgKiBSZXR1cm5zOg0KKyAqIDAgaWYgdGhlIEBjb25kaXRpb24gZXZhbHVhdGVkIHRvICVm YWxzZSBhZnRlciB0aGUgQHRpbWVvdXQgZWxhcHNlZCwNCisgKiAxIGlmIHRoZSBAY29uZGl0aW9u IGV2YWx1YXRlZCB0byAldHJ1ZSBhZnRlciB0aGUgQHRpbWVvdXQgZWxhcHNlZCwNCisgKiB0aGUg cmVtYWluaW5nIGppZmZpZXMgKGF0IGxlYXN0IDEpIGlmIHRoZSBAY29uZGl0aW9uIGV2YWx1YXRl ZA0KKyAqIHRvICV0cnVlIGJlZm9yZSB0aGUgQHRpbWVvdXQgZWxhcHNlZCwgb3IgLSVFUkVTVEFS VFNZUyBpZiBpdCB3YXMNCisgKiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4NCisgKi8NCisjZGVm aW5lIHdhaXRfZXZlbnRfa2lsbGFibGVfdGltZW91dCh3cSwgY29uZGl0aW9uLCB0aW1lb3V0KQlc DQorKHsJCQkJCQkJCQlcDQorCWxvbmcgX19yZXQgPSB0aW1lb3V0OwkJCQkJCVwNCisJbWlnaHRf c2xlZXAoKTsJCQkJCQkJXA0KKwlpZiAoIV9fX3dhaXRfY29uZF90aW1lb3V0KGNvbmRpdGlvbikp CQkJCVwNCisJCV9fcmV0ID0gX193YWl0X2V2ZW50X2tpbGxhYmxlX3RpbWVvdXQod3EsCQlcDQor CQkJCQkJY29uZGl0aW9uLCB0aW1lb3V0KTsJXA0KKwlfX3JldDsJCQkJCQkJCVwNCit9KQ0KKw0K IA0KICNkZWZpbmUgX193YWl0X2V2ZW50X2xvY2tfaXJxKHdxLCBjb25kaXRpb24sIGxvY2ssIGNt ZCkJCQlcDQogCSh2b2lkKV9fX3dhaXRfZXZlbnQod3EsIGNvbmRpdGlvbiwgVEFTS19VTklOVEVS UlVQVElCTEUsIDAsIDAsCVwNCg0KDQotLSANCkplbnMgS2lsaWFuDQoNCkFkdmFudGVzdCBFdXJv cGUgR21iSA0KTWFuYWdpbmcgRGlyZWN0b3JzIC8gR2VzY2hhZWZ0c2Z1ZWhyZXI6IEpvc2VmIFNj aHJhZXR6ZW5zdGFsbGVyLCBIYW5zLUp1ZXJnZW4gV2FnbmVyDQpWb3JzaXR6ZW5kZXIgZGVzIEF1 ZnNpY2h0c3JhdHMgLyBDaGFpcm1hbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IEhpcm9zaGkg TmFrYW11cmENCkNvbW1lcmNpYWwgQ291cnQgLyBIYW5kZWxzcmVnaXN0ZXI6IE11ZW5jaGVuIEhS QiA3MTA4MywgU2VhdCAvIFNpdHo6IE11ZW5jaGVuDQoNCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Peter Hurley <peter@hurleysoftware.com> |
|---|---|
| Date | 2015-10-21 16:10 +0200 |
| Message-ID | <qm2fw-5eA-7@gated-at.bofh.it> |
| In reply to | #1252514 |
Hi Jens,
On 10/21/2015 03:20 AM, Kilian, Jens wrote:
> I'd like to use a version of wait_event_killable() with a timeout, but it seems to be missing? I found a mention of it in a recent LKML message though:
>
> https://lkml.org/lkml/2015/10/14/337
>
> Does this patch look reasonable?
Where is the in-tree user? Without that, someone will notice this
isn't being used and will remove it.
Regards,
Peter Hurley
> diff --git a/include/linux/wait.h b/include/linux/wait.h
> index 1e1bf9f..8419986 100644
> --- a/include/linux/wait.h
> +++ b/include/linux/wait.h
> @@ -738,6 +738,41 @@ do { \
> __ret; \
> })
>
> +#define __wait_event_killable_timeout(wq, condition, timeout) \
> + ___wait_event(wq, ___wait_cond_timeout(condition), \
> + TASK_KILLABLE, 0, timeout, \
> + __ret = schedule_timeout(__ret))
> +
> +/**
> + * wait_event_killable_timeout - sleep until a condition gets true or a timeout elapses
> + * @wq: the waitqueue to wait on
> + * @condition: a C expression for the event to wait for
> + * @timeout: timeout, in jiffies
> + *
> + * The process is put to sleep (TASK_KILLABLE) until the @condition
> + * evaluates to true or a signal is received.
> + * The @condition is checked each time the waitqueue @wq is woken up.
> + *
> + * wake_up() has to be called after changing any variable that could
> + * change the result of the wait condition.
> + *
> + * Returns:
> + * 0 if the @condition evaluated to %false after the @timeout elapsed,
> + * 1 if the @condition evaluated to %true after the @timeout elapsed,
> + * the remaining jiffies (at least 1) if the @condition evaluated
> + * to %true before the @timeout elapsed, or -%ERESTARTSYS if it was
> + * interrupted by a signal.
> + */
> +#define wait_event_killable_timeout(wq, condition, timeout) \
> +({ \
> + long __ret = timeout; \
> + might_sleep(); \
> + if (!___wait_cond_timeout(condition)) \
> + __ret = __wait_event_killable_timeout(wq, \
> + condition, timeout); \
> + __ret; \
> +})
> +
>
> #define __wait_event_lock_irq(wq, condition, lock, cmd) \
> (void)___wait_event(wq, condition, TASK_UNINTERRUPTIBLE, 0, 0, \
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web