diff mbox series

[meta-oe] atop: upgrade 2.4.0 -> 2.11.0

Message ID 20250328014631.4663-1-thond2009@gmail.com
State Accepted
Headers show
Series [meta-oe] atop: upgrade 2.4.0 -> 2.11.0 | expand

Commit Message

Nguyen Dat Tho March 28, 2025, 1:46 a.m. UTC
From: "tho3.nguyen" <tho3.nguyen@lge.com>

Drop patch already merged
Add patch to fix build with gcc-15

Signed-off-by: tho3.nguyen <tho3.nguyen@lge.com>
---
 ...function-prototypes-solves-issue-322.patch | 1154 +++++++++++++++++
 ...top.init-atop-pm.sh-Avoid-using-bash.patch |   67 -
 .../atop/atop/fix-permissions.patch           |   54 +-
 .../atop/{atop_2.4.0.bb => atop_2.11.0.bb}    |   15 +-
 4 files changed, 1197 insertions(+), 93 deletions(-)
 create mode 100644 meta-oe/recipes-support/atop/atop/0001-Redefine-function-prototypes-solves-issue-322.patch
 delete mode 100644 meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch
 rename meta-oe/recipes-support/atop/{atop_2.4.0.bb => atop_2.11.0.bb} (83%)
diff mbox series

Patch

