|
@@ -46,20 +46,16 @@ struct eventfd_ctx {
|
|
|
* value, and we signal this as overflow condition by returining a POLLERR
|
|
|
* to poll(2).
|
|
|
*
|
|
|
- * Returns @n in case of success, a non-negative number lower than @n in case
|
|
|
- * of overflow, or the following error codes:
|
|
|
- *
|
|
|
- * -EINVAL : The value of @n is negative.
|
|
|
+ * Returns the amount by which the counter was incrememnted. This will be less
|
|
|
+ * than @n if the counter has overflowed.
|
|
|
*/
|
|
|
-int eventfd_signal(struct eventfd_ctx *ctx, int n)
|
|
|
+__u64 eventfd_signal(struct eventfd_ctx *ctx, __u64 n)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
|
|
|
- if (n < 0)
|
|
|
- return -EINVAL;
|
|
|
spin_lock_irqsave(&ctx->wqh.lock, flags);
|
|
|
if (ULLONG_MAX - ctx->count < n)
|
|
|
- n = (int) (ULLONG_MAX - ctx->count);
|
|
|
+ n = ULLONG_MAX - ctx->count;
|
|
|
ctx->count += n;
|
|
|
if (waitqueue_active(&ctx->wqh))
|
|
|
wake_up_locked_poll(&ctx->wqh, POLLIN);
|