From: Matt Mackall <mpm@selenic.com>
To: Andrew Morton <akpm@osdl.com>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 5/8] lib/sort: Replace open-coded O(pids**2) bubblesort in cpusets
Date: Mon, 31 Jan 2005 01:35:00 -0600 [thread overview]
Message-ID: <6.416337461@selenic.com> (raw)
In-Reply-To: <5.416337461@selenic.com>
Eep. cpuset uses bubble sort on a data set that's potentially O(#
processes). Switch to lib/sort.
Signed-off-by: Matt Mackall <mpm@selenic.com>
Index: tq/kernel/cpuset.c
===================================================================
--- tq.orig/kernel/cpuset.c 2005-01-29 16:13:53.000000000 -0800
+++ tq/kernel/cpuset.c 2005-01-30 13:26:48.000000000 -0800
@@ -47,6 +47,7 @@
#include <linux/string.h>
#include <linux/time.h>
#include <linux/backing-dev.h>
+#include <linux/sort.h>
#include <asm/uaccess.h>
#include <asm/atomic.h>
@@ -1055,21 +1056,9 @@
return n;
}
-/*
- * In place bubble sort pidarray of npids pid_t's.
- */
-static inline void pid_array_sort(pid_t *pidarray, int npids)
+static int cmppid(const void *a, const void *b)
{
- int i, j;
-
- for (i = 0; i < npids - 1; i++) {
- for (j = 0; j < npids - 1 - i; j++)
- if (pidarray[j + 1] < pidarray[j]) {
- pid_t tmp = pidarray[j];
- pidarray[j] = pidarray[j + 1];
- pidarray[j + 1] = tmp;
- }
- }
+ return *(pid_t *)a - *(pid_t *)b;
}
/*
@@ -1114,7 +1103,7 @@
goto err1;
npids = pid_array_load(pidarray, npids, cs);
- pid_array_sort(pidarray, npids);
+ sort(pidarray, npids, sizeof(pid_t), cmppid, 0);
/* Call pid_array_to_buf() twice, first just to get bufsz */
ctr->bufsz = pid_array_to_buf(&c, sizeof(c), pidarray, npids) + 1;
next prev parent reply other threads:[~2005-01-31 7:41 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-31 7:34 [PATCH 0/8] lib/sort: Add generic sort to lib/ Matt Mackall
2005-01-31 7:34 ` [PATCH 1/8] lib/sort: Heapsort implementation of sort() Matt Mackall
2005-01-31 7:34 ` [PATCH 2/8] lib/sort: Replace qsort in XFS Matt Mackall
2005-01-31 7:35 ` [PATCH 3/8] lib/sort: Replace qsort in NFS ACL code Matt Mackall
2005-01-31 7:35 ` [PATCH 4/8] lib/sort: Kill qsort() Matt Mackall
2005-01-31 7:35 ` Matt Mackall [this message]
2005-01-31 7:35 ` [PATCH 6/8] lib/sort: Replace insertion sort in exception tables Matt Mackall
2005-01-31 7:35 ` [PATCH 7/8] lib/sort: Replace insertion sort in IA64 " Matt Mackall
2005-01-31 7:35 ` [PATCH 8/8] lib/sort: Use generic sort on x86_64 Matt Mackall
2005-01-31 12:02 ` [PATCH 5/8] lib/sort: Replace open-coded O(pids**2) bubblesort in cpusets Paul Jackson
2005-02-01 22:29 ` [PATCH 2/8] lib/sort: Replace qsort in XFS Chris Wedgwood
2005-02-01 22:22 ` Randy.Dunlap
2005-02-02 4:31 ` Zan Lynx
2005-02-02 10:48 ` Herbert Xu
2005-02-01 22:48 ` Matt Mackall
2005-01-31 17:16 ` [PATCH 1/8] lib/sort: Heapsort implementation of sort() Andreas Gruenbacher
2005-01-31 17:30 ` Paulo Marques
2005-02-01 17:54 ` Andreas Gruenbacher
2005-02-01 18:11 ` linux-os
2005-02-01 19:04 ` linux-os
2005-02-01 19:47 ` Andreas Gruenbacher
2005-01-31 19:30 ` Matt Mackall
2005-02-01 17:50 ` Andreas Gruenbacher
2005-02-02 1:00 ` Horst von Brand
2005-02-02 10:50 ` Herbert Xu
2005-02-02 11:14 ` Andreas Gruenbacher
2005-02-03 23:19 ` Junio C Hamano
2005-02-01 2:10 ` Horst von Brand
2005-02-27 13:17 ` Andreas Gruenbacher
2005-02-27 21:25 ` Matt Mackall
2005-02-27 21:53 ` Andreas Gruenbacher
2005-02-27 22:10 ` Andreas Gruenbacher
2005-03-01 13:23 ` Andreas Gruenbacher
2005-03-01 19:06 ` Christophe Saout
2005-03-01 20:12 ` Matt Mackall
2005-03-01 21:47 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6.416337461@selenic.com \
--to=mpm@selenic.com \
--cc=akpm@osdl.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.