public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Con Kolivas <kernel@kolivas.org>
To: "Jack O'Quin" <joq@io.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	Paul Davis <paul@linuxaudiosystems.com>,
	linux <linux-kernel@vger.kernel.org>,
	rlrevell@joe-job.com, CK Kernel <ck@vds.kolivas.org>,
	utz <utz@s2y4n2c.de>, Andrew Morton <akpm@osdl.org>,
	alexn@dsv.su.se, Rui Nuno Capela <rncbc@rncbc.org>
Subject: Re: [PATCH]sched: Isochronous class v2 for unprivileged soft rt scheduling
Date: Sun, 23 Jan 2005 18:41:20 +1100	[thread overview]
Message-ID: <41F35520.50405@kolivas.org> (raw)
In-Reply-To: <87y8ekvblj.fsf@sulphur.joq.us>


[-- Attachment #1.1: Type: text/plain, Size: 426 bytes --]

Jack O'Quin wrote:
> I'm wondering now if the lack of priority support in the two
> prototypes might explain the problems I'm seeing.

Distinctly possible since my results got better with priority support. 
However I'm still bugfixing what I've got. Just as a data point here is 
an incremental patch for testing which applies to mm2. This survives
a jackd test run at my end but is not ready for inclusion yet.

Cheers,
Con


[-- Attachment #1.2: isoprio3.diff --]
[-- Type: text/x-diff, Size: 13281 bytes --]

Index: linux-2.6.11-rc1-mm2/include/linux/sched.h
===================================================================
--- linux-2.6.11-rc1-mm2.orig/include/linux/sched.h	2005-01-22 20:42:44.000000000 +1100
+++ linux-2.6.11-rc1-mm2/include/linux/sched.h	2005-01-22 20:50:29.000000000 +1100
@@ -144,6 +144,10 @@ extern int iso_cpu, iso_period;
 #define SCHED_RT(policy)	((policy) == SCHED_FIFO || \
 				(policy) == SCHED_RR)
 
+/* The policies that support a real time priority setting */
+#define SCHED_RT_PRIO(policy)	(SCHED_RT(policy) || \
+				(policy) == SCHED_ISO)
+
 struct sched_param {
 	int sched_priority;
 };
@@ -356,7 +360,7 @@ struct signal_struct {
 /*
  * Priority of a process goes from 0..MAX_PRIO-1, valid RT
  * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL tasks are
- * in the range MAX_RT_PRIO..MAX_PRIO-1. Priority values
+ * in the range MIN_NORMAL_PRIO..MAX_PRIO-1. Priority values
  * are inverted: lower p->prio value means higher priority.
  *
  * The MAX_USER_RT_PRIO value allows the actual maximum
@@ -364,12 +368,19 @@ struct signal_struct {
  * user-space.  This allows kernel threads to set their
  * priority to a value higher than any user task. Note:
  * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
+ *
+ * SCHED_ISO tasks have a rt priority of the same range as
+ * real time tasks. They are seen as having either a priority
+ * of ISO_PRIO if below starvation limits or their underlying 
+ * equivalent SCHED_NORMAL priority if above.
  */
 
 #define MAX_USER_RT_PRIO	100
 #define MAX_RT_PRIO		MAX_USER_RT_PRIO
+#define ISO_PRIO		MAX_RT_PRIO
+#define MIN_NORMAL_PRIO		(ISO_PRIO + 1)
 
-#define MAX_PRIO		(MAX_RT_PRIO + 40)
+#define MAX_PRIO		(MIN_NORMAL_PRIO + 40)
 
 #define rt_task(p)		(unlikely((p)->prio < MAX_RT_PRIO))
 #define iso_task(p)		(unlikely((p)->policy == SCHED_ISO))
Index: linux-2.6.11-rc1-mm2/kernel/sched.c
===================================================================
--- linux-2.6.11-rc1-mm2.orig/kernel/sched.c	2005-01-22 09:19:42.000000000 +1100
+++ linux-2.6.11-rc1-mm2/kernel/sched.c	2005-01-23 17:38:27.848054361 +1100
@@ -55,11 +55,11 @@
 
 /*
  * Convert user-nice values [ -20 ... 0 ... 19 ]
- * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
+ * to static priority [ MIN_NORMAL_PRIO..MAX_PRIO-1 ],
  * and back.
  */
-#define NICE_TO_PRIO(nice)	(MAX_RT_PRIO + (nice) + 20)
-#define PRIO_TO_NICE(prio)	((prio) - MAX_RT_PRIO - 20)
+#define NICE_TO_PRIO(nice)	(MIN_NORMAL_PRIO + (nice) + 20)
+#define PRIO_TO_NICE(prio)	((prio) - MIN_NORMAL_PRIO - 20)
 #define TASK_NICE(p)		PRIO_TO_NICE((p)->static_prio)
 
 /*
@@ -67,7 +67,7 @@
  * can work with better when scaling various scheduler parameters,
  * it's a [ 0 ... 39 ] range.
  */
-#define USER_PRIO(p)		((p)-MAX_RT_PRIO)
+#define USER_PRIO(p)		((p)-MIN_NORMAL_PRIO)
 #define TASK_USER_PRIO(p)	USER_PRIO((p)->static_prio)
 #define MAX_USER_PRIO		(USER_PRIO(MAX_PRIO))
 
@@ -184,6 +184,8 @@ int iso_period = 5;	/* The time over whi
  */
 
 #define BITMAP_SIZE ((((MAX_PRIO+1+7)/8)+sizeof(long)-1)/sizeof(long))
+#define ISO_BITMAP_SIZE ((((MAX_USER_RT_PRIO+1+7)/8)+sizeof(long)-1)/ \
+			sizeof(long))
 
 typedef struct runqueue runqueue_t;
 