diff --git a/meta-oe/recipes-support/atop/atop/0001-Redefine-function-prototypes-solves-issue-322.patch b/meta-oe/recipes-support/atop/atop/0001-Redefine-function-prototypes-solves-issue-322.patch
new file mode 100644
index 0000000000..f55ad5318a
--- /dev/null
+++ b/meta-oe/recipes-support/atop/atop/0001-Redefine-function-prototypes-solves-issue-322.patch
@@ -0,0 +1,1154 @@ 
+From ece93ebc7b9ebbb73f92b2238a87b78ddbd4ca98 Mon Sep 17 00:00:00 2001
+From: Gerlof Langeveld <gerlof.langeveld@atoptool.nl>
+Date: Fri, 14 Mar 2025 15:39:30 +0100
+Subject: [PATCH] Redefine function prototypes (solves issue #322)
+
+Certain function prototypes did not explicitly define the
+calling argument types, specifically the prototypes for the
+convert functions defined in the 'detail_printdef' structure.
+These incomplete definitions cause a lot of errors when using
+gcc 1.15 which is based on C23.
+
+Upstream-Status: Backport [ece93eb Redefine function prototypes (solves issue #322)]
+---
+ atop.c        |   5 ++
+ atopacctd.c   |   5 ++
+ atopcat.c     |   6 ++
+ atopconvert.c |   1 +
+ atophide.c    |   5 ++
+ atopsar.c     |   4 ++
+ cgroups.c     |   7 +-
+ drawbar.c     |   4 ++
+ gpucom.c      |   4 ++
+ netatopif.c   |   4 ++
+ photoproc.c   |   4 ++
+ photosyst.c   |   5 ++
+ rawlog.c      |   4 ++
+ showgeneric.c |   4 ++
+ showlinux.h   |  11 ++-
+ showprocs.c   | 188 +++++++++++++++++++++++++-------------------------
+ various.c     |   4 ++
+ 17 files changed, 168 insertions(+), 97 deletions(-)
+
+diff --git a/atop.c b/atop.c
+index fe037fc..ac6aa6d 100644
+--- a/atop.c
++++ b/atop.c
+@@ -118,6 +118,10 @@
+ ** can be linked with 'atop'; the one to use can eventually be chosen
+ ** at runtime. 
+ */
++#define _POSIX_C_SOURCE	
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+@@ -128,6 +132,7 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <unistd.h>
++#include <getopt.h>
+ #include <stdlib.h>
+ #include <signal.h>
+ #include <sys/utsname.h>
+diff --git a/atopacctd.c b/atopacctd.c
+index b16d6a6..c8816b6 100644
+--- a/atopacctd.c
++++ b/atopacctd.c
+@@ -36,6 +36,11 @@
+ ** it under the terms of the GNU General Public License version 2 as
+ ** published by the Free Software Foundation.
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
++
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <stdio.h>
+diff --git a/atopcat.c b/atopcat.c
+index fb014a0..099a888 100644
+--- a/atopcat.c
++++ b/atopcat.c
+@@ -28,9 +28,15 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
++
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/stat.h>
++#include <getopt.h>
+ #include <fcntl.h>
+ #include <time.h>
+ #include <stdio.h>
+diff --git a/atopconvert.c b/atopconvert.c
+index fd34a85..9c083a6 100644
+--- a/atopconvert.c
++++ b/atopconvert.c
+@@ -32,6 +32,7 @@
+ #include <sys/param.h>
+ #include <sys/mman.h>
+ #include <sys/stat.h>
++#include <getopt.h>
+ #include <time.h>
+ #include <stdio.h>
+ #include <errno.h>
+diff --git a/atophide.c b/atophide.c
+index 0502262..313929e 100644
+--- a/atophide.c
++++ b/atophide.c
+@@ -31,6 +31,11 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
++
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/mman.h>
+diff --git a/atopsar.c b/atopsar.c
+index a3dd121..1cf13e8 100644
+--- a/atopsar.c
++++ b/atopsar.c
+@@ -28,6 +28,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+diff --git a/cgroups.c b/cgroups.c
+index d617b48..4f1247c 100644
+--- a/cgroups.c
++++ b/cgroups.c
+@@ -27,6 +27,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+@@ -1189,7 +1193,8 @@ mergecgrouplist(struct cglinesel **cgroupselp, int newdepth,
+ 	//
+ 	cgroupsel = malloc(sizeof(struct cglinesel) * (ncgroups+nprocs));
+ 
+-	ptrverify(cgroupsel, "Malloc for cglinesel structs failed (%d)\n",
++	if (cgroupsel == NULL)
++		ptrverify(cgroupsel, "Malloc for cglinesel structs failed (%d)\n",
+ 					ncgroups + nprocs);
+ 
+ 	*cgroupselp = cgroupsel;
+diff --git a/drawbar.c b/drawbar.c
+index 0ab3b40..c8539bf 100644
+--- a/drawbar.c
++++ b/drawbar.c
+@@ -103,6 +103,10 @@
+ // horizontally scaled by the user, atop might switch from one model to
+ // the other.
+ /////////////////////////////////////////////////////////////////////////////
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <curses.h>
+diff --git a/gpucom.c b/gpucom.c
+index 1ff3818..25e7637 100644
+--- a/gpucom.c
++++ b/gpucom.c
+@@ -22,6 +22,10 @@
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ** See the GNU General Public License for more details.
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/socket.h>
+diff --git a/netatopif.c b/netatopif.c
+index ea67142..d0e9c29 100644
+--- a/netatopif.c
++++ b/netatopif.c
+@@ -22,6 +22,10 @@
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ ** See the GNU General Public License for more details.
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <stdio.h>
+diff --git a/photoproc.c b/photoproc.c
+index 234007b..2b8de20 100644
+--- a/photoproc.c
++++ b/photoproc.c
+@@ -30,6 +30,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+diff --git a/photosyst.c b/photosyst.c
+index 46fccd8..9012946 100644
+--- a/photosyst.c
++++ b/photosyst.c
+@@ -29,6 +29,11 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
++
+ #include <sys/types.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/rawlog.c b/rawlog.c
+index f46430d..541b75c 100644
+--- a/rawlog.c
++++ b/rawlog.c
+@@ -26,6 +26,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+diff --git a/showgeneric.c b/showgeneric.c
+index 0722a64..a472501 100644
+--- a/showgeneric.c
++++ b/showgeneric.c
+@@ -29,6 +29,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+diff --git a/showlinux.h b/showlinux.h
+index e082c72..72c57b9 100644
+--- a/showlinux.h
++++ b/showlinux.h
+@@ -102,9 +102,16 @@ typedef struct
+ {
+         char *head;                      // column header
+         char *configname;                // name as used to config print line
+-        char *(*doactiveconvert)();      // pointer to conv function
++
++	union {
++        	char *(*doactiveconverts)(struct tstat *, int, int);
++        	char *(*doactiveconvertc)(struct cgchainer *, struct tstat *,
++                			int, int, count_t, int, int *);
++	} ac;
++   			                 // pointer to conv function
+                                          // for active process
+-        char *(*doexitconvert)();        // pointer to conv function
++	char *(*doexitconvert)(struct tstat *, int, int);        
++			                 // pointer to conv function
+                                          // for exited process
+ 	char sortcrit;                   // sort criterion similar to showorder
+         int  width;                      // required width
+diff --git a/showprocs.c b/showprocs.c
+index 0db1e31..020cc85 100644
+--- a/showprocs.c
++++ b/showprocs.c
+@@ -510,7 +510,7 @@ showprocline(detail_printpair* elemptr, struct tstat *curstat,
+                 }
+                 else if (curstat->gen.state != 'E')  // active process
+                 {
+-                        printg("%s", curelem.pf->doactiveconvert(curstat, 
++                        printg("%s", curelem.pf->ac.doactiveconverts(curstat, 
+                                                         avgval, nsecs));
+                 }
+                 else                                 // exited process
+@@ -622,7 +622,7 @@ procprt_TID_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TID = 
+-   { "TID", "TID", procprt_TID_ae, procprt_TID_ae, ' ', 5}; //DYNAMIC WIDTH!
++   { "TID", "TID", .ac.doactiveconverts = procprt_TID_ae, procprt_TID_ae, ' ', 5}; //DYNAMIC WIDTH!
+ /***************************************************************/
+ char *
+ procprt_PID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -646,7 +646,7 @@ procprt_PID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_PID = 
+-   { "PID", "PID", procprt_PID_a, procprt_PID_e, ' ', 5}; //DYNAMIC WIDTH!
++   { "PID", "PID", .ac.doactiveconverts = procprt_PID_a, procprt_PID_e, ' ', 5}; //DYNAMIC WIDTH!
+ /***************************************************************/
+ char *
+ procprt_PPID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -670,7 +670,7 @@ procprt_PPID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_PPID = 
+-   { "PPID", "PPID", procprt_PPID_a, procprt_PPID_e, ' ', 5}; //DYNAMIC WIDTH!
++   { "PPID", "PPID", .ac.doactiveconverts = procprt_PPID_a, procprt_PPID_e, ' ', 5}; //DYNAMIC WIDTH!
+ /***************************************************************/
+ char *
+ procprt_VPID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -691,7 +691,7 @@ procprt_VPID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VPID = 
+-   { "VPID", "VPID", procprt_VPID_a, procprt_VPID_e, ' ', 5}; //DYNAMIC WIDTH!
++   { "VPID", "VPID", .ac.doactiveconverts = procprt_VPID_a, procprt_VPID_e, ' ', 5}; //DYNAMIC WIDTH!
+ /***************************************************************/
+ char *
+ procprt_CTID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -709,7 +709,7 @@ procprt_CTID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_CTID = 
+-   { " CTID", "CTID", procprt_CTID_a, procprt_CTID_e, ' ', 5};
++   { " CTID", "CTID", .ac.doactiveconverts = procprt_CTID_a, procprt_CTID_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_CID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -738,7 +738,7 @@ procprt_CID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_CID = 
+-   { "CID/POD        ", "CID", procprt_CID_a, procprt_CID_e, ' ', 15};
++   { "CID/POD        ", "CID", .ac.doactiveconverts = procprt_CID_a, procprt_CID_e, ' ', 15};
+ /***************************************************************/
+ char *
+ procprt_SYSCPU_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -750,7 +750,7 @@ procprt_SYSCPU_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SYSCPU = 
+-   { "SYSCPU", "SYSCPU", procprt_SYSCPU_ae, procprt_SYSCPU_ae, ' ', 6};
++   { "SYSCPU", "SYSCPU", .ac.doactiveconverts = procprt_SYSCPU_ae, procprt_SYSCPU_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_USRCPU_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -762,7 +762,7 @@ procprt_USRCPU_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_USRCPU = 
+-   { "USRCPU", "USRCPU", procprt_USRCPU_ae, procprt_USRCPU_ae, ' ', 6};
++   { "USRCPU", "USRCPU", .ac.doactiveconverts = procprt_USRCPU_ae, procprt_USRCPU_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VGROW_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -780,7 +780,7 @@ procprt_VGROW_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VGROW = 
+-   { " VGROW", "VGROW", procprt_VGROW_a, procprt_VGROW_e, ' ', 6};
++   { " VGROW", "VGROW", .ac.doactiveconverts = procprt_VGROW_a, procprt_VGROW_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_RGROW_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -798,7 +798,7 @@ procprt_RGROW_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RGROW = 
+-   { " RGROW", "RGROW", procprt_RGROW_a, procprt_RGROW_e, ' ', 6};
++   { " RGROW", "RGROW", .ac.doactiveconverts = procprt_RGROW_a, procprt_RGROW_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_MINFLT_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -810,7 +810,7 @@ procprt_MINFLT_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_MINFLT = 
+-   { "MINFLT", "MINFLT", procprt_MINFLT_ae, procprt_MINFLT_ae, ' ', 6};
++   { "MINFLT", "MINFLT", .ac.doactiveconverts = procprt_MINFLT_ae, procprt_MINFLT_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_MAJFLT_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -822,7 +822,7 @@ procprt_MAJFLT_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_MAJFLT = 
+-   { "MAJFLT", "MAJFLT", procprt_MAJFLT_ae, procprt_MAJFLT_ae, ' ', 6};
++   { "MAJFLT", "MAJFLT", .ac.doactiveconverts = procprt_MAJFLT_ae, procprt_MAJFLT_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VSTEXT_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -840,7 +840,7 @@ procprt_VSTEXT_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VSTEXT = 
+-   { "VSTEXT", "VSTEXT", procprt_VSTEXT_a, procprt_VSTEXT_e, ' ', 6};
++   { "VSTEXT", "VSTEXT", .ac.doactiveconverts = procprt_VSTEXT_a, procprt_VSTEXT_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VSIZE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -858,7 +858,7 @@ procprt_VSIZE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VSIZE = 
+-   { " VSIZE", "VSIZE", procprt_VSIZE_a, procprt_VSIZE_e, ' ', 6};
++   { " VSIZE", "VSIZE", .ac.doactiveconverts = procprt_VSIZE_a, procprt_VSIZE_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_RSIZE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -876,7 +876,7 @@ procprt_RSIZE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RSIZE = 
+-   { " RSIZE", "RSIZE", procprt_RSIZE_a, procprt_RSIZE_e, ' ', 6};
++   { " RSIZE", "RSIZE", .ac.doactiveconverts = procprt_RSIZE_a, procprt_RSIZE_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_PSIZE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -897,7 +897,7 @@ procprt_PSIZE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_PSIZE = 
+-   { " PSIZE", "PSIZE", procprt_PSIZE_a, procprt_PSIZE_e, ' ', 6};
++   { " PSIZE", "PSIZE", .ac.doactiveconverts = procprt_PSIZE_a, procprt_PSIZE_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VSLIBS_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -915,7 +915,7 @@ procprt_VSLIBS_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VSLIBS = 
+-   { "VSLIBS", "VSLIBS", procprt_VSLIBS_a, procprt_VSLIBS_e, ' ', 6};
++   { "VSLIBS", "VSLIBS", .ac.doactiveconverts = procprt_VSLIBS_a, procprt_VSLIBS_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VDATA_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -933,7 +933,7 @@ procprt_VDATA_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VDATA = 
+-   { " VDATA", "VDATA", procprt_VDATA_a, procprt_VDATA_e, ' ', 6};
++   { " VDATA", "VDATA", .ac.doactiveconverts = procprt_VDATA_a, procprt_VDATA_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_VSTACK_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -951,7 +951,7 @@ procprt_VSTACK_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_VSTACK = 
+-   { "VSTACK", "VSTACK", procprt_VSTACK_a, procprt_VSTACK_e, ' ', 6};
++   { "VSTACK", "VSTACK", .ac.doactiveconverts = procprt_VSTACK_a, procprt_VSTACK_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_SWAPSZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -969,7 +969,7 @@ procprt_SWAPSZ_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SWAPSZ = 
+-   { "SWAPSZ", "SWAPSZ", procprt_SWAPSZ_a, procprt_SWAPSZ_e, ' ', 6};
++   { "SWAPSZ", "SWAPSZ", .ac.doactiveconverts = procprt_SWAPSZ_a, procprt_SWAPSZ_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_LOCKSZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -987,7 +987,7 @@ procprt_LOCKSZ_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_LOCKSZ = 
+-   { "LOCKSZ", "LOCKSZ", procprt_LOCKSZ_a, procprt_LOCKSZ_e, ' ', 6};
++   { "LOCKSZ", "LOCKSZ", .ac.doactiveconverts = procprt_LOCKSZ_a, procprt_LOCKSZ_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_CMD_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1010,7 +1010,7 @@ procprt_CMD_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_CMD = 
+-   { "CMD           ", "CMD", procprt_CMD_a, procprt_CMD_e, ' ', 14};
++   { "CMD           ", "CMD", .ac.doactiveconverts = procprt_CMD_a, procprt_CMD_e, ' ', 14};
+ /***************************************************************/
+ char *
+ procprt_RUID_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -1023,7 +1023,7 @@ procprt_RUID_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RUID = 
+-   { "RUID    ", "RUID", procprt_RUID_ae, procprt_RUID_ae, ' ', 8};
++   { "RUID    ", "RUID", .ac.doactiveconverts = procprt_RUID_ae, procprt_RUID_ae, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_EUID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1042,7 +1042,7 @@ procprt_EUID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_EUID = 
+-   { "EUID    ", "EUID", procprt_EUID_a, procprt_EUID_e, ' ', 8};
++   { "EUID    ", "EUID", .ac.doactiveconverts = procprt_EUID_a, procprt_EUID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_SUID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1061,7 +1061,7 @@ procprt_SUID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SUID = 
+-   { "SUID    ", "SUID", procprt_SUID_a, procprt_SUID_e, ' ', 8};
++   { "SUID    ", "SUID", .ac.doactiveconverts = procprt_SUID_a, procprt_SUID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_FSUID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1080,7 +1080,7 @@ procprt_FSUID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_FSUID = 
+-   { "FSUID   ", "FSUID", procprt_FSUID_a, procprt_FSUID_e, ' ', 8};
++   { "FSUID   ", "FSUID", .ac.doactiveconverts = procprt_FSUID_a, procprt_FSUID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_RGID_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -1093,7 +1093,7 @@ procprt_RGID_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RGID = 
+-   { "RGID    ", "RGID", procprt_RGID_ae, procprt_RGID_ae, ' ', 8};
++   { "RGID    ", "RGID", .ac.doactiveconverts = procprt_RGID_ae, procprt_RGID_ae, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_EGID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1112,7 +1112,7 @@ procprt_EGID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_EGID = 
+-   { "EGID    ", "EGID", procprt_EGID_a, procprt_EGID_e, ' ', 8};
++   { "EGID    ", "EGID", .ac.doactiveconverts = procprt_EGID_a, procprt_EGID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_SGID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1131,7 +1131,7 @@ procprt_SGID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SGID = 
+-   { "SGID    ", "SGID", procprt_SGID_a, procprt_SGID_e, ' ', 8};
++   { "SGID    ", "SGID", .ac.doactiveconverts = procprt_SGID_a, procprt_SGID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_FSGID_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1150,7 +1150,7 @@ procprt_FSGID_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_FSGID = 
+-   { "FSGID   ", "FSGID", procprt_FSGID_a, procprt_FSGID_e, ' ', 8};
++   { "FSGID   ", "FSGID", .ac.doactiveconverts = procprt_FSGID_a, procprt_FSGID_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_STDATE_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -1162,7 +1162,7 @@ procprt_STDATE_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_STDATE = 
+-   { "  STDATE  ", "STDATE", procprt_STDATE_ae, procprt_STDATE_ae, ' ', 10};
++   { "  STDATE  ", "STDATE", .ac.doactiveconverts = procprt_STDATE_ae, procprt_STDATE_ae, ' ', 10};
+ /***************************************************************/
+ char *
+ procprt_STTIME_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -1174,7 +1174,7 @@ procprt_STTIME_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_STTIME = 
+-   { " STTIME ", "STTIME", procprt_STTIME_ae, procprt_STTIME_ae, ' ', 8};
++   { " STTIME ", "STTIME", .ac.doactiveconverts = procprt_STTIME_ae, procprt_STTIME_ae, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_ENDATE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1197,7 +1197,7 @@ procprt_ENDATE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_ENDATE = 
+-   { "  ENDATE  ", "ENDATE", procprt_ENDATE_a, procprt_ENDATE_e, ' ', 10};
++   { "  ENDATE  ", "ENDATE", .ac.doactiveconverts = procprt_ENDATE_a, procprt_ENDATE_e, ' ', 10};
+ /***************************************************************/
+ char *
+ procprt_ENTIME_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1220,7 +1220,7 @@ procprt_ENTIME_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_ENTIME = 
+-   { " ENTIME ", "ENTIME", procprt_ENTIME_a, procprt_ENTIME_e, ' ', 8};
++   { " ENTIME ", "ENTIME", .ac.doactiveconverts = procprt_ENTIME_a, procprt_ENTIME_e, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_THR_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1238,7 +1238,7 @@ procprt_THR_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_THR = 
+-   { " THR", "THR", procprt_THR_a, procprt_THR_e, ' ', 4};
++   { " THR", "THR", .ac.doactiveconverts = procprt_THR_a, procprt_THR_e, ' ', 4};
+ /***************************************************************/
+ char *
+ procprt_TRUN_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1256,7 +1256,7 @@ procprt_TRUN_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TRUN = 
+-   { "TRUN", "TRUN", procprt_TRUN_a, procprt_TRUN_e, ' ', 4};
++   { "TRUN", "TRUN", .ac.doactiveconverts = procprt_TRUN_a, procprt_TRUN_e, ' ', 4};
+ /***************************************************************/
+ char *
+ procprt_TSLPI_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1274,7 +1274,7 @@ procprt_TSLPI_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TSLPI = 
+-   { "TSLPI", "TSLPI", procprt_TSLPI_a, procprt_TSLPI_e, ' ', 5};
++   { "TSLPI", "TSLPI", .ac.doactiveconverts = procprt_TSLPI_a, procprt_TSLPI_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_TSLPU_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1292,7 +1292,7 @@ procprt_TSLPU_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TSLPU = 
+-   { "TSLPU", "TSLPU", procprt_TSLPU_a, procprt_TSLPU_e, ' ', 5};
++   { "TSLPU", "TSLPU", .ac.doactiveconverts = procprt_TSLPU_a, procprt_TSLPU_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_TIDLE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1310,7 +1310,7 @@ procprt_TIDLE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TIDLE = 
+-   { "TIDLE", "TIDLE", procprt_TIDLE_a, procprt_TIDLE_e, ' ', 5};
++   { "TIDLE", "TIDLE", .ac.doactiveconverts = procprt_TIDLE_a, procprt_TIDLE_e, ' ', 5};
+ /***************************************************************/
+ #define SCHED_NORMAL	0
+ #define SCHED_FIFO	1
+@@ -1357,7 +1357,7 @@ procprt_POLI_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_POLI = 
+-   { "POLI", "POLI", procprt_POLI_a, procprt_POLI_e, ' ', 4};
++   { "POLI", "POLI", .ac.doactiveconverts = procprt_POLI_a, procprt_POLI_e, ' ', 4};
+ /***************************************************************/
+ char *
+ procprt_NICE_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1375,7 +1375,7 @@ procprt_NICE_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_NICE = 
+-   { "NICE", "NICE", procprt_NICE_a, procprt_NICE_e, ' ', 4};
++   { "NICE", "NICE", .ac.doactiveconverts = procprt_NICE_a, procprt_NICE_e, ' ', 4};
+ /***************************************************************/
+ char *
+ procprt_PRI_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1393,7 +1393,7 @@ procprt_PRI_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_PRI = 
+-   { "PRI", "PRI", procprt_PRI_a, procprt_PRI_e, ' ', 3};
++   { "PRI", "PRI", .ac.doactiveconverts = procprt_PRI_a, procprt_PRI_e, ' ', 3};
+ /***************************************************************/
+ char *
+ procprt_RTPR_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1411,7 +1411,7 @@ procprt_RTPR_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RTPR = 
+-   { "RTPR", "RTPR", procprt_RTPR_a, procprt_RTPR_e, ' ', 4};
++   { "RTPR", "RTPR", .ac.doactiveconverts = procprt_RTPR_a, procprt_RTPR_e, ' ', 4};
+ /***************************************************************/
+ char *
+ procprt_CURCPU_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1429,7 +1429,7 @@ procprt_CURCPU_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_CURCPU = 
+-   { "CPUNR", "CPUNR", procprt_CURCPU_a, procprt_CURCPU_e, ' ', 5};
++   { "CPUNR", "CPUNR", .ac.doactiveconverts = procprt_CURCPU_a, procprt_CURCPU_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_ST_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1473,7 +1473,7 @@ procprt_ST_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_ST = 
+-   { "ST", "ST", procprt_ST_a, procprt_ST_e, ' ', 2};
++   { "ST", "ST", .ac.doactiveconverts = procprt_ST_a, procprt_ST_e, ' ', 2};
+ /***************************************************************/
+ char *
+ procprt_EXC_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1496,7 +1496,7 @@ procprt_EXC_e(struct tstat *curstat, int avgval, int nsecs)
+ 
+ 
+ detail_printdef procprt_EXC = 
+-   { "EXC", "EXC", procprt_EXC_a, procprt_EXC_e, ' ', 3};
++   { "EXC", "EXC", .ac.doactiveconverts = procprt_EXC_a, procprt_EXC_e, ' ', 3};
+ /***************************************************************/
+ char *
+ procprt_S_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1515,7 +1515,7 @@ procprt_S_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_S = 
+-   { "S", "S", procprt_S_a, procprt_S_e, ' ', 1};
++   { "S", "S", .ac.doactiveconverts = procprt_S_a, procprt_S_e, ' ', 1};
+ 
+ /***************************************************************/
+ char *
+@@ -1546,7 +1546,7 @@ procprt_COMMAND_LINE_ae(struct tstat *curstat, int avgval, int nsecs)
+ detail_printdef procprt_COMMAND_LINE = 
+        { "COMMAND-LINE (horizontal scroll with <- and -> keys)",
+ 	"COMMAND-LINE", 
+-        procprt_COMMAND_LINE_ae, procprt_COMMAND_LINE_ae, ' ', 0, 1};
++        .ac.doactiveconverts = procprt_COMMAND_LINE_ae, procprt_COMMAND_LINE_ae, ' ', 0, 1};
+ /***************************************************************/
+ char *
+ procprt_NPROCS_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -1558,7 +1558,7 @@ procprt_NPROCS_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_NPROCS = 
+-   { "NPROCS", "NPROCS", procprt_NPROCS_ae, procprt_NPROCS_ae, ' ', 6};
++   { "NPROCS", "NPROCS", .ac.doactiveconverts = procprt_NPROCS_ae, procprt_NPROCS_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_RDDSK_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1580,7 +1580,7 @@ procprt_RDDSK_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RDDSK = 
+-   { " RDDSK", "RDDSK", procprt_RDDSK_a, procprt_RDDSK_e, ' ', 6};
++   { " RDDSK", "RDDSK", .ac.doactiveconverts = procprt_RDDSK_a, procprt_RDDSK_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_WRDSK_a(struct tstat *curstat, int avgval, int nsecs) 
+@@ -1602,7 +1602,7 @@ procprt_WRDSK_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_WRDSK = 
+-   { " WRDSK", "WRDSK", procprt_WRDSK_a, procprt_WRDSK_e, ' ', 6};
++   { " WRDSK", "WRDSK", .ac.doactiveconverts = procprt_WRDSK_a, procprt_WRDSK_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_CWRDSK_a(struct tstat *curstat, int avgval, int nsecs) 
+@@ -1621,7 +1621,7 @@ procprt_CWRDSK_a(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_CWRDSK = 
+-   {" WRDSK", "CWRDSK", procprt_CWRDSK_a, procprt_WRDSK_e, ' ', 6};
++   {" WRDSK", "CWRDSK", .ac.doactiveconverts = procprt_CWRDSK_a, procprt_WRDSK_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_WCANCEL_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1643,7 +1643,7 @@ procprt_WCANCEL_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_WCANCEL = 
+-   {"WCANCL", "WCANCL", procprt_WCANCEL_a, procprt_WCANCEL_e, ' ', 6};
++   {"WCANCL", "WCANCL", .ac.doactiveconverts = procprt_WCANCEL_a, procprt_WCANCEL_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_TCPRCV_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1672,7 +1672,7 @@ procprt_TCPRCV_e(struct tstat *curstat, int avgval, int nsecs)
+ 
+ 
+ detail_printdef procprt_TCPRCV = 
+-   { "TCPRCV", "TCPRCV", procprt_TCPRCV_a, procprt_TCPRCV_e, ' ', 6};
++   { "TCPRCV", "TCPRCV", .ac.doactiveconverts = procprt_TCPRCV_a, procprt_TCPRCV_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_TCPRASZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1704,7 +1704,7 @@ procprt_TCPRASZ_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TCPRASZ = 
+-   { "TCPRASZ", "TCPRASZ", procprt_TCPRASZ_a, procprt_TCPRASZ_e, ' ', 7};
++   { "TCPRASZ", "TCPRASZ", .ac.doactiveconverts = procprt_TCPRASZ_a, procprt_TCPRASZ_e, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_TCPSND_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1732,7 +1732,7 @@ procprt_TCPSND_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TCPSND = 
+-   { "TCPSND", "TCPSND", procprt_TCPSND_a, procprt_TCPSND_e, ' ', 6};
++   { "TCPSND", "TCPSND", .ac.doactiveconverts = procprt_TCPSND_a, procprt_TCPSND_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_TCPSASZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1764,7 +1764,7 @@ procprt_TCPSASZ_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_TCPSASZ = 
+-   { "TCPSASZ", "TCPSASZ", procprt_TCPSASZ_a, procprt_TCPSASZ_e, ' ', 7};
++   { "TCPSASZ", "TCPSASZ", .ac.doactiveconverts = procprt_TCPSASZ_a, procprt_TCPSASZ_e, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_UDPRCV_a(struct tstat *curstat, int avgval, int nsecs)        
+@@ -1793,7 +1793,7 @@ procprt_UDPRCV_e(struct tstat *curstat, int avgval, int nsecs)
+ 
+ 
+ detail_printdef procprt_UDPRCV = 
+-   { "UDPRCV", "UDPRCV", procprt_UDPRCV_a, procprt_UDPRCV_e, ' ', 6};
++   { "UDPRCV", "UDPRCV", .ac.doactiveconverts = procprt_UDPRCV_a, procprt_UDPRCV_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_UDPRASZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1826,7 +1826,7 @@ procprt_UDPRASZ_e(struct tstat *curstat, int avgval, int nsecs)
+ 
+ 
+ detail_printdef procprt_UDPRASZ = 
+-   { "UDPRASZ", "UDPRASZ", procprt_UDPRASZ_a, procprt_UDPRASZ_e, ' ', 7};
++   { "UDPRASZ", "UDPRASZ", .ac.doactiveconverts = procprt_UDPRASZ_a, procprt_UDPRASZ_e, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_UDPSND_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1854,7 +1854,7 @@ procprt_UDPSND_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_UDPSND = 
+-   { "UDPSND", "UDPSND", procprt_UDPSND_a, procprt_UDPSND_e, ' ', 6};
++   { "UDPSND", "UDPSND", .ac.doactiveconverts = procprt_UDPSND_a, procprt_UDPSND_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_UDPSASZ_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1887,7 +1887,7 @@ procprt_UDPSASZ_e(struct tstat *curstat, int avgval, int nsecs)
+ 
+ 
+ detail_printdef procprt_UDPSASZ = 
+-   { "UDPSASZ", "UDPSASZ", procprt_UDPSASZ_a, procprt_UDPSASZ_e, ' ', 7};
++   { "UDPSASZ", "UDPSASZ", .ac.doactiveconverts = procprt_UDPSASZ_a, procprt_UDPSASZ_e, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_RNET_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1917,7 +1917,7 @@ procprt_RNET_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RNET = 
+-   { " RNET", "RNET", procprt_RNET_a, procprt_RNET_e, ' ', 5};
++   { " RNET", "RNET", .ac.doactiveconverts = procprt_RNET_a, procprt_RNET_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_SNET_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1945,7 +1945,7 @@ procprt_SNET_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SNET = 
+-   { " SNET", "SNET", procprt_SNET_a, procprt_SNET_e, ' ', 5};
++   { " SNET", "SNET", .ac.doactiveconverts = procprt_SNET_a, procprt_SNET_e, ' ', 5};
+ /***************************************************************/
+ char *
+ procprt_BANDWI_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -1974,7 +1974,7 @@ procprt_BANDWI_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_BANDWI = 
+-   { "   BANDWI", "BANDWI", procprt_BANDWI_a, procprt_BANDWI_e, ' ', 9};
++   { "   BANDWI", "BANDWI", .ac.doactiveconverts = procprt_BANDWI_a, procprt_BANDWI_e, ' ', 9};
+ /***************************************************************/
+ char *
+ procprt_BANDWO_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2003,7 +2003,7 @@ procprt_BANDWO_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_BANDWO = 
+-   { "   BANDWO", "BANDWO", procprt_BANDWO_a, procprt_BANDWO_e, ' ', 9};
++   { "   BANDWO", "BANDWO", .ac.doactiveconverts = procprt_BANDWO_a, procprt_BANDWO_e, ' ', 9};
+ /***************************************************************/
+ static void
+ format_bandw(char *buf, count_t kbps)
+@@ -2069,7 +2069,7 @@ procprt_GPULIST_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_GPULIST = 
+-   { " GPUNUMS", "GPULIST", procprt_GPULIST_ae, procprt_GPULIST_ae, ' ', 8};
++   { " GPUNUMS", "GPULIST", .ac.doactiveconverts = procprt_GPULIST_ae, procprt_GPULIST_ae, ' ', 8};
+ /***************************************************************/
+ char *
+ procprt_GPUMEMNOW_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -2084,7 +2084,7 @@ procprt_GPUMEMNOW_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_GPUMEMNOW = 
+-   { "MEMNOW", "GPUMEM", procprt_GPUMEMNOW_ae, procprt_GPUMEMNOW_ae, ' ', 6};
++   { "MEMNOW", "GPUMEM", .ac.doactiveconverts = procprt_GPUMEMNOW_ae, procprt_GPUMEMNOW_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_GPUMEMAVG_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -2103,7 +2103,7 @@ procprt_GPUMEMAVG_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_GPUMEMAVG = 
+-   { "MEMAVG", "GPUMEMAVG", procprt_GPUMEMAVG_ae, procprt_GPUMEMAVG_ae, ' ', 6};
++   { "MEMAVG", "GPUMEMAVG", .ac.doactiveconverts = procprt_GPUMEMAVG_ae, procprt_GPUMEMAVG_ae, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_GPUGPUBUSY_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -2121,7 +2121,7 @@ procprt_GPUGPUBUSY_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_GPUGPUBUSY = 
+-   { "GPUBUSY", "GPUGPUBUSY", procprt_GPUGPUBUSY_ae, procprt_GPUGPUBUSY_ae, ' ', 7};
++   { "GPUBUSY", "GPUGPUBUSY", .ac.doactiveconverts = procprt_GPUGPUBUSY_ae, procprt_GPUGPUBUSY_ae, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_GPUMEMBUSY_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -2139,7 +2139,7 @@ procprt_GPUMEMBUSY_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_GPUMEMBUSY = 
+-   { "MEMBUSY", "GPUMEMBUSY", procprt_GPUMEMBUSY_ae, procprt_GPUMEMBUSY_ae, ' ', 7};
++   { "MEMBUSY", "GPUMEMBUSY", .ac.doactiveconverts = procprt_GPUMEMBUSY_ae, procprt_GPUMEMBUSY_ae, ' ', 7};
+ /***************************************************************/
+ char *
+ procprt_WCHAN_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2164,7 +2164,7 @@ procprt_WCHAN_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_WCHAN =
+-   { "WCHAN          ", "WCHAN", procprt_WCHAN_a, procprt_WCHAN_e, ' ', 15};
++   { "WCHAN          ", "WCHAN", .ac.doactiveconverts = procprt_WCHAN_a, procprt_WCHAN_e, ' ', 15};
+ /***************************************************************/
+ char *
+ procprt_RUNDELAY_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2185,7 +2185,7 @@ procprt_RUNDELAY_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_RUNDELAY =
+-   { "RDELAY", "RDELAY", procprt_RUNDELAY_a, procprt_RUNDELAY_e, ' ', 6};
++   { "RDELAY", "RDELAY", .ac.doactiveconverts = procprt_RUNDELAY_a, procprt_RUNDELAY_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_BLKDELAY_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2206,7 +2206,7 @@ procprt_BLKDELAY_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_BLKDELAY =
+-   { "BDELAY", "BDELAY", procprt_BLKDELAY_a, procprt_BLKDELAY_e, ' ', 6};
++   { "BDELAY", "BDELAY", .ac.doactiveconverts = procprt_BLKDELAY_a, procprt_BLKDELAY_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_NVCSW_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2224,7 +2224,7 @@ procprt_NVCSW_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_NVCSW =
+-   { " NVCSW", "NVCSW", procprt_NVCSW_a, procprt_NVCSW_e, ' ', 6};
++   { " NVCSW", "NVCSW", .ac.doactiveconverts = procprt_NVCSW_a, procprt_NVCSW_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_NIVCSW_a(struct tstat *curstat, int avgval, int nsecs)
+@@ -2242,7 +2242,7 @@ procprt_NIVCSW_e(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_NIVCSW =
+-   { "NIVCSW", "NIVCSW", procprt_NIVCSW_a, procprt_NIVCSW_e, ' ', 6};
++   { "NIVCSW", "NIVCSW", .ac.doactiveconverts = procprt_NIVCSW_a, procprt_NIVCSW_e, ' ', 6};
+ /***************************************************************/
+ char *
+ procprt_SORTITEM_ae(struct tstat *curstat, int avgval, int nsecs)
+@@ -2251,7 +2251,7 @@ procprt_SORTITEM_ae(struct tstat *curstat, int avgval, int nsecs)
+ }
+ 
+ detail_printdef procprt_SORTITEM =   // width is dynamically defined!
+-   { 0, "SORTITEM", procprt_SORTITEM_ae, procprt_SORTITEM_ae, ' ', 4};
++   { 0, "SORTITEM", .ac.doactiveconverts = procprt_SORTITEM_ae, procprt_SORTITEM_ae, ' ', 4};
+ 
+ 
+ /***************************************************************/
+@@ -2382,7 +2382,7 @@ showcgroupline(detail_printpair* elemptr,
+ 
+ 		color = 0;
+ 
+-		buf = curelem.pf->doactiveconvert(cgchain, tstat,
++		buf = curelem.pf->ac.doactiveconvertc(cgchain, tstat,
+ 				avgval, nsecs, cputicks, nrcpu, &color);
+ 
+                 if (screen)
+@@ -2513,7 +2513,7 @@ cgroup_CGROUP_PATH(struct cgchainer *cgchain, struct tstat *tstat,
+ 
+ detail_printdef cgroupprt_CGROUP_PATH = 
+        {"CGROUP (scroll: <- ->)    ", "CGRPATH", 
+-        cgroup_CGROUP_PATH, NULL, ' ', 26, 0};
++	.ac.doactiveconvertc = cgroup_CGROUP_PATH, NULL, ' ', 26, 0};
+ /***************************************************************/
+ char *
+ cgroup_CGRNPROCS(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2530,7 +2530,7 @@ cgroup_CGRNPROCS(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRNPROCS = 
+-   { "NPROCS", "CGRNPROCS", cgroup_CGRNPROCS, NULL, ' ', 6};
++   { "NPROCS", "CGRNPROCS", .ac.doactiveconvertc = cgroup_CGRNPROCS, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRNPROCSB(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2547,7 +2547,7 @@ cgroup_CGRNPROCSB(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRNPROCSB = 
+-   { "PBELOW", "CGRNPROCSB", cgroup_CGRNPROCSB, NULL, ' ', 6};
++   { "PBELOW", "CGRNPROCSB", .ac.doactiveconvertc = cgroup_CGRNPROCSB, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRCPUBUSY(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2599,7 +2599,7 @@ cgroup_CGRCPUBUSY(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRCPUBUSY =
+-   { "CPUBUSY", "CGRCPUBUSY", cgroup_CGRCPUBUSY, NULL, 'C', 7};
++   { "CPUBUSY", "CGRCPUBUSY", .ac.doactiveconvertc = cgroup_CGRCPUBUSY, NULL, 'C', 7};
+ /***************************************************************/
+ char *
+ cgroup_CGRCPUPSI(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2629,7 +2629,7 @@ cgroup_CGRCPUPSI(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRCPUPSI =
+-   { "CPUPS", "CGRCPUPSI", cgroup_CGRCPUPSI, NULL, ' ', 5};
++   { "CPUPS", "CGRCPUPSI", .ac.doactiveconvertc = cgroup_CGRCPUPSI, NULL, ' ', 5};
+ /***************************************************************/
+ char *
+ cgroup_CGRCPUMAX(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2672,7 +2672,7 @@ cgroup_CGRCPUMAX(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRCPUMAX =
+-   { "CPUMAX", "CGRCPUMAX", cgroup_CGRCPUMAX, NULL, ' ', 6};
++   { "CPUMAX", "CGRCPUMAX", .ac.doactiveconvertc = cgroup_CGRCPUMAX, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRCPUWGT(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2695,7 +2695,7 @@ cgroup_CGRCPUWGT(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRCPUWGT =
+-   { "CPUWGT", "CGRCPUWGT", cgroup_CGRCPUWGT, NULL, ' ', 6};
++   { "CPUWGT", "CGRCPUWGT", .ac.doactiveconvertc = cgroup_CGRCPUWGT, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRMEMORY(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2740,7 +2740,7 @@ cgroup_CGRMEMORY(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRMEMORY =
+-   { "MEMORY", "CGRMEMORY", cgroup_CGRMEMORY, NULL, 'M', 6};
++   { "MEMORY", "CGRMEMORY", .ac.doactiveconvertc = cgroup_CGRMEMORY, NULL, 'M', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRMEMPSI(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2770,7 +2770,7 @@ cgroup_CGRMEMPSI(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRMEMPSI =
+-   { "MEMPS", "CGRMEMPSI", cgroup_CGRMEMPSI, NULL, ' ', 5};
++   { "MEMPS", "CGRMEMPSI", .ac.doactiveconvertc = cgroup_CGRMEMPSI, NULL, ' ', 5};
+ /***************************************************************/
+ char *
+ cgroup_CGRMEMMAX(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2810,7 +2810,7 @@ cgroup_CGRMEMMAX(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRMEMMAX =
+-   { "MEMMAX", "CGRMEMMAX", cgroup_CGRMEMMAX, NULL, ' ', 6};
++   { "MEMMAX", "CGRMEMMAX", .ac.doactiveconvertc = cgroup_CGRMEMMAX, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRSWPMAX(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2835,7 +2835,7 @@ cgroup_CGRSWPMAX(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRSWPMAX =
+-   { "SWPMAX", "CGRSWPMAX", cgroup_CGRSWPMAX, NULL, ' ', 6};
++   { "SWPMAX", "CGRSWPMAX", .ac.doactiveconvertc = cgroup_CGRSWPMAX, NULL, ' ', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRDISKIO(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2864,7 +2864,7 @@ cgroup_CGRDISKIO(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRDISKIO =
+-   { "DISKIO", "CGRDISKIO", cgroup_CGRDISKIO, NULL, 'D', 6};
++   { "DISKIO", "CGRDISKIO", .ac.doactiveconvertc = cgroup_CGRDISKIO, NULL, 'D', 6};
+ /***************************************************************/
+ char *
+ cgroup_CGRDSKPSI(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2894,7 +2894,7 @@ cgroup_CGRDSKPSI(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRDSKPSI =
+-   { "DSKPS", "CGRDSKPSI", cgroup_CGRDSKPSI, NULL, ' ', 5};
++   { "DSKPS", "CGRDSKPSI", .ac.doactiveconvertc = cgroup_CGRDSKPSI, NULL, ' ', 5};
+ /***************************************************************/
+ char *
+ cgroup_CGRDSKWGT(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2917,7 +2917,7 @@ cgroup_CGRDSKWGT(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRDSKWGT =
+-   { "IOWGT", "CGRDSKWGT", cgroup_CGRDSKWGT, NULL, ' ', 5};
++   { "IOWGT", "CGRDSKWGT", .ac.doactiveconvertc = cgroup_CGRDSKWGT, NULL, ' ', 5};
+ /***************************************************************/
+ char *
+ cgroup_CGRPID(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2934,7 +2934,7 @@ cgroup_CGRPID(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRPID = 
+-   { "PID", "CGRPID", cgroup_CGRPID, NULL, ' ', 5}; //DYNAMIC WIDTH!
++   { "PID", "CGRPID", .ac.doactiveconvertc = cgroup_CGRPID, NULL, ' ', 5}; //DYNAMIC WIDTH!
+ /***************************************************************/
+ char *
+ cgroup_CGRCMD(struct cgchainer *cgchain, struct tstat *tstat,
+@@ -2963,5 +2963,5 @@ cgroup_CGRCMD(struct cgchainer *cgchain, struct tstat *tstat,
+ }
+ 
+ detail_printdef cgroupprt_CGRCMD = 
+-   { "CMD           ", "CGRCMD", cgroup_CGRCMD, NULL, ' ', 14};
++   { "CMD           ", "CGRCMD", .ac.doactiveconvertc = cgroup_CGRCMD, NULL, ' ', 14};
+ /***************************************************************/
+diff --git a/various.c b/various.c
+index c175c10..906a529 100644
+--- a/various.c
++++ b/various.c
+@@ -29,6 +29,10 @@
+ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ** --------------------------------------------------------------------------
+ */
++#define _POSIX_C_SOURCE
++#define _XOPEN_SOURCE
++#define _GNU_SOURCE
++#define _DEFAULT_SOURCE
+ 
+ #include <sys/types.h>
+ #include <sys/param.h>
+-- 
+2.34.1
+
diff --git a/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch b/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch
deleted file mode 100644
index facb257be6..0000000000
--- a/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch
+++ /dev/null
@@ -1,67 +0,0 @@ 
-From ffc8ba8d324243a923abe48e9758adecb03d24a4 Mon Sep 17 00:00:00 2001
-From: Peter Kjellerstedt <pkj@axis.com>
-Date: Tue, 12 Feb 2019 21:25:23 +0100
-Subject: [PATCH] atop.daily, atop.init, atop-pm.sh: Avoid using bash
-
-Avoid using bash and bashisms when not necesary. On some systems,
-e.g., embedded products, bash may not be available by default.
-
-Upstream-Status: Submitted [https://github.com/Atoptool/atop/pull/50]
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
----
- atop-pm.sh | 2 +-
- atop.daily | 4 ++--
- atop.init  | 4 ++--
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/atop-pm.sh b/atop-pm.sh
-index 7f41a86..3ff4ab5 100755
---- a/atop-pm.sh
-+++ b/atop-pm.sh
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- 
- case "$1" in
- 	pre)	/usr/bin/systemctl stop atop
-diff --git a/atop.daily b/atop.daily
-index 57a9507..fe5a11b 100755
---- a/atop.daily
-+++ b/atop.daily
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- 
- LOGOPTS="-R"				# default options
- LOGINTERVAL=600				# default interval in seconds
-@@ -38,7 +38,7 @@ then
- 
- 	while ps -p `cat "$PIDFILE"` > /dev/null
- 	do
--		let CNT+=1
-+		CNT=$((CNT + 1))
- 
- 		if [ $CNT -gt 5 ]
- 		then
-diff --git a/atop.init b/atop.init
-index e6e11dc..03c3f02 100755
---- a/atop.init
-+++ b/atop.init
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # atop		Startup script for the Atop process logging in background
- #
-@@ -47,7 +47,7 @@ case "$1" in
- 
- 		while ps -p `cat $PIDFILE` > /dev/null
- 		do
--			let CNT+=1
-+			CNT=$((CNT + 1))
- 
- 			if [ $CNT -gt 5 ]
- 			then
--- 
-2.12.0
-
diff --git a/meta-oe/recipes-support/atop/atop/fix-permissions.patch b/meta-oe/recipes-support/atop/atop/fix-permissions.patch
index 8488b38000..10f504b472 100644
--- a/meta-oe/recipes-support/atop/atop/fix-permissions.patch
+++ b/meta-oe/recipes-support/atop/atop/fix-permissions.patch
@@ -8,24 +8,32 @@  everyone could read.
 
 Upstream-Status: Inappropriate [embedded specific]
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
+Signed-off-by: Tho Dat Nguyen <tho3.nguyen@lge.com>
 ---
- Makefile | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ Makefile | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index 3bf5929..1221ee4 100644
+index a6f196b..7786f93 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -72,7 +72,7 @@ systemdinstall:	genericinstall
- 		chmod 0644            $(DESTDIR)$(SYSDPATH)/atopacct.service
- 		cp atop.cronsystemd   $(DESTDIR)$(CRNPATH)/atop
- 		cp atop-pm.sh         $(DESTDIR)$(PMPATHD)
--		chmod 0711            $(DESTDIR)$(PMPATHD)/atop-pm.sh
-+		chmod 0755            $(DESTDIR)$(PMPATHD)/atop-pm.sh
+@@ -77,7 +77,7 @@ install:	genericinstall
+ 		cp atopacct.service    $(DESTDIR)$(SYSDPATH)
+ 		chmod 0644             $(DESTDIR)$(SYSDPATH)/atopacct.service
+ 		cp atop-pm.sh          $(DESTDIR)$(PMPATHD)
+-		chmod 0711             $(DESTDIR)$(PMPATHD)/atop-pm.sh
++		chmod 0755             $(DESTDIR)$(PMPATHD)/atop-pm.sh
  		#
  		# only when making on target system:
  		#
-@@ -97,11 +97,11 @@ sysvinstall:	genericinstall
+@@ -107,17 +107,17 @@ sysvinstall:	genericinstall
+ 		cp atopacct.init  $(DESTDIR)$(INIPATH)/atopacct
+ 		cp atop.cronsysv  $(DESTDIR)$(CRNPATH)/atop
+ 		cp atop.daily     $(DESTDIR)$(SCRPATH)
+-		chmod 0711        $(DESTDIR)$(SCRPATH)/atop.daily
++		chmod 0755        $(DESTDIR)$(SCRPATH)/atop.daily
+ 		touch             $(DESTDIR)$(LOGPATH)/dummy_before
+ 		touch             $(DESTDIR)$(LOGPATH)/dummy_after
  		#
  		if [   -d $(DESTDIR)$(PMPATH1) ]; 			\
  		then	cp 45atoppm $(DESTDIR)$(PMPATH1); 		\
@@ -39,21 +47,27 @@  index 3bf5929..1221ee4 100644
  		fi
  		#
  		#
-@@ -145,7 +145,7 @@ genericinstall:	atop atopacctd atopconvert
+@@ -160,7 +160,7 @@ genericinstall:	atop atopacctd atopconvert atopcat atophide
+ 		chmod 644      		$(DESTDIR)$(DEFPATH)/atop
  		#
  		cp atop   		$(DESTDIR)$(BINPATH)/atop
- 		chown root		$(DESTDIR)$(BINPATH)/atop
--		chmod 04711 		$(DESTDIR)$(BINPATH)/atop
+-		chmod 0711 		$(DESTDIR)$(BINPATH)/atop
 +		chmod 0755 		$(DESTDIR)$(BINPATH)/atop
  		ln -sf atop             $(DESTDIR)$(BINPATH)/atopsar
  		cp atopacctd  		$(DESTDIR)$(SBINPATH)/atopacctd
- 		chown root		$(DESTDIR)$(SBINPATH)/atopacctd
-@@ -159,7 +159,7 @@ genericinstall:	atop atopacctd atopconvert
- 		chown root		$(DESTDIR)$(BINPATH)/atopconvert
- 		chmod 0711 		$(DESTDIR)$(BINPATH)/atopconvert
- 		cp atop.daily    	$(DESTDIR)$(SCRPATH)
--		chmod 0711 	 	$(DESTDIR)$(SCRPATH)/atop.daily
-+		chmod 0755 	 	$(DESTDIR)$(SCRPATH)/atop.daily
+ 		chmod 0700 		$(DESTDIR)$(SBINPATH)/atopacctd
+@@ -169,11 +169,11 @@ genericinstall:	atop atopacctd atopconvert atopcat atophide
+ 		cp atop   		$(DESTDIR)$(BINPATH)/atop-$(VERS)
+ 		ln -sf atop-$(VERS)     $(DESTDIR)$(BINPATH)/atopsar-$(VERS)
+ 		cp atopconvert 		$(DESTDIR)$(BINPATH)/atopconvert
+-		chmod 0711 		$(DESTDIR)$(BINPATH)/atopconvert
++		chmod 0755 		$(DESTDIR)$(BINPATH)/atopconvert
+ 		cp atopcat 		$(DESTDIR)$(BINPATH)/atopcat
+-		chmod 0711 		$(DESTDIR)$(BINPATH)/atopcat
++		chmod 0755 		$(DESTDIR)$(BINPATH)/atopcat
+ 		cp atophide 		$(DESTDIR)$(BINPATH)/atophide
+-		chmod 0711 		$(DESTDIR)$(BINPATH)/atophide
++		chmod 0755 		$(DESTDIR)$(BINPATH)/atophide
  		cp man/atop.1    	$(DESTDIR)$(MAN1PATH)
  		cp man/atopsar.1 	$(DESTDIR)$(MAN1PATH)
  		cp man/atopconvert.1 	$(DESTDIR)$(MAN1PATH)
diff --git a/meta-oe/recipes-support/atop/atop_2.4.0.bb b/meta-oe/recipes-support/atop/atop_2.11.0.bb
similarity index 83%
rename from meta-oe/recipes-support/atop/atop_2.4.0.bb
rename to meta-oe/recipes-support/atop/atop_2.11.0.bb
index 2ff5a4d74b..8eb8cd6b06 100644
--- a/meta-oe/recipes-support/atop/atop_2.4.0.bb
+++ b/meta-oe/recipes-support/atop/atop_2.11.0.bb
@@ -13,20 +13,23 @@  SECTION = "console/utils"
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
 
-DEPENDS = "ncurses zlib"
+inherit pkgconfig
+
+DEPENDS = "ncurses zlib glib-2.0"
 
 SRC_URI = "http://www.atoptool.nl/download/${BP}.tar.gz \
            ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://volatiles.atop.conf', 'file://volatiles.99_atop', d)} \
            file://fix-permissions.patch \
            file://sysvinit-implement-status.patch \
-           file://0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch \
+           file://0001-Redefine-function-prototypes-solves-issue-322.patch \
            "
-SRC_URI[sha256sum] = "be1c010a77086b7d98376fce96514afcd73c3f20a8d1fe01520899ff69a73d69"
+SRC_URI[sha256sum] = "9b94c666602efff7bf402ecce706c347f38c39cb63498f9d39626861e5646e20"
 
 UPSTREAM_CHECK_URI = "https://atoptool.nl/downloadatop.php"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+).tar"
 
 CVE_STATUS[CVE-2011-3618] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
+TARGET_CC_ARCH += "${LDFLAGS}"
 
 do_compile() {
     oe_runmake all
@@ -35,7 +38,7 @@  do_compile() {
 do_install() {
     if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
         make DESTDIR=${D} VERS=${PV} SYSDPATH=${systemd_system_unitdir} \
-            PMPATHD=${systemd_unitdir}/system-sleep systemdinstall
+            PMPATHD=${systemd_unitdir}/system-sleep install
         install -d ${D}${sysconfdir}/tmpfiles.d
         install -m 644 ${UNPACKDIR}/volatiles.atop.conf ${D}${sysconfdir}/tmpfiles.d/atop.conf
         rm -f ${D}${systemd_system_unitdir}/atopacct.service
@@ -56,9 +59,9 @@  do_install() {
 
 inherit systemd
 
-SYSTEMD_SERVICE:${PN} = "atop.service atopgpu.service"
+SYSTEMD_SERVICE:${PN} = "atop.service atopgpu.service atop-rotate.service"
 SYSTEMD_AUTO_ENABLE = "disable"
 
-FILES:${PN} += "${systemd_unitdir}/system-sleep"
+FILES:${PN} += "${systemd_unitdir}/system-sleep ${systemd_system_unitdir}/atop-rotate.timer"
 
 RDEPENDS:${PN} = "procps"