From 2ffe564fa254485a776d47dfc4d8ada516e2b8fd Mon Sep 17 00:00:00 2001 From: chao an Date: Sun, 29 Jan 2023 17:58:17 +0800 Subject: [PATCH] fs/procfs: sort level0 process id Signed-off-by: chao an --- fs/procfs/fs_procfs.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/fs/procfs/fs_procfs.c b/fs/procfs/fs_procfs.c index bcecf480b58..d2fb4eeba58 100644 --- a/fs/procfs/fs_procfs.c +++ b/fs/procfs/fs_procfs.c @@ -339,6 +339,34 @@ static void procfs_enum(FAR struct tcb_s *tcb, FAR void *arg) dir->pid[index] = tcb->pid; dir->base.nentries = index + 1; } + +/**************************************************************************** + * Name: procfs_sort_pid + ****************************************************************************/ + +static void procfs_sort_pid(FAR struct procfs_level0_s *level0) +{ + pid_t pid; + int i; + int j; + + /* Sort the process id by Bubble. + * FIXME: improve searching algorithm. + */ + + for (i = 0; i < level0->base.nentries; i++) + { + for (j = 0; j < level0->base.nentries - 1 - i; j++) + { + if (level0->pid[j] > level0->pid[j + 1]) + { + pid = level0->pid[j]; + level0->pid[j] = level0->pid[j + 1]; + level0->pid[j + 1] = pid; + } + } + } +} #endif /**************************************************************************** @@ -570,6 +598,7 @@ static int procfs_opendir(FAR struct inode *mountpt, FAR const char *relpath, #ifndef CONFIG_FS_PROCFS_EXCLUDE_PROCESS nxsched_foreach(procfs_enum, level0); + procfs_sort_pid(level0); #else level0->base.index = 0; level0->base.nentries = 0;