5c5d01915a
Porting 851/909/910/913/919/920/922/923/924/925/926/927 patches to debian, other patches are confirmed in debian version. Story: 2009221 Task: 43416 Signed-off-by: Yue Tao <yue.tao@windriver.com> Change-Id: I5af677c90342bae7c30991bf465e0db79c71667d
99 lines
3.7 KiB
Diff
99 lines
3.7 KiB
Diff
From 766177b0afd897e43504c1228fe46ea03833df29 Mon Sep 17 00:00:00 2001
|
|
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
|
Date: Tue, 15 Jun 2021 00:51:33 +0900
|
|
Subject: [PATCH 3/6] sd-event: use CMP() macro
|
|
|
|
(cherry picked from commit 06e131477d82b83c5d516e66d6e413affd7c774a)
|
|
|
|
Related: #1984406
|
|
|
|
[commit eaab8d57d9db0d98d7e618ba634983c34cdb9c06 from
|
|
https://github.com/systemd-rhel/rhel-8/ (branch rhel-8.4.0)]
|
|
|
|
Signed-off-by: Li Zhou <li.zhou@windriver.com>
|
|
---
|
|
src/libsystemd/sd-event/sd-event.c | 37 ++++++++++++++----------------
|
|
1 file changed, 17 insertions(+), 20 deletions(-)
|
|
|
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
|
index 9b6d2f0..84a874d 100644
|
|
--- a/src/libsystemd/sd-event/sd-event.c
|
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
|
@@ -168,10 +168,9 @@ static int pending_prioq_compare(const void *a, const void *b) {
|
|
assert(y->pending);
|
|
|
|
/* Enabled ones first */
|
|
- if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
|
|
- return -1;
|
|
- if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
|
|
- return 1;
|
|
+ r = CMP(x->enabled == SD_EVENT_OFF, y->enabled == SD_EVENT_OFF);
|
|
+ if (r != 0)
|
|
+ return r;
|
|
|
|
/* Non rate-limited ones first. */
|
|
r = CMP(!!x->ratelimited, !!y->ratelimited);
|
|
@@ -195,10 +194,9 @@ static int prepare_prioq_compare(const void *a, const void *b) {
|
|
assert(y->prepare);
|
|
|
|
/* Enabled ones first */
|
|
- if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
|
|
- return -1;
|
|
- if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
|
|
- return 1;
|
|
+ r = CMP(x->enabled == SD_EVENT_OFF, y->enabled == SD_EVENT_OFF);
|
|
+ if (r != 0)
|
|
+ return r;
|
|
|
|
/* Non rate-limited ones first. */
|
|
r = CMP(!!x->ratelimited, !!y->ratelimited);
|
|
@@ -265,18 +263,17 @@ static bool event_source_timer_candidate(const sd_event_source *s) {
|
|
|
|
static int time_prioq_compare(const void *a, const void *b, usec_t (*time_func)(const sd_event_source *s)) {
|
|
const sd_event_source *x = a, *y = b;
|
|
+ int r;
|
|
|
|
/* Enabled ones first */
|
|
- if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
|
|
- return -1;
|
|
- if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
|
|
- return 1;
|
|
+ r = CMP(x->enabled == SD_EVENT_OFF, y->enabled == SD_EVENT_OFF);
|
|
+ if (r != 0)
|
|
+ return r;
|
|
|
|
/* Order "non-pending OR ratelimited" before "pending AND not-ratelimited" */
|
|
- if (event_source_timer_candidate(x) && !event_source_timer_candidate(y))
|
|
- return -1;
|
|
- if (!event_source_timer_candidate(x) && event_source_timer_candidate(y))
|
|
- return 1;
|
|
+ r = CMP(!event_source_timer_candidate(x), !event_source_timer_candidate(y));
|
|
+ if (r != 0)
|
|
+ return r;
|
|
|
|
/* Order by time */
|
|
return CMP(time_func(x), time_func(y));
|
|
@@ -292,15 +289,15 @@ static int latest_time_prioq_compare(const void *a, const void *b) {
|
|
|
|
static int exit_prioq_compare(const void *a, const void *b) {
|
|
const sd_event_source *x = a, *y = b;
|
|
+ int r;
|
|
|
|
assert(x->type == SOURCE_EXIT);
|
|
assert(y->type == SOURCE_EXIT);
|
|
|
|
/* Enabled ones first */
|
|
- if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
|
|
- return -1;
|
|
- if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
|
|
- return 1;
|
|
+ r = CMP(x->enabled == SD_EVENT_OFF, y->enabled == SD_EVENT_OFF);
|
|
+ if (r != 0)
|
|
+ return r;
|
|
|
|
/* Lower priority values first */
|
|
return CMP(x->priority, y->priority);
|
|
--
|
|
2.17.1
|
|
|