Compare commits
10 Commits
90ee7ee041
...
30d86326fe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30d86326fe | ||
|
|
d82474d24f | ||
|
|
74655f3ca2 | ||
|
|
673f7aa8f6 | ||
|
|
dd51a179e3 | ||
|
|
82b59a86a7 | ||
|
|
8b2eacada6 | ||
|
|
7c0c168b19 | ||
|
|
586082f0fe | ||
|
|
c86d640471 |
32
backport-acknowledge-fix-for-the-lost-tasks-ps-issue.patch
Normal file
32
backport-acknowledge-fix-for-the-lost-tasks-ps-issue.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 92bdeb176f3ce8793ba1a2f3d82525b5c51f7449 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Warner <james.warner@comcast.net>
|
||||
Date: Wed, 4 Oct 2023 12:00:00 -0500
|
||||
Subject: [PATCH] NEWS: acknowledge fix for the lost tasks ps issue #304
|
||||
|
||||
[ and eliminate 1 decades old useless initialization ]
|
||||
|
||||
Reference(s):
|
||||
. Sep, 2023 - fix for ps issue #304
|
||||
commit 09fbd70de33c451dde84254718ded2ccac48aed4
|
||||
|
||||
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||
---
|
||||
src/ps/display.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/ps/display.c b/src/ps/display.c
|
||||
index 325edf38..9b5c7165 100644
|
||||
--- a/src/ps/display.c
|
||||
+++ b/src/ps/display.c
|
||||
@@ -357,7 +357,7 @@ next_proc:
|
||||
|
||||
/***** forest output requires sorting by ppid; add start_time by default */
|
||||
static void prep_forest_sort(void){
|
||||
- sort_node *endp, *tmp_list = sort_list;
|
||||
+ sort_node *endp, *tmp_list;
|
||||
const format_struct *incoming;
|
||||
|
||||
if(!sort_list) { /* assume start time order */
|
||||
--
|
||||
GitLab
|
||||
|
||||
@ -0,0 +1,79 @@
|
||||
From 6418b8c1fbcfdcda4cad8efacccceb7bcdbb1de9 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Warner <james.warner@comcast.net>
|
||||
Date: Wed, 20 Mar 2024 00:00:00 -0500
|
||||
Subject: [PATCH] library: address remaining cpu distortions, <stat> api
|
||||
|
||||
When the potential cpu distortion was addressed in the
|
||||
commit referenced below, the revision did not quite go
|
||||
far enough. This was revealed in the merge plus issue
|
||||
posts also shown. Thus a need for this final solution.
|
||||
|
||||
[ and now that all the stat_jifs fields are verified ]
|
||||
[ that TICsetH macro need not check for distortions. ]
|
||||
|
||||
Reference(s):
|
||||
https://gitlab.com/procps-ng/procps/-/merge_requests/223
|
||||
https://gitlab.com/procps-ng/procps/-/issues/321
|
||||
|
||||
. Mar, 2017 - cpu distorions relocated/improved
|
||||
commit 253ac7f709412a8699767bd70faeaf98e19614f0
|
||||
|
||||
Discovered-by: Chao Liu SuperSix173 <liuchao173@huawei.com>
|
||||
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||
---
|
||||
library/stat.c | 24 +++++++++++++++---------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/library/stat.c b/library/stat.c
|
||||
index c37e9b54..b04fe0a5 100644
|
||||
--- a/library/stat.c
|
||||
+++ b/library/stat.c
|
||||
@@ -182,9 +182,10 @@ struct stat_info {
|
||||
#define SYS_set(e,t,x) setDECL(e) { \
|
||||
(void)T; R->result. t = S->new. x; }
|
||||
// delta assignment
|
||||
+// ( thanks to 'stat_derive_unique', this macro no longer needs to )
|
||||
+// ( protect against a negative value when a cpu is brought online )
|
||||
#define TICsetH(e,t,x) setDECL(e) { \
|
||||
- (void)S; R->result. t = ( T->new. x - T->old. x ); \
|
||||
- if (R->result. t < 0) R->result. t = 0; }
|
||||
+ (void)S; R->result. t = ( T->new. x - T->old. x ); }
|
||||
#define SYSsetH(e,t,x) setDECL(e) { \
|
||||
(void)T; R->result. t = ( S->new. x - S->old. x ); }
|
||||
|
||||
@@ -555,6 +556,9 @@ wrap_up:
|
||||
static inline void stat_derive_unique (
|
||||
struct hist_tic *this)
|
||||
{
|
||||
+ unsigned long long *new, *old;
|
||||
+ int i;
|
||||
+
|
||||
/* note: we calculate these derived values in a manner consistent with
|
||||
the calculations for cgroup accounting, as nearly as possible
|
||||
( see linux sources: ./kernel/cgroup/rstat.c, root_cgroup_cputime ) */
|
||||
@@ -576,13 +580,15 @@ static inline void stat_derive_unique (
|
||||
this->new.xbsy
|
||||
= this->new.xtot - this->new.xidl;
|
||||
|
||||
- // don't distort deltas when cpus are taken offline or brought online
|
||||
- if (this->new.xusr < this->old.xusr
|
||||
- || (this->new.xsys < this->old.xsys)
|
||||
- || (this->new.xidl < this->old.xidl)
|
||||
- || (this->new.xbsy < this->old.xbsy)
|
||||
- || (this->new.xtot < this->old.xtot))
|
||||
- memcpy(&this->old, &this->new, sizeof(struct stat_jifs));
|
||||
+ // don't distort results when cpus are brought back online
|
||||
+ new = (unsigned long long *)&this->new;
|
||||
+ old = (unsigned long long *)&this->old;
|
||||
+ for (i = 0; i < sizeof(struct stat_jifs) / sizeof(unsigned long long); i++) {
|
||||
+ if (*(new++) < *(old++)) {
|
||||
+ memcpy(&this->old, &this->new, sizeof(struct stat_jifs));
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
} // end: stat_derive_unique
|
||||
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,75 @@
|
||||
From e1df029e6c8bb166a6cec05dc12f699d84631bc9 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Warner <james.warner@comcast.net>
|
||||
Date: Sat, 22 Jun 2024 00:00:00 -0500
|
||||
Subject: [PATCH 1/3] library: implement guest/total tics change, <stat> api
|
||||
|
||||
This patch removes guest tics from the total lest they
|
||||
be counted twice. Such tics have already been included
|
||||
in user/nice values. For proof, just follow this path:
|
||||
|
||||
fs/proc/stat.c: show_stat() --->
|
||||
kernel/sched/cputime.c: kcpustat_cpu_fetch()
|
||||
|
||||
Reference(s):
|
||||
https://gitlab.com/procps-ng/procps/-/issues/339
|
||||
|
||||
. Sep, 2020 - where guest distortion occurred
|
||||
commit ec21588be108d092804eb72edbba2ba214bc6190
|
||||
|
||||
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||
---
|
||||
library/include/stat.h | 6 +++---
|
||||
library/stat.c | 12 ++++++++----
|
||||
2 files changed, 11 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/library/include/stat.h b/library/include/stat.h
|
||||
index ff7c5b17..d8ca2add 100644
|
||||
--- a/library/include/stat.h
|
||||
+++ b/library/include/stat.h
|
||||
@@ -45,8 +45,8 @@ enum stat_item {
|
||||
STAT_TIC_IRQ, // ull_int "
|
||||
STAT_TIC_SOFTIRQ, // ull_int "
|
||||
STAT_TIC_STOLEN, // ull_int "
|
||||
- STAT_TIC_GUEST, // ull_int "
|
||||
- STAT_TIC_GUEST_NICE, // ull_int "
|
||||
+ STAT_TIC_GUEST, // ull_int " (note: also included in USER)
|
||||
+ STAT_TIC_GUEST_NICE, // ull_int " (note: also included in NICE)
|
||||
|
||||
STAT_TIC_DELTA_USER, // sl_int derived from above
|
||||
STAT_TIC_DELTA_NICE, // sl_int "
|
||||
@@ -63,7 +63,7 @@ enum stat_item {
|
||||
STAT_TIC_SUM_SYSTEM, // ull_int derived from SYSTEM + IRQ + SOFTIRQ tics
|
||||
STAT_TIC_SUM_IDLE, // ull_int derived from IDLE + IOWAIT tics
|
||||
STAT_TIC_SUM_BUSY, // ull_int derived from SUM_TOTAL - SUM_IDLE tics
|
||||
- STAT_TIC_SUM_TOTAL, // ull_int derived from sum of all 10 tics
|
||||
+ STAT_TIC_SUM_TOTAL, // ull_int derived from sum of all tics, minus 2 GUEST tics
|
||||
|
||||
STAT_TIC_SUM_DELTA_USER, // sl_int derived from above
|
||||
STAT_TIC_SUM_DELTA_SYSTEM, // sl_int "
|
||||
diff --git a/library/stat.c b/library/stat.c
|
||||
index 202dfa52..96672431 100644
|
||||
--- a/library/stat.c
|
||||
+++ b/library/stat.c
|
||||
@@ -572,11 +572,15 @@ static inline void stat_derive_unique (
|
||||
this->new.xidl
|
||||
= this->new.idle
|
||||
+ this->new.iowait;
|
||||
+ /* note: we exclude guest tics from xtot since ...
|
||||
+ 'user' already includes 'guest'
|
||||
+ 'nice' already includes 'gnice'
|
||||
+ ( see linux sources: ./kernel/sched/cputime.c, kcpustat_cpu_fetch ) */
|
||||
this->new.xtot
|
||||
- = this->new.xusr + this->new.xsys + this->new.xidl
|
||||
- + this->new.stolen
|
||||
- + this->new.guest
|
||||
- + this->new.gnice;
|
||||
+ = this->new.xusr
|
||||
+ + this->new.xsys
|
||||
+ + this->new.xidl
|
||||
+ + this->new.stolen;
|
||||
this->new.xbsy
|
||||
= this->new.xtot - this->new.xidl;
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,63 @@
|
||||
From 09fbd70de33c451dde84254718ded2ccac48aed4 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Warner <james.warner@comcast.net>
|
||||
Date: Wed, 20 Sep 2023 00:00:00 -0500
|
||||
Subject: [PATCH] ps: don't lose tasks when --sort used with forest mode
|
||||
|
||||
In an issue cited below the loss of tasks was revealed
|
||||
whenever the --sort option is used in combination with
|
||||
forest mode. One could argue against such combinations
|
||||
and print an error. But we'll take an easier approach.
|
||||
|
||||
This patch restores the prior version 3.3.17 behavior.
|
||||
|
||||
Reference(s):
|
||||
https://gitlab.com/procps-ng/procps/-/issues/304
|
||||
|
||||
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||
---
|
||||
src/ps/display.c | 15 ++++++++-------
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/ps/display.c b/src/ps/display.c
|
||||
index e1a3b0da..325edf38 100644
|
||||
--- a/src/ps/display.c
|
||||
+++ b/src/ps/display.c
|
||||
@@ -357,12 +357,12 @@ next_proc:
|
||||
|
||||
/***** forest output requires sorting by ppid; add start_time by default */
|
||||
static void prep_forest_sort(void){
|
||||
- sort_node *tmp_list = sort_list;
|
||||
+ sort_node *endp, *tmp_list = sort_list;
|
||||
const format_struct *incoming;
|
||||
|
||||
if(!sort_list) { /* assume start time order */
|
||||
- incoming = search_format_array("ppid");
|
||||
- if(!incoming) { fprintf(stderr, _("could not find ppid\n")); exit(1); }
|
||||
+ incoming = search_format_array("start_time");
|
||||
+ if(!incoming) { fprintf(stderr, _("could not find start_time\n")); exit(1); }
|
||||
tmp_list = xmalloc(sizeof(sort_node));
|
||||
tmp_list->reverse = PIDS_SORT_ASCEND;
|
||||
tmp_list->typecode = '?'; /* what was this for? */
|
||||
@@ -371,14 +371,15 @@ static void prep_forest_sort(void){
|
||||
sort_list = tmp_list;
|
||||
}
|
||||
/* this is required for the forest option */
|
||||
- incoming = search_format_array("start_time");
|
||||
- if(!incoming) { fprintf(stderr, _("could not find start_time\n")); exit(1); }
|
||||
+ incoming = search_format_array("ppid");
|
||||
+ if(!incoming) { fprintf(stderr, _("could not find ppid\n")); exit(1); }
|
||||
tmp_list = xmalloc(sizeof(sort_node));
|
||||
tmp_list->reverse = PIDS_SORT_ASCEND;
|
||||
tmp_list->typecode = '?'; /* what was this for? */
|
||||
tmp_list->sr = incoming->sr;
|
||||
- tmp_list->next = sort_list;
|
||||
- sort_list = tmp_list;
|
||||
+ tmp_list->next = NULL;
|
||||
+ endp = sort_list; while(endp->next) endp = endp->next;
|
||||
+ endp->next = tmp_list;
|
||||
}
|
||||
|
||||
/* we rely on the POSIX requirement for zeroed memory */
|
||||
--
|
||||
GitLab
|
||||
|
||||
@ -0,0 +1,78 @@
|
||||
From 3fb34669d3a7e1c0c013a907aeae2c4117ba617e Mon Sep 17 00:00:00 2001
|
||||
From: Jim Warner <james.warner@comcast.net>
|
||||
Date: Sat, 22 Jun 2024 00:00:00 -0500
|
||||
Subject: [PATCH 3/3] top: adapt to that guest/total tics change, <stat> api
|
||||
|
||||
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||
---
|
||||
man/top.1 | 5 +----
|
||||
src/top/top.c | 9 ---------
|
||||
2 files changed, 1 insertion(+), 13 deletions(-)
|
||||
|
||||
diff --git a/man/top.1 b/man/top.1
|
||||
index 2e4f252d..067c2ef7 100644
|
||||
--- a/man/top.1
|
||||
+++ b/man/top.1
|
||||
@@ -59,7 +59,7 @@ memory statistics and data for other users requires root privileges
|
||||
.
|
||||
.\" Document /////////////////////////////////////////////////////////////
|
||||
.\" ----------------------------------------------------------------------
|
||||
-.TH TOP 1 "August 2023" "procps-ng" "User Commands"
|
||||
+.TH TOP 1 "June 2024" "procps-ng" "User Commands"
|
||||
.\" ----------------------------------------------------------------------
|
||||
.nh
|
||||
|
||||
@@ -542,9 +542,6 @@ Depending on your kernel version, the \fBst\fR field may not be shown.
|
||||
\fBst\fR : time stolen from this vm by the hypervisor
|
||||
.fi
|
||||
|
||||
-The `sy' value above also reflects the time running a virtual \*(Pu
|
||||
-for guest operating systems, including those that have been niced.
|
||||
-
|
||||
Beyond the first tasks/threads line, there are alternate \*(PU display
|
||||
modes available via the 4-way `t' \*(CT.
|
||||
They show an abbreviated summary consisting of these elements:
|
||||
diff --git a/src/top/top.c b/src/top/top.c
|
||||
index 1383a17a..c1a08dc2 100644
|
||||
--- a/src/top/top.c
|
||||
+++ b/src/top/top.c
|
||||
@@ -286,7 +286,6 @@ static enum stat_item Stat_items[] = {
|
||||
STAT_TIC_DELTA_NICE, STAT_TIC_DELTA_IDLE,
|
||||
STAT_TIC_DELTA_IOWAIT, STAT_TIC_DELTA_IRQ,
|
||||
STAT_TIC_DELTA_SOFTIRQ, STAT_TIC_DELTA_STOLEN,
|
||||
- STAT_TIC_DELTA_GUEST, STAT_TIC_DELTA_GUEST_NICE,
|
||||
STAT_TIC_SUM_DELTA_USER, STAT_TIC_SUM_DELTA_SYSTEM,
|
||||
#ifdef CORE_TYPE_NO
|
||||
STAT_TIC_SUM_DELTA_TOTAL };
|
||||
@@ -299,7 +298,6 @@ enum Rel_statitems {
|
||||
stat_NI, stat_IL,
|
||||
stat_IO, stat_IR,
|
||||
stat_SI, stat_ST,
|
||||
- stat_GU, stat_GN,
|
||||
stat_SUM_USR, stat_SUM_SYS,
|
||||
#ifdef CORE_TYPE_NO
|
||||
stat_SUM_TOT };
|
||||
@@ -6410,11 +6408,6 @@ static int sum_tics (struct stat_stack *this, const char *pfx, int nobuf) {
|
||||
if (1 > tot_frme) idl_frme = tot_frme = 1;
|
||||
scale = 100.0 / (float)tot_frme;
|
||||
|
||||
- /* account for VM tics not otherwise provided for ...
|
||||
- ( with xtra-procps-debug.h, can't use PID_VAL w/ assignment ) */
|
||||
- this->head[stat_SY].result.sl_int += rSv(stat_GU) + rSv(stat_GN);
|
||||
- this->head[stat_SUM_SYS].result.sl_int += rSv(stat_GU) + rSv(stat_GN);
|
||||
-
|
||||
/* display some kinda' cpu state percentages
|
||||
(who or what is explained by the passed prefix) */
|
||||
if (Curwin->rc.graph_cpus) {
|
||||
@@ -6464,8 +6457,6 @@ static int sum_unify (struct stat_stack *this, int nobuf) {
|
||||
stack[stat_IR].result.sl_int += rSv(stat_IR, sl_int);
|
||||
stack[stat_SI].result.sl_int += rSv(stat_SI, sl_int);
|
||||
stack[stat_ST].result.sl_int += rSv(stat_ST, sl_int);
|
||||
- stack[stat_GU].result.sl_int += rSv(stat_GU, sl_int);
|
||||
- stack[stat_GN].result.sl_int += rSv(stat_GN, sl_int);
|
||||
stack[stat_SUM_USR].result.sl_int += rSv(stat_SUM_USR, sl_int);
|
||||
stack[stat_SUM_SYS].result.sl_int += rSv(stat_SUM_SYS, sl_int);
|
||||
stack[stat_SUM_TOT].result.sl_int += rSv(stat_SUM_TOT, sl_int);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
33
backport-uptime-fix-output-on-60-seconds.patch
Normal file
33
backport-uptime-fix-output-on-60-seconds.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From bfb0eadc38e789737dec7f14dd7a7ac00f5f0761 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Malz <mail.robert.malz@gmail.com>
|
||||
Date: Thu, 21 Sep 2023 16:45:49 +1000
|
||||
Subject: [PATCH] uptime: fix output on 60 seconds
|
||||
|
||||
When procps_uptime will return 60 seconds uptime -p will not
|
||||
provide any output except "up". To stay consistent with other
|
||||
time units the expected output is "up 0 minutes".
|
||||
|
||||
References:
|
||||
#302
|
||||
|
||||
Signed-off-by: Craig Small <csmall@dropbear.xyz>
|
||||
---
|
||||
library/uptime.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/library/uptime.c b/library/uptime.c
|
||||
index b41538f5..5faeefca 100644
|
||||
--- a/library/uptime.c
|
||||
+++ b/library/uptime.c
|
||||
@@ -258,7 +258,7 @@ PROCPS_EXPORT char *procps_uptime_sprint_short(void)
|
||||
comma += 1;
|
||||
}
|
||||
|
||||
- if (upminutes || (!upminutes && uptime_secs < 60)) {
|
||||
+ if (upminutes || (!upminutes && uptime_secs <= 60)) {
|
||||
pos += sprintf(shortbuf + pos, "%s%d %s",
|
||||
comma > 0 ? ", " : "", upminutes,
|
||||
upminutes != 1 ? "minutes" : "minute");
|
||||
--
|
||||
GitLab
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
From 600cc2dff859aac525d62000316d957846da4a66 Mon Sep 17 00:00:00 2001
|
||||
From: Chao Liu <liuchao173@huawei.com>
|
||||
Date: Tue, 7 May 2024 03:42:34 +0000
|
||||
Subject: [PATCH 1/2] uptime: Fix uptime return 0 user when systemd-pam is not
|
||||
installed
|
||||
|
||||
When systemd-pam is not installed, systemd won't create files in /run/systemd/sessions/ and sd_get_sessions will return 0. However, the actual number of users is not 0. When sd_get_sessions return 0, uptime should use getutxent for statistics.
|
||||
---
|
||||
library/uptime.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/library/uptime.c b/library/uptime.c
|
||||
index 52720cbc..0db38ee5 100644
|
||||
--- a/library/uptime.c
|
||||
+++ b/library/uptime.c
|
||||
@@ -71,7 +71,9 @@ PROCPS_EXPORT int procps_users(void)
|
||||
|
||||
#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)
|
||||
if (sd_booted() > 0)
|
||||
- return sd_get_sessions(NULL);
|
||||
+ numuser = sd_get_sessions(NULL);
|
||||
+ if (numuser > 0)
|
||||
+ return numuser;
|
||||
#endif
|
||||
|
||||
setutent();
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
From c0c707ac435d6318fa8d5542906599867877465a Mon Sep 17 00:00:00 2001
|
||||
From: Chao Liu <liuchao173@huawei.com>
|
||||
Date: Tue, 7 May 2024 07:20:34 +0000
|
||||
Subject: [PATCH 2/2] w: Fix w print 0 user when systemd-pam is not
|
||||
installed
|
||||
|
||||
Signed-off-by: SuperSix173 <liuchao173@huawei.com>
|
||||
---
|
||||
src/w.c | 53 ++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 26 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/src/w.c b/src/w.c
|
||||
index fd6e75f..8e30e5d 100644
|
||||
--- a/src/w.c
|
||||
+++ b/src/w.c
|
||||
@@ -805,37 +805,36 @@ int main(int argc, char **argv)
|
||||
printf(_(" IDLE WHAT\n"));
|
||||
}
|
||||
#if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER)
|
||||
- if (sd_booted() > 0) {
|
||||
- char **sessions_list;
|
||||
- int sessions;
|
||||
- int i;
|
||||
+ char **sessions_list;
|
||||
+ int sessions = 0;
|
||||
|
||||
+ if (sd_booted() > 0)
|
||||
sessions = sd_get_sessions (&sessions_list);
|
||||
- if (sessions < 0 && sessions != -ENOENT)
|
||||
- error(EXIT_FAILURE, -sessions, _("error getting sessions"));
|
||||
-
|
||||
- if (sessions >= 0) {
|
||||
- for (int i = 0; i < sessions; i++) {
|
||||
- char *name;
|
||||
- int r;
|
||||
-
|
||||
- if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
|
||||
- error(EXIT_FAILURE, -r, _("get user name failed"));
|
||||
-
|
||||
- if (user) {
|
||||
- if (!strcmp(name, user))
|
||||
- showinfo(sessions_list[i], name, NULL, longform,
|
||||
- maxcmd, from, userlen, fromlen,
|
||||
- ip_addresses, pids);
|
||||
- } else {
|
||||
- showinfo(sessions_list[i], name, NULL, longform, maxcmd,
|
||||
- from, userlen, fromlen, ip_addresses, pids);
|
||||
- }
|
||||
- free(name);
|
||||
- free(sessions_list[i]);
|
||||
+
|
||||
+ if (sessions < 0 && sessions != -ENOENT)
|
||||
+ error(EXIT_FAILURE, -sessions, _("error getting sessions"));
|
||||
+
|
||||
+ if (sessions > 0) {
|
||||
+ for (int i = 0; i < sessions; i++) {
|
||||
+ char *name;
|
||||
+ int r;
|
||||
+
|
||||
+ if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
|
||||
+ error(EXIT_FAILURE, -r, _("get user name failed"));
|
||||
+
|
||||
+ if (user) {
|
||||
+ if (!strcmp(name, user))
|
||||
+ showinfo(sessions_list[i], name, NULL, longform,
|
||||
+ maxcmd, from, userlen, fromlen,
|
||||
+ ip_addresses, pids);
|
||||
+ } else {
|
||||
+ showinfo(sessions_list[i], name, NULL, longform, maxcmd,
|
||||
+ from, userlen, fromlen, ip_addresses, pids);
|
||||
}
|
||||
- free(sessions_list);
|
||||
+ free(name);
|
||||
+ free(sessions_list[i]);
|
||||
}
|
||||
+ free(sessions_list);
|
||||
} else {
|
||||
#endif
|
||||
#ifdef HAVE_UTMPX_H
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: procps-ng
|
||||
Version: 4.0.4
|
||||
Release: 1
|
||||
Release: 6
|
||||
Summary: Utilities that provide system information.
|
||||
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
||||
URL: https://sourceforge.net/projects/procps-ng/
|
||||
@ -11,6 +11,14 @@ Source2: README.top
|
||||
|
||||
Patch1: openeuler-add-M-and-N-options-for-top.patch
|
||||
Patch2: openeuler-top-exit-with-error-when-pid-overflow.patch
|
||||
Patch3: backport-library-address-remaining-cpu-distortions-stat-api.patch
|
||||
Patch4: backport-uptime-fix-output-on-60-seconds.patch
|
||||
Patch5: backport-ps-don-t-lose-tasks-when-sort-used-with-forest-mode.patch
|
||||
Patch6: backport-acknowledge-fix-for-the-lost-tasks-ps-issue.patch
|
||||
Patch7: openeuler-uptime-Fix-uptime-return-0-user-when-systemd-pam-is-.patch
|
||||
Patch8: openeuler-w-Fix-w-print-0-user-when-systemd-pam-is-not-install.patch
|
||||
Patch9: backport-library-implement-guest-total-tics-change-stat-api.patch
|
||||
Patch10: backport-top-adapt-to-that-guest-total-tics-change-stat-api.patch
|
||||
|
||||
BuildRequires: ncurses-devel libtool autoconf automake gcc gettext-devel systemd-devel
|
||||
|
||||
@ -93,6 +101,21 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
%{_mandir}/man*
|
||||
|
||||
%changelog
|
||||
* Tue Jun 25 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-6
|
||||
- top: adapt to guest/total tics change, <stat> api
|
||||
|
||||
* Thu May 9 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-5
|
||||
- uptime/w: fix print 0 user when systemd-pam is not installed
|
||||
|
||||
* Thu Apr 25 2024 yinyongkang <yinyongkang@kylinos.cn> - 4.0.4-4
|
||||
- ps: don't lose tasks when --sort used with forest mode
|
||||
|
||||
* Tue Apr 23 2024 yinyongkang <yinyongkang@kylinos.cn> - 4.0.4-3
|
||||
- uptime: fix output on 60 seconds
|
||||
|
||||
* Tue Apr 02 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-2
|
||||
- library: address remaining cpu distortions, <stat> api
|
||||
|
||||
* Wed Nov 01 2023 liweigang <weigangli99@gmail.com> - 4.0.4-1
|
||||
- update to version v4.0.4
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user