Index: src/Makefile
===================================================================
--- src/Makefile	(revision 01e48c1387955316bc770ea13559724e5f0138b1)
+++ src/Makefile	(revision 0a50f5941e7572881e764db343f5a363d93b313f)
@@ -9,4 +9,5 @@
 	proc/thread.c \
 	proc/task.c \
+	proc/the.c \
 	mm/heap.c \
 	mm/frame.c \
@@ -17,5 +18,4 @@
 	lib/list.c \
 	lib/memstr.c \
-	lib/the.c \
 	lib/sort.c \
 	debug/print.c \
Index: src/lib/sort.c
===================================================================
--- src/lib/sort.c	(revision 01e48c1387955316bc770ea13559724e5f0138b1)
+++ src/lib/sort.c	(revision 0a50f5941e7572881e764db343f5a363d93b313f)
@@ -34,10 +34,6 @@
 #define EBUFSIZE	32
 
-static void _qsort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b), void * pivot, void * tmp);
-
-/*
- * Wrapper method for quicksort algorithm to decrease amount of allocations
- */
-void qsort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b)) {
+void qsort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b))
+{
 	__u8 buf_tmp[EBUFSIZE];
 	__u8 buf_pivot[EBUFSIZE];
@@ -54,5 +50,27 @@
 	}
 
-	_qsort(data, n, e_size, cmp, pivot, tmp);
+	if (n > 4) {
+		int i = 0, j = n - 1;
+
+		memcpy(pivot, data, e_size);
+
+		while (1) {
+			while ((cmp(data + i * e_size, pivot) < 0) && i < n) i++;
+			while ((cmp(data + j * e_size, pivot) >=0) && j > 0) j--;
+			if (i<j) {
+				memcpy(tmp, data + i * e_size, e_size);
+				memcpy(data + i * e_size, data + j * e_size, e_size);
+				memcpy(data + j * e_size, tmp, e_size);
+			} else {
+				break;
+			}
+		}
+
+		qsort(data, j + 1, e_size, cmp);
+		qsort(data + (j + 1) * e_size, n - j - 1, e_size, cmp);
+	} else {
+		bubblesort(data, n, e_size, cmp);
+	}
+
 	
 	if (e_size > EBUFSIZE) {
@@ -63,5 +81,6 @@
 
 
-void bubblesort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b)) {
+void bubblesort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b))
+{
 	__u8 buf_slot[EBUFSIZE];
 	bool done = false;
@@ -94,48 +113,24 @@
 }
 
-static void _qsort(void * data, count_t n, size_t e_size, int (* cmp) (void * a, void * b), void * pivot, void * tmp) {
-	if (n > 4) {
-		int i = 0, j = n - 1;
-
-		memcpy(pivot, data, e_size);
-
-		while (1) {
-			while ((cmp(data + i * e_size, pivot) < 0) && i < n) i++;
-			while ((cmp(data + j * e_size, pivot) >=0) && j > 0) j--;
-			if (i<j) {
-				memcpy(tmp, data + i * e_size, e_size);
-				memcpy(data + i * e_size, data + j * e_size, e_size);
-				memcpy(data + j * e_size, tmp, e_size);
-			} else {
-				break;
-			}
-		}
-
-		qsort(data, j + 1, e_size, cmp);
-		qsort(data + (j + 1) * e_size, n - j - 1, e_size, cmp);
-	} else {
-		bubblesort(data, n, e_size, cmp);
-	}
-}
-
-
-
 /*
  * Comparator returns 1 if a > b, 0 if a == b, -1 if a < b
  */
-int int_cmp(void * a, void * b) {
+int int_cmp(void * a, void * b)
+{
 	return (* (int *) a > * (int*)b) ? 1 : (*(int *)a < * (int *)b) ? -1 : 0;
 }
 
-int __u8_cmp(void * a, void * b) {
+int __u8_cmp(void * a, void * b)
+{
 	return (* (__u8 *) a > * (__u8 *)b) ? 1 : (*(__u8 *)a < * (__u8 *)b) ? -1 : 0;
 }
 
-int __u16_cmp(void * a, void * b) {
+int __u16_cmp(void * a, void * b)
+{
 	return (* (__u16 *) a > * (__u16 *)b) ? 1 : (*(__u16 *)a < * (__u16 *)b) ? -1 : 0;
 }
 
-int __u32_cmp(void * a, void * b) {
+int __u32_cmp(void * a, void * b)
+{
 	return (* (__u32 *) a > * (__u32 *)b) ? 1 : (*(__u32 *)a < * (__u32 *)b) ? -1 : 0;
 }
-
Index: c/lib/the.c
===================================================================
--- src/lib/the.c	(revision 01e48c1387955316bc770ea13559724e5f0138b1)
+++ 	(revision )
@@ -1,58 +1,0 @@
-/*
- * Copyright (C) 2005 Jakub Jermar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <arch.h>
-#include <typedefs.h>
-
-
-/** Initialize THE structure
- *
- * Initialize THE structure passed as argument.
- *
- * @the THE structure to be initialized.
- *
- */
-void the_initialize(the_t *the)
-{
-	the->preemption_disabled = 0;
-	the->cpu = NULL;
-	the->thread = NULL;
-	the->task = NULL;
-}
-
-/** Copy THE structure
- *
- * Copy the source THE structure to the destination THE structure.
- *
- * @src The source THE structure.
- * @dst The destination THE structure.
- */
-void the_copy(the_t *src, the_t *dst)
-{
-	*dst = *src;
-}
Index: src/proc/the.c
===================================================================
--- src/proc/the.c	(revision 0a50f5941e7572881e764db343f5a363d93b313f)
+++ src/proc/the.c	(revision 0a50f5941e7572881e764db343f5a363d93b313f)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2005 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <arch.h>
+#include <typedefs.h>
+
+
+/** Initialize THE structure
+ *
+ * Initialize THE structure passed as argument.
+ *
+ * @the THE structure to be initialized.
+ *
+ */
+void the_initialize(the_t *the)
+{
+	the->preemption_disabled = 0;
+	the->cpu = NULL;
+	the->thread = NULL;
+	the->task = NULL;
+}
+
+/** Copy THE structure
+ *
+ * Copy the source THE structure to the destination THE structure.
+ *
+ * @src The source THE structure.
+ * @dst The destination THE structure.
+ */
+void the_copy(the_t *src, the_t *dst)
+{
+	*dst = *src;
+}
