Zbigniew Jędrzejewski-Szmek | 5d6eedd | 2017-01-31 12:11:17 -0500 | [diff] [blame] | 1 | From b291d260e0ebc7a7528f37e97e8b404968f34e18 Mon Sep 17 00:00:00 2001 |
Zbigniew Jędrzejewski-Szmek | 03e93e2 | 2017-01-29 17:22:41 -0500 | [diff] [blame] | 2 | From: Martin Ejdestig <marejde@gmail.com> |
| 3 | Date: Tue, 22 Nov 2016 01:21:00 +0100 |
| 4 | Subject: [PATCH] sd-event: fix sd_event_source_get_priority() (#4712) |
| 5 | |
| 6 | To properly store priority in passed in pointer and return 0 for success. |
| 7 | Also add a test for verifying that it works correctly. |
| 8 | (cherry picked from commit 6680b8d118490bbb3e5522729ec50d9975088fd5) |
| 9 | --- |
| 10 | src/libsystemd/sd-event/sd-event.c | 3 ++- |
| 11 | src/libsystemd/sd-event/test-event.c | 3 +++ |
| 12 | 2 files changed, 5 insertions(+), 1 deletion(-) |
| 13 | |
| 14 | diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c |
| 15 | index 9857f8b1fc..f94959adac 100644 |
| 16 | --- a/src/libsystemd/sd-event/sd-event.c |
| 17 | +++ b/src/libsystemd/sd-event/sd-event.c |
| 18 | @@ -1539,7 +1539,8 @@ _public_ int sd_event_source_get_priority(sd_event_source *s, int64_t *priority) |
| 19 | assert_return(s, -EINVAL); |
| 20 | assert_return(!event_pid_changed(s->event), -ECHILD); |
| 21 | |
| 22 | - return s->priority; |
| 23 | + *priority = s->priority; |
| 24 | + return 0; |
| 25 | } |
| 26 | |
| 27 | _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority) { |
| 28 | diff --git a/src/libsystemd/sd-event/test-event.c b/src/libsystemd/sd-event/test-event.c |
| 29 | index 289114490c..c0e5e06a18 100644 |
| 30 | --- a/src/libsystemd/sd-event/test-event.c |
| 31 | +++ b/src/libsystemd/sd-event/test-event.c |
| 32 | @@ -172,6 +172,7 @@ static void test_basic(void) { |
| 33 | static const char ch = 'x'; |
| 34 | int a[2] = { -1, -1 }, b[2] = { -1, -1}, d[2] = { -1, -1}, k[2] = { -1, -1 }; |
| 35 | uint64_t event_now; |
| 36 | + int64_t priority; |
| 37 | |
| 38 | assert_se(pipe(a) >= 0); |
| 39 | assert_se(pipe(b) >= 0); |
| 40 | @@ -209,6 +210,8 @@ static void test_basic(void) { |
| 41 | assert_se(sd_event_add_exit(e, &q, exit_handler, INT_TO_PTR('g')) >= 0); |
| 42 | |
| 43 | assert_se(sd_event_source_set_priority(x, 99) >= 0); |
| 44 | + assert_se(sd_event_source_get_priority(x, &priority) >= 0); |
| 45 | + assert_se(priority == 99); |
| 46 | assert_se(sd_event_source_set_enabled(y, SD_EVENT_ONESHOT) >= 0); |
| 47 | assert_se(sd_event_source_set_prepare(x, prepare_handler) >= 0); |
| 48 | assert_se(sd_event_source_set_priority(z, 50) >= 0); |