@@ -212,7 +214,9 @@ struct runqueue {
 	unsigned long cpu_load;
 #endif
 	unsigned long iso_ticks;
-	struct list_head iso_queue;
+	unsigned int iso_active;
+	unsigned long iso_bitmap[ISO_BITMAP_SIZE];
+	struct list_head iso_queue[MAX_USER_RT_PRIO];
 	int iso_refractory;
 	/*
 	 * Refractory is the flag that we've hit the maximum iso cpu and are
@@ -312,15 +316,20 @@ static DEFINE_PER_CPU(struct runqueue, r
 # define task_running(rq, p)		((rq)->curr == (p))
 #endif
 
-static inline int task_preempts_curr(task_t *p, runqueue_t *rq)
+static int task_preempts_curr(task_t *p, runqueue_t *rq)
 {
-	if ((!iso_task(p) && !iso_task(rq->curr)) || rq->iso_refractory ||
-		rt_task(p) || rt_task(rq->curr)) {
-			if (p->prio < rq->curr->prio)
-				return 1;
-			return 0;
+	int p_prio = p->prio, curr_prio = rq->curr->prio;
+
+	if (!iso_task(p) && !iso_task(rq->curr))
+		goto check_preemption;
+	if (!rq->iso_refractory) {
+		if (iso_task(p))
+			p_prio = ISO_PRIO;
+		if (iso_task(rq->curr))
+			curr_prio = ISO_PRIO;
 	}
-	if (iso_task(p) && !iso_task(rq->curr))
+check_preemption:
+	if (p_prio < curr_prio)
 		return 1;
 	return 0;
 }
@@ -590,14 +599,13 @@ static inline void sched_info_switch(tas
 #define sched_info_switch(t, next)	do { } while (0)
 #endif /* CONFIG_SCHEDSTATS */
 
-static inline int iso_queued(runqueue_t *rq)
-{
-	return !list_empty(&rq->iso_queue);
-}
-
-static inline void dequeue_iso_task(struct task_struct *p)
+static void dequeue_iso_task(struct task_struct *p)
 {
+	runqueue_t *rq = task_rq(p);
+	rq->iso_active--;
 	list_del(&p->iso_list);
+	if (list_empty(rq->iso_queue + p->rt_priority))
+		__clear_bit(p->rt_priority, rq->iso_bitmap);
 }
 
 /*
@@ -605,9 +613,9 @@ static inline void dequeue_iso_task(stru
  */
 static void dequeue_task(struct task_struct *p, prio_array_t *array)
 {
-	array->nr_active--;
 	if (iso_task(p))
 		dequeue_iso_task(p);
+	array->nr_active--;
 	list_del(&p->run_list);
 	if (list_empty(array->queue + p->prio))
 		__clear_bit(p->prio, array->bitmap);
@@ -621,7 +629,9 @@ static void dequeue_task(struct task_str
 static void enqueue_iso_task(struct task_struct *p)
 {
 	runqueue_t *rq = task_rq(p);
-	list_add_tail(&p->iso_list, &rq->iso_queue);
+	list_add_tail(&p->iso_list, rq->iso_queue + p->rt_priority);
+	__set_bit(p->rt_priority, rq->iso_bitmap);
+	rq->iso_active++;
 }
 
 static void enqueue_task(struct task_struct *p, prio_array_t *array)
@@ -638,7 +648,7 @@ static void enqueue_task(struct task_str
 static void requeue_iso_task(struct task_struct *p)
 {
 	runqueue_t *rq = task_rq(p);
-	list_move_tail(&p->iso_list, &rq->iso_queue);
+	list_move_tail(&p->iso_list, rq->iso_queue + p->rt_priority);
 }
 
 /*
@@ -684,8 +694,8 @@ static int effective_prio(task_t *p)
 	bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
 
 	prio = p->static_prio - bonus;
-	if (prio < MAX_RT_PRIO)
-		prio = MAX_RT_PRIO;
+	if (prio < MIN_NORMAL_PRIO)
+		prio = MIN_NORMAL_PRIO;
 	if (prio > MAX_PRIO-1)
 		prio = MAX_PRIO-1;
 	return prio;
@@ -2499,7 +2509,13 @@ void scheduler_tick(void)
 	task_t *p = current;
 
 	rq->timestamp_last_tick = sched_clock();
-	if (iso_task(p) && !rq->iso_refractory)
+	/*
+	 * The iso_ticks accounting is incremented only when a SCHED_ISO task
+	 * is running in soft rt mode. Running rt_tasks are also accounted
+	 * to make the iso_cpu a proportion of cpu available for SCHED_NORMAL
+	 * tasks only.
+	 */
+	if (rt_task(p) || (iso_task(p) && !rq->iso_refractory))
 		inc_iso_ticks(rq, p);
 	else
 		dec_iso_ticks(rq, p);
@@ -2542,24 +2558,12 @@ void scheduler_tick(void)
 	}
 
 	if (iso_task(p)) {
-		if (rq->iso_refractory) {
+		if (rq->iso_refractory)
 			/*
 			 * If we are in the refractory period for SCHED_ISO
-			 * tasks we schedule them as SCHED_NORMAL. If their
-			 * priority is set to the ISO priority, change it.
+			 * tasks we schedule them as SCHED_NORMAL.
 			 */
-			if (p->prio == MAX_RT_PRIO) {
-				dequeue_task(p, rq->active);
-				p->prio = effective_prio(p);
-				enqueue_task(p, rq->active);
-			}
 			goto sched_normal;
-		}
-		if (p->prio > MAX_RT_PRIO) {
-			dequeue_task(p, rq->active);
-			p->prio = MAX_RT_PRIO;
-			enqueue_task(p, rq->active);
-		}
 		if (!(--p->time_slice % GRANULARITY)) {
 			set_tsk_need_resched(p);
 			requeue_iso_task(p);
@@ -2619,30 +2623,46 @@ out:
 
 static inline int iso_ready(runqueue_t *rq)
 {
-	if (iso_queued(rq) && !rq->iso_refractory)
+	if (rq->iso_active && !rq->iso_refractory)
 		return 1;
 	return 0;
 }
 
 /*
- * When a SCHED_ISO task is ready to be scheduled, we re-queue it with an
- * effective prio of MAX_RT_PRIO for userspace to know its relative prio.
+ * When a SCHED_ISO task is ready to be scheduled, we ensure it is queued
+ * on the active array.
  */
 static task_t* queue_iso(runqueue_t *rq, prio_array_t *array)
 {
-	task_t *p = list_entry(rq->iso_queue.next, task_t, iso_list);
-	if (p->prio == MAX_RT_PRIO)
+	prio_array_t *old_array;
+	task_t *p;
+	int idx = sched_find_first_bit(rq->iso_bitmap);
+
+	BUG_ON(idx == MAX_USER_RT_PRIO);
+	p = list_entry(rq->iso_queue[idx].next, task_t, iso_list);
+	if (p->array == rq->active)
 		goto out;
+	old_array = p->array;
+	old_array->nr_active--;
 	list_del(&p->run_list);
-	if (list_empty(array->queue + p->prio))
-		__clear_bit(p->prio, array->bitmap);
-	p->prio = MAX_RT_PRIO;
+	if (list_empty(old_array->queue + p->prio))
+		__clear_bit(p->prio, old_array->bitmap);
 	list_add_tail(&p->run_list, array->queue + p->prio);
 	__set_bit(p->prio, array->bitmap);
-out:
+	array->nr_active++;
+	p->array = array;
+out:	
 	return p;
 }
 
+static inline task_t* find_next_task(runqueue_t *rq, prio_array_t *array)
+{
+	int idx = sched_find_first_bit(array->bitmap);
+	if (unlikely(iso_ready(rq) && idx > ISO_PRIO))
+		return queue_iso(rq, array);
+	return list_entry(array->queue[idx].next, task_t, run_list);
+}
+
 #ifdef CONFIG_SCHED_SMT
 static inline void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
 {
@@ -2694,7 +2714,7 @@ static inline int dependent_sleeper(int 
 	struct sched_domain *sd = this_rq->sd;
 	cpumask_t sibling_map;
 	prio_array_t *array;
-	int ret = 0, i, idx;
+	int ret = 0, i;
 	task_t *p;
 
 	if (!(sd->flags & SD_SHARE_CPUPOWER))
@@ -2721,11 +2741,7 @@ static inline int dependent_sleeper(int 
 		array = this_rq->expired;
 	BUG_ON(!array->nr_active);
 
-	idx = sched_find_first_bit(array->bitmap);
-	if (unlikely(iso_ready(this_rq) && idx >= MAX_RT_PRIO))
-		p = queue_iso(this_rq, array);
-	else
-		p = list_entry(array->queue[idx].next, task_t, run_list);
+	p = find_next_task(this_rq, array);
 
 	for_each_cpu_mask(i, sibling_map) {
 		runqueue_t *smt_rq = cpu_rq(i);
@@ -2813,10 +2829,9 @@ asmlinkage void __sched schedule(void)
 	task_t *prev, *next;
 	runqueue_t *rq;
 	prio_array_t *array;
-	struct list_head *queue;
 	unsigned long long now;
 	unsigned long run_time;
-	int cpu, idx;
+	int cpu;
 
 	/*
 	 * Test if we are atomic.  Since do_exit() needs to call into
@@ -2924,13 +2939,7 @@ go_idle:
 	} else
 		schedstat_inc(rq, sched_noswitch);
 
-	idx = sched_find_first_bit(array->bitmap);
-	if (unlikely(iso_ready(rq) && idx >= MAX_RT_PRIO))
-		next = queue_iso(rq, array);
-	else {
-		queue = array->queue + idx;
-		next = list_entry(queue->next, task_t, run_list);
-	}
+	next = find_next_task(rq, array);
 
 	if (!rt_task(next) && !(iso_task(next) && !rq->iso_refractory) &&
 		next->activated > 0) {
@@ -3483,7 +3492,11 @@ asmlinkage long sys_nice(int increment)
  */
 int task_prio(const task_t *p)
 {
-	return p->prio - MAX_RT_PRIO;
+	if (iso_task(p))
+		return -(p->rt_priority);
+	if (rt_task(p))
+		return -(MAX_RT_PRIO + p->rt_priority);
+	return p->prio - MIN_NORMAL_PRIO;
 }
 
 /**
@@ -3552,28 +3565,31 @@ int sched_setscheduler(struct task_struc
 	runqueue_t *rq;
 
 recheck:
+	if (SCHED_RT(policy) && !capable(CAP_SYS_NICE))
+		/*
+		 * If the caller requested an RT policy without having the
+		 * necessary rights, we downgrade the policy to SCHED_ISO.
+		 */
+		policy = SCHED_ISO;
+
 	/* double check policy once rq lock held */
 	if (policy < 0)
 		policy = oldpolicy = p->policy;
 	else if (!SCHED_RANGE(policy))
 		return -EINVAL;
 	/*
-	 * Valid priorities for SCHED_FIFO and SCHED_RR are
+	 * Valid priorities for SCHED_FIFO, SCHED_RR and SCHED_ISO are
 	 * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL is 0.
 	 */
 	if (param->sched_priority < 0 ||
 	    param->sched_priority > MAX_USER_RT_PRIO-1)
 		return -EINVAL;
-	if ((!SCHED_RT(policy)) != (param->sched_priority == 0))
+	if (SCHED_RT(policy) && !capable(CAP_SYS_NICE))
+		return -EPERM;
+
+	if ((!SCHED_RT_PRIO(policy)) != (param->sched_priority == 0))
 		return -EINVAL;
 
-	if (SCHED_RT(policy) && !capable(CAP_SYS_NICE))
-		/*
-		 * If the caller requested an RT policy without having the
-		 * necessary rights, we downgrade the policy to SCHED_ISO.
-		 * Temporary hack for testing.
-		 */
-		policy = SCHED_ISO;
 	if ((current->euid != p->euid) && (current->euid != p->uid) &&
 	    !capable(CAP_SYS_NICE))
 		return -EPERM;
@@ -4034,10 +4050,10 @@ asmlinkage long sys_sched_get_priority_m
 	switch (policy) {
 	case SCHED_FIFO:
 	case SCHED_RR:
+	case SCHED_ISO:
 		ret = MAX_USER_RT_PRIO-1;
 		break;
 	case SCHED_NORMAL:
-	case SCHED_ISO:
 		ret = 0;
 		break;
 	}
@@ -4058,10 +4074,10 @@ asmlinkage long sys_sched_get_priority_m
 	switch (policy) {
 	case SCHED_FIFO:
 	case SCHED_RR:
+	case SCHED_ISO:
 		ret = 1;
 		break;
 	case SCHED_NORMAL:
-	case SCHED_ISO:
 		ret = 0;
 	}
 	return ret;
@@ -5120,7 +5136,7 @@ void __init sched_init(void)
 		rq->active = rq->arrays;
 		rq->expired = rq->arrays + 1;
 		rq->best_expired_prio = MAX_PRIO;
-		rq->iso_refractory = rq->iso_ticks = 0;
+		rq->iso_refractory = rq->iso_ticks = rq->iso_active = 0;
 
 #ifdef CONFIG_SMP
 		rq->sd = &sched_domain_dummy;
@@ -5141,7 +5157,11 @@ void __init sched_init(void)
 			// delimiter for bitsearch
 			__set_bit(MAX_PRIO, array->bitmap);
 		}
-		INIT_LIST_HEAD(&rq->iso_queue);
+		for (j = 0; j < MAX_USER_RT_PRIO; j++) {
+			INIT_LIST_HEAD(rq->iso_queue + j);
+			__clear_bit(j, rq->iso_bitmap);
+		}
+		__set_bit(MAX_USER_RT_PRIO, rq->iso_bitmap);
 	}
 
 	/*

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

  reply	other threads:[~2005-01-23  7:43 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-19 22:39 [PATCH]sched: Isochronous class v2 for unprivileged soft rt scheduling Con Kolivas
2005-01-20  0:16 ` utz lehmann
2005-01-20  0:33   ` Con Kolivas
2005-01-20  4:26     ` utz lehmann
2005-01-20  5:55       ` Con Kolivas
2005-01-20 17:54   ` Alexander Nyberg
2005-01-20 20:27     ` Con Kolivas
2005-01-20  0:53 ` Con Kolivas
2005-01-20  1:32   ` Jack O'Quin
2005-01-20  2:06     ` Con Kolivas
2005-01-20  2:45       ` Jack O'Quin
2005-01-20  4:07         ` Con Kolivas
2005-01-20  4:57           ` Jack O'Quin
2005-01-20  5:05             ` Gene Heskett
2005-01-20  5:59             ` Con Kolivas
2005-01-20  6:35               ` Con Kolivas
2005-01-20 15:19                 ` Jack O'Quin
2005-01-20 15:42                   ` Paul Davis
2005-01-20 16:47                     ` Jack O'Quin
2005-01-20 17:25                       ` Ingo Molnar
2005-01-22  0:09                         ` Jack O'Quin
2005-01-22 16:54                           ` Ingo Molnar
2005-01-22 21:23                             ` Jack O'Quin
2005-01-23  2:06                               ` Nick Piggin
2005-01-23  2:58                                 ` Chris Wright
2005-01-24  8:59                               ` Ingo Molnar
2005-01-24  9:55                                 ` Paolo Ciarrocchi
2005-01-24 10:29                                   ` Nick Piggin
2005-01-24 10:46                                   ` Ingo Molnar
2005-01-24 12:58                                 ` [patch, 2.6.11-rc2] sched: /proc/sys/kernel/rt_cpu_limit tunable Ingo Molnar
2005-01-24 13:34                                   ` Ingo Molnar
2005-01-24 13:53                                   ` Con Kolivas
2005-01-24 14:01                                     ` [ck] " Con Kolivas
     [not found]                                   ` <87k6q2umla.fsf@sulphur.joq.us>
2005-01-25  6:28                                     ` Nick Piggin
2005-01-25 14:12                                       ` Ingo Molnar
2005-01-25  8:37                                     ` Ingo Molnar
2005-01-25 21:36                                       ` Jack O'Quin
2005-01-25 21:49                                         ` Ingo Molnar
2005-01-25 21:55                                           ` Chris Wright
2005-01-25 21:57                                             ` Ingo Molnar
2005-01-25 22:03                                               ` Chris Wright
2005-01-25 22:08                                                 ` Ingo Molnar
2005-01-25 22:16                                                   ` Chris Wright
2005-01-25 22:44                                                 ` Bill Rugolsky Jr.
2005-01-26  5:12                                           ` Jack O'Quin
2005-01-26  7:27                                             ` Ingo Molnar
2005-01-26 11:02                                               ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Ingo Molnar
2005-01-25 13:56                                   ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Ingo Molnar
2005-01-25 14:06                                     ` Con Kolivas
2005-01-25 22:18                                     ` Peter Williams
2005-01-25 22:26                                       ` Peter Williams
2005-01-26 10:08                                         ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Ingo Molnar
2005-01-26 14:22                                           ` Jack O'Quin
2005-01-26 16:18                                           ` [ck] " Cal
2005-01-26 16:29                                             ` Cal
2005-01-26 16:41                                             ` Jack O'Quin
2005-01-26 17:57                                               ` Cal
2005-01-26 18:57                                                 ` Jack O'Quin
2005-01-27  2:03                                                   ` Cal
2005-01-27  8:51                                                     ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D8 Ingo Molnar
2005-01-27 12:48                                                       ` Cal
2005-01-27 16:31                                                       ` Mike Galbraith
2005-01-26 21:28                                           ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU feature, -D7 Peter Williams
2005-01-26 21:44                                           ` Peter Williams
2005-01-26  9:20                                       ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Ingo Molnar
2005-01-31 23:03                                         ` Peter Williams
2005-02-01 10:11                                           ` [patch] sys_setpriority() euid semantics fix Ingo Molnar
2005-02-01 21:46                                             ` Peter Williams
2005-01-26  5:24                                     ` [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature Jack O'Quin
2005-01-26  7:04                                       ` Ingo Molnar
2005-01-26 22:27                                         ` Jack O'Quin
2005-01-26 23:29                                           ` Nick Piggin
2005-01-27  2:31                                             ` Jack O'Quin
2005-01-27  3:26                                               ` Nick Piggin
2005-01-27  5:15                                                 ` Jack O'Quin
2005-01-27  5:54                                                   ` Nick Piggin
2005-01-27  8:35                                                     ` Ingo Molnar
2005-01-27  8:59                                                       ` Ingo Molnar
2005-01-27 11:35                                                   ` Ingo Molnar
2005-02-02  5:10                                                     ` Jack O'Quin
2005-02-02 11:10                                                       ` Bill Huey
2005-02-02 16:44                                                         ` Jack O'Quin
2005-02-02 21:14                                                           ` Bill Huey
2005-02-02 21:20                                                             ` Bill Huey
2005-02-02 21:21                                                             ` Ingo Molnar
2005-02-02 21:34                                                               ` Bill Huey
2005-02-02 22:59                                                                 ` Paul Davis
2005-02-03  2:46                                                                   ` Bill Huey
2005-02-03 14:20                                                                     ` Paul Davis
2005-02-03 20:19                                                                       ` Con Kolivas
2005-02-03 20:47                                                                         ` Ingo Molnar
2005-02-03 21:15                                                                           ` Paul Davis
2005-02-03 21:28                                                                             ` Ingo Molnar
2005-02-03 21:41                                                                               ` Paul Davis
2005-02-03 21:59                                                                                 ` Ingo Molnar
2005-02-03 22:24                                                                                   ` Paul Davis
2005-02-03 22:26                                                                                     ` Ingo Molnar
2005-02-04  0:36                                                                           ` Tristan Wibberley
2005-02-03 21:48                                                                       ` Peter Williams
2005-02-04 16:41                                                                         ` Jack O'Quin
2005-02-04 21:38                                                                           ` Peter Williams
2005-02-03 21:41                                                                 ` Ingo Molnar
2005-02-03 23:01                                                                   ` Bill Huey
2005-02-11 21:27                                                                   ` Lee Revell
2005-02-02 21:54                                                         ` Peter Williams
2005-02-02 23:03                                                           ` Paul Davis
2005-02-02 23:46                                                             ` Peter Williams
2005-02-03  1:13                                                               ` Jack O'Quin
2005-02-03  3:10                                                                 ` Peter Williams
2005-02-03  3:56                                                                   ` Jack O'Quin
2005-02-03 21:36                                                             ` Ingo Molnar
2005-02-04  0:35                                                               ` Chris Wright
2005-02-04 17:21                                                               ` Jack O'Quin
2005-02-03  2:54                                                           ` Bill Huey
2005-02-03  3:25                                                             ` Peter Williams
2005-02-02 11:37                                                       ` Ingo Molnar
2005-02-02 16:01                                                         ` Jack O'Quin
2005-02-02 18:59                                                       ` Lee Revell
2005-02-02 19:31                                                         ` Jack O'Quin
2005-02-02 20:29                                                           ` Ingo Molnar
2005-02-02 22:45                                                             ` Jack O'Quin
2005-02-02 20:17                                                       ` Ingo Molnar
2005-01-27 20:01                                                   ` Lee Revell
2005-01-28  6:38                                                 ` Ingo Molnar
2005-01-28  8:09                                                   ` Jack O'Quin
2005-01-28  8:08                                             ` Ingo Molnar
2005-01-28  8:35                                               ` Jack O'Quin
2005-01-28  8:40                                                 ` Ingo Molnar
2005-01-28  9:01                                                   ` Jack O'Quin
2005-01-28  9:11                                                     ` Ingo Molnar
2005-01-29  0:44                                                       ` Lee Revell
2005-01-28  9:51                                                     ` Mike Galbraith
2005-01-28 22:16                                                   ` Peter Williams
2005-01-28 22:19                                                     ` Ingo Molnar
2005-01-29  7:02                                                     ` Jack O'Quin
2005-01-31 22:29                                                   ` Bill Davidsen
2005-02-01  0:39                                                     ` Bill Huey
2005-01-25  5:16                                 ` [PATCH]sched: Isochronous class v2 for unprivileged soft rt scheduling Jack O'Quin
2005-01-25 15:09                                   ` Ingo Molnar
2005-01-23 20:48                             ` Jack O'Quin
2005-01-23 22:57                               ` Con Kolivas
2005-01-24  1:06                                 ` Jack O'Quin
2005-01-24  1:09                                   ` Con Kolivas
2005-01-24  4:45                                     ` Jack O'Quin
2005-01-24  4:53                                       ` Jack O'Quin
2005-01-24  6:28                                         ` Jack O'Quin
2005-01-24  6:35                                           ` Con Kolivas
2005-01-24  6:57                                             ` Jack O'Quin
2005-01-24 22:58                                               ` Con Kolivas
2005-01-25  3:55                                                 ` Con Kolivas
2005-01-25 13:05                                                   ` Con Kolivas
2005-01-25 14:38                                                     ` Con Kolivas
2005-01-25 18:36                                                     ` Jack O'Quin
2005-01-25 20:52                                                       ` Rui Nuno Capela
2005-01-24 21:46                                           ` Con Kolivas
2005-01-23  7:38                           ` Jack O'Quin
2005-01-23  7:41                             ` Con Kolivas [this message]
2005-01-24  6:30                         ` Jack O'Quin
2005-01-24 20:55                           ` Ingo Molnar
2005-01-20 21:59                       ` Peter Chubb
2005-01-21  0:30                         ` Jack O'Quin
2005-01-22 14:06                         ` Paul Davis
2005-01-20 17:49                     ` ross
2005-01-20 19:07                       ` Lee Revell
2005-01-20 23:17                       ` Con Kolivas
2005-01-21  7:48                         ` Ingo Molnar
2005-02-07  3:09               ` Werner Almesberger
2005-02-07  3:27                 ` Jack O'Quin
2005-02-07  3:27                   ` Con Kolivas
2005-01-20  9:06             ` Rui Nuno Capela
2005-01-20 17:09               ` Rui Nuno Capela
2005-01-20 19:32                 ` Jack O'Quin
2005-01-21  9:18                   ` Rui Nuno Capela
2005-01-21 16:23                     ` Con Kolivas
2005-01-21 16:40                       ` Jack O'Quin
2005-01-22  0:06                 ` Con Kolivas
2005-01-22  6:18                   ` Jack O'Quin
2005-01-22  6:19                     ` Con Kolivas
2005-01-22  6:48                     ` Con Kolivas
2005-01-22  6:50                       ` Con Kolivas
2005-01-22  7:09                         ` Con Kolivas
2005-01-22 20:22                           ` Jack O'Quin
2005-01-23  1:02                             ` Con Kolivas
2005-01-23  3:02                               ` Jack O'Quin
2005-01-23  4:29                                 ` Con Kolivas
2005-01-23  4:46                                   ` Jack O'Quin
2005-01-23  4:50                                     ` Con Kolivas
2005-01-23  7:37                                       ` Mike Galbraith
2005-01-23 13:57                                         ` Paul Davis
2005-01-23  1:31                             ` Con Kolivas
2005-01-23  1:41                               ` Paul Davis
2005-01-23  1:56                                 ` Con Kolivas
2005-01-23  4:50                                   ` Jack O'Quin
2005-01-21 23:30 ` utz lehmann
2005-01-21 23:48   ` Con Kolivas
2005-01-22  0:28     ` utz lehmann
2005-01-22  3:52       ` Con Kolivas
2005-01-22  6:15         ` Jack O'Quin

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=41F35520.50405@kolivas.org \
    --to=kernel@kolivas.org \
    --cc=akpm@osdl.org \
    --cc=alexn@dsv.su.se \
    --cc=ck@vds.kolivas.org \
    --cc=joq@io.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paul@linuxaudiosystems.com \
    --cc=rlrevell@joe-job.com \
    --cc=rncbc@rncbc.org \
    --cc=utz@s2y4n2c.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox