[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Patch to Pistachio's comportement on Xfer timeouts
From: |
Marcus Brinkmann |
Subject: |
Re: Patch to Pistachio's comportement on Xfer timeouts |
Date: |
Mon, 31 Jan 2005 15:07:20 +0100 |
User-agent: |
Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/21.3 (i386-pc-linux-gnu) MULE/5.0 (SAKAKI) |
At Sun, 23 Jan 2005 17:07:54 +0100,
address@hidden wrote:
> Here is a second patch that implements the second solution.
> It isn't complete nor tested yet: it lacks support for other
> architectures than ia32.
Thanks a lot. I hope you had a chance to test it by now. I have
modified the patch a bit to not stomp on the thread_word0 and
thread_word1 variables in the UTCB (I added them for the sake of
clarity). I also rewrote the timeout calculation code a bit to make
it simpler and closer to the original code. I added code for all
architectures in pistachio 0.4. Finally, I wrote a ChangeLog entry.
> For compatibility, I suggest to change libl4 interfaces like this:
> *set_xfer_timeouts should set both local and remote timeouts,
> *set_local_xfer_timeouts and set_remote_xfer_timeouts would set the
> respective timeouts.
I did this in my version of the patch for user/include/l4/*/vregs.h.
> Once we have decided where to put this new word in the UTCB, I can
> make the changes to our libl4 implementation (and also a few tests)
Please do, but if you don't get to it anytime soon, let me know and
I'll just add it. I am also looking forward to your string item
patches for cap-server.
The updated version of the patch is in CVS (in the file README), and I
also include a copy below.
Thanks,
Marcus
This patch extends the L4 kernel by allowing to set different xfer
timeouts for local and remote page faults.
2005-01-31 Matthieu Lemerre <address@hidden>
* kernel/src/api/v4/space.cc (handle_xfer_timeouts): Accept
new argument FAULT_IN_SENDER_AS which specifies if the fault happened
in the sender's address space. Adjust the timeouts taking
this parameter into account.
(space_t::handle_pagefaults): Pass new argument to
handle_xfer_timeouts.
* kernel/include/api/v4/tcb.h (tcb_t): New accessor function
prototypes get_local_xfer_timeout_snd and
get_local_xfer_timeout_rcv.
(tcb_t::get_local_xfer_timeout_snd, tcb_t::get_local_xfer_timeout_rcv):
New inline functions.
* kernel/include/glue/v4-alpha/utcb.h (utcb_t): New members
thread_word_0, thread_word_1 and local_xfer_timeout. Adjust
padding.
* kernel/include/glue/v4/v4-amd64/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-arm/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-ia32/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-ia64/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-mips64/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-powerpc/utcb.h (utcb_t): Likewise.
* kernel/include/glue/v4/v4-powerpc64/utcb.h (utcb_t): Likewise.
* user/include/l4/alpha/vregs.h,
user/include/l4/amd64/vregs.h, user/include/l4/arm/vregs.h,
user/include/l4/ia32/vregs.h, user/include/l4/ia64/vregs.h,
user/include/l4/mips64/vregs.h, user/include/l4/powerpc/vregs.h,
user/include/l4/powerpc64/vregs.h: For all these files:
(__L4_TCR_LOCAL_XFER_TIMEOUT): Define macro.
(__L4_TCR_XferTimeout): Set local transfer timeout as well.
diff -rup pistachio/kernel/include/api/v4/tcb.h
pistachio-to/kernel/include/api/v4/tcb.h
--- pistachio/kernel/include/api/v4/tcb.h 2005-01-22 01:45:47.000000000
+0100
+++ pistachio-to/kernel/include/api/v4/tcb.h 2005-01-31 13:56:52.000000000
+0100
@@ -130,6 +130,8 @@ public:
time_t get_xfer_timeout_snd ();
time_t get_xfer_timeout_rcv ();
+ time_t get_local_xfer_timeout_snd ();
+ time_t get_local_xfer_timeout_rcv ();
void set_actual_sender(threadid_t tid);
threadid_t get_virtual_sender();
threadid_t get_intended_receiver();
@@ -588,6 +590,24 @@ INLINE time_t tcb_t::get_xfer_timeout_rc
return get_utcb()->xfer_timeout.get_rcv();
}
+/**
+ * Get a thread's local send transfer timeout
+ * @return local send transfer timeout
+ */
+INLINE time_t tcb_t::get_local_xfer_timeout_snd (void)
+{
+ return get_utcb()->local_xfer_timeout.get_snd();
+}
+
+/**
+ * Get a thread's local receive transfer timeout
+ * @return local receive transfer timeout
+ */
+INLINE time_t tcb_t::get_local_xfer_timeout_rcv (void)
+{
+ return get_utcb()->local_xfer_timeout.get_rcv();
+}
+
/**
* enqueues the tcb into the send queue of tcb
diff -rup pistachio/kernel/include/glue/v4-alpha/utcb.h
pistachio-to/kernel/include/glue/v4-alpha/utcb.h
--- pistachio/kernel/include/glue/v4-alpha/utcb.h 2003-09-24
21:12:21.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-alpha/utcb.h 2005-01-31
14:15:12.000000000 +0100
@@ -54,7 +54,10 @@ public:
word_t error_code; /* 56 */
threadid_t intended_receiver; /* 64 */
threadid_t virtual_sender; /* 72 */
- word_t __padding0[6]; /* 80 .. 128 */
+ word_t thread_word_0; /* 80 */
+ word_t thread_word_1; /* 88 */
+ timeout_t local_xfer_timeout; /* 96 */
+ word_t __padding0[3]; /* 104 .. 128 */
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */
word_t br[IPC_NUM_BR]; /* 640 .. 904 */
word_t __padding1[15]; /* 904 .. 1024 */
diff -rup pistachio/kernel/include/glue/v4-amd64/utcb.h
pistachio-to/kernel/include/glue/v4-amd64/utcb.h
--- pistachio/kernel/include/glue/v4-amd64/utcb.h 2004-06-02
13:26:42.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-amd64/utcb.h 2005-01-31
14:17:42.000000000 +0100
@@ -49,7 +49,10 @@ public:
timeout_t xfer_timeout; /* - 64 */
threadid_t intended_receiver; /* - 56 */
threadid_t virtual_sender; /* - 48 */
- word_t reserved1[5]; /* - 40 .. -1 */
+ word_t thread_word_1; /* - 40 */
+ word_t thread_word_0; /* - 32 */
+ timeout_t local_xfer_timeout; /* - 24 */
+ word_t reserved1[2]; /* - 16 .. -1 */
word_t mr[IPC_NUM_MR]; /* 0 .. 511 */
/* do not delete this TCB_END_MARKER */
diff -rup pistachio/kernel/include/glue/v4-arm/utcb.h
pistachio-to/kernel/include/glue/v4-arm/utcb.h
--- pistachio/kernel/include/glue/v4-arm/utcb.h 2004-06-04 04:26:52.000000000
+0200
+++ pistachio-to/kernel/include/glue/v4-arm/utcb.h 2005-01-31
14:19:25.000000000 +0100
@@ -35,7 +35,7 @@
#include INC_API(thread.h)
#include INC_API(types.h)
-#define PADDING_0
((64-sizeof(threadid_t)*5-sizeof(word_t)*3-sizeof(timeout_t)-sizeof(u8_t)*2-sizeof(u16_t))/4)
+#define PADDING_0
((64-sizeof(threadid_t)*5-sizeof(word_t)*5-sizeof(timeout_t)*2-sizeof(u8_t)*2-sizeof(u16_t))/4)
#define PADDING_1 ((448-sizeof(word_t)*(IPC_NUM_MR+IPC_NUM_BR))/4)
@@ -57,7 +57,10 @@ public:
word_t error_code; /* 28 */
threadid_t intended_receiver; /* 32 */
threadid_t virtual_sender; /* 36 */
- word_t __padding0[PADDING_0]; /* 40 .. 64 */
+ word_t thread_word_0; /* 40 */
+ word_t thread_word_1; /* 44 */
+ timeout_t local_xfer_timeout; /* 48 */
+ word_t __padding0[PADDING_0]; /* 52 .. 64 */
word_t mr[IPC_NUM_MR]; /* 64 .. 320 */
word_t br[IPC_NUM_BR]; /* 320 .. 452 */
word_t __padding1[PADDING_1]; /* 452 .. 512 */
diff -rup pistachio/kernel/include/glue/v4-ia32/utcb.h
pistachio-to/kernel/include/glue/v4-ia32/utcb.h
--- pistachio/kernel/include/glue/v4-ia32/utcb.h 2003-09-24
21:12:22.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-ia32/utcb.h 2005-01-31
14:03:38.000000000 +0100
@@ -51,7 +51,10 @@ public:
timeout_t xfer_timeout; /* -32 */
threadid_t intended_receiver; /* -28 */
threadid_t virtual_sender; /* -24 */
- word_t reserved1[5]; /* -20 .. -4 */
+ word_t thread_word_1; /* -20 */
+ word_t thread_word_0; /* -16 */
+ timeout_t local_xfer_timeout; /* -12 */
+ word_t reserved1[2]; /* -8 .. -4 */
word_t mr[IPC_NUM_MR]; /* 0 .. 252 */
/* do not delete this TCB_END_MARKER */
diff -rup pistachio/kernel/include/glue/v4-ia64/utcb.h
pistachio-to/kernel/include/glue/v4-ia64/utcb.h
--- pistachio/kernel/include/glue/v4-ia64/utcb.h 2003-09-24
21:12:23.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-ia64/utcb.h 2005-01-31
14:20:56.000000000 +0100
@@ -55,7 +55,10 @@ public:
word_t error_code; // 72 (9)
word_t br[IPC_NUM_BR]; // 80 (10)
- word_t __padding1[5]; // 344 (43)
+ word_t thread_word_0; // 88 (11)
+ word_t thread_word_1; // 88 (12)
+ timeout_t local_xfer_timeout; // 96 (13)
+ word_t __padding1[2]; // 368 (46)
word_t mr[IPC_NUM_MR]; // 384 (48)
word_t __padding2[16]; // 896 (112)
diff -rup pistachio/kernel/include/glue/v4-mips64/utcb.h
pistachio-to/kernel/include/glue/v4-mips64/utcb.h
--- pistachio/kernel/include/glue/v4-mips64/utcb.h 2004-10-06
21:13:40.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-mips64/utcb.h 2005-01-31
14:21:56.000000000 +0100
@@ -54,7 +54,10 @@ public:
word_t error_code; /* 56 */
threadid_t intended_receiver; /* 64 */
threadid_t virtual_sender; /* 72 */
- word_t __padding0[6]; /* 80 .. 128 */
+ word_t thread_word_0; /* 80 */
+ word_t thread_word_1; /* 88 */
+ timeout_t local_xfer_timeout; /* 96 */
+ word_t __padding0[3]; /* 104 .. 128 */
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */
word_t br[IPC_NUM_BR]; /* 640 .. 904 */
word_t __padding1[15]; /* 904 .. 1024 */
diff -rup pistachio/kernel/include/glue/v4-powerpc/utcb.h
pistachio-to/kernel/include/glue/v4-powerpc/utcb.h
--- pistachio/kernel/include/glue/v4-powerpc/utcb.h 2003-11-17
12:17:19.000000000 +0100
+++ pistachio-to/kernel/include/glue/v4-powerpc/utcb.h 2005-01-31
14:22:40.000000000 +0100
@@ -52,7 +52,8 @@ public:
threadid_t virtual_sender; /* -24 */
word_t thread_word1; /* -20 */
word_t thread_word0; /* -16 */
- word_t reserved1[3]; /* -12 .. -4 */
+ timeout_t local_xfer_timeout; /* -12 */
+ word_t reserved1[2]; /* -8 .. -4 */
word_t mr[IPC_NUM_MR]; /* 0 .. 252 */
} __attribute__((packed));
diff -rup pistachio/kernel/include/glue/v4-powerpc64/utcb.h
pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h
--- pistachio/kernel/include/glue/v4-powerpc64/utcb.h 2004-06-04
04:52:57.000000000 +0200
+++ pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h 2005-01-31
14:23:32.000000000 +0100
@@ -49,7 +49,10 @@ public:
word_t error_code; /* 56 */
threadid_t intended_receiver; /* 64 */
threadid_t virtual_sender; /* 72 */
- word_t __padding0[6]; /* 80 .. 128 */
+ word_t thread_word_0; /* 80 */
+ word_t thread_word_1; /* 88 */
+ timeout_t local_xfer_timeout; /* 96 */
+ word_t __padding0[3]; /* 104 .. 128 */
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */
word_t br[IPC_NUM_BR]; /* 640 .. 904 */
word_t __padding1[15]; /* 904 .. 1024 */
diff -rup pistachio/kernel/src/api/v4/space.cc
pistachio-to/kernel/src/api/v4/space.cc
--- pistachio/kernel/src/api/v4/space.cc 2004-10-06 21:13:42.000000000
+0200
+++ pistachio-to/kernel/src/api/v4/space.cc 2005-01-31 14:11:48.000000000
+0100
@@ -149,8 +149,9 @@ void tunnel_pagefault (word_t addr)
* up a timeout for the sender thread.
*
* @param sender sender thread
+ * @param fault_in_sender_as page fault happened in the space of the sender
*/
-static void handle_xfer_timeouts (tcb_t * sender)
+static void handle_xfer_timeouts (tcb_t * sender, bool fault_in_sender_as)
{
#warning Handle priority inversion for xfer timeouts
@@ -163,9 +164,27 @@ static void handle_xfer_timeouts (tcb_t
ASSERT (! sender->get_partner ().is_nilthread ());
ASSERT (sender->get_state() == thread_state_t::locked_running);
ASSERT (partner->get_state() == thread_state_t::locked_waiting);
-
- time_t snd_to = sender->get_xfer_timeout_snd ();
- time_t rcv_to = partner->get_xfer_timeout_rcv ();
+
+ time_t snd_to;
+ time_t rcv_to;
+ time_t timeout;
+
+ if (fault_in_sender_as)
+ {
+ /* The page fault happened in the sender. So the timeouts
+ that matter are the local pf send timeout of the sender
+ and the remote pf receive timeout of the partner. */
+ snd_to = sender->get_local_xfer_timeout_snd ();
+ rcv_to = partner->get_xfer_timeout_rcv ();
+ }
+ else
+ {
+ /* The page fault happened in the partner. So the timeouts
+ that matter are the remote pf send timeout of the sender
+ and the local pf receive timeout of the partner. */
+ snd_to = sender->get_xfer_timeout_snd ();
+ rcv_to = partner->get_local_xfer_timeout_rcv ();
+ }
if (snd_to.is_zero () || rcv_to.is_zero ())
{
@@ -225,7 +244,7 @@ void space_t::handle_pagefault(addr_t ad
// Pagefault during IPC copy. Initiate xfer timeout
// counters before handling pagefault.
current->misc.ipc_copy.copy_fault = addr;
- handle_xfer_timeouts (current);
+ handle_xfer_timeouts (current, true);
}
// if we have a user fault we may have a stale partner
@@ -279,7 +298,7 @@ void space_t::handle_pagefault(addr_t ad
{
// Fault in copy area. Tunnel pagefault through partner.
current->misc.ipc_copy.copy_fault = addr;
- handle_xfer_timeouts (current);
+ handle_xfer_timeouts (current, false);
// On PF tunneling we temporarily set the current thread
// into waiting for partner.
diff -rup pistachio/user/include/l4/alpha/vregs.h
pistachio-to/user/include/l4/alpha/vregs.h
--- pistachio/user/include/l4/alpha/vregs.h 2004-10-06 21:13:47.000000000
+0200
+++ pistachio-to/user/include/l4/alpha/vregs.h 2005-01-31 14:42:41.000000000
+0100
@@ -52,6 +52,8 @@ L4_INLINE L4_Word_t *__L4_Alpha_Utcb( vo
#define __L4_TCR_BR_OFFSET (80)
#define __L4_TCR_MR_OFFSET (16)
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12)
+#define __L4_TCR_THREAD_WORD1 (11)
#define __L4_TCR_THREAD_WORD0 (10)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9)
#define __L4_TCR_INTENDED_RECEIVER (8)
@@ -128,6 +130,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w )
{
(__L4_Alpha_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w;
+ (__L4_Alpha_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void )
diff -rup pistachio/user/include/l4/amd64/vregs.h
pistachio-to/user/include/l4/amd64/vregs.h
--- pistachio/user/include/l4/amd64/vregs.h 2003-09-24 21:06:22.000000000
+0200
+++ pistachio-to/user/include/l4/amd64/vregs.h 2005-01-31 14:43:02.000000000
+0100
@@ -65,6 +65,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi
* Location of TCRs within UTCB. (Counted in word_t)
*/
+#define __L4_TCR_XFER_TIMEOUT (-3)
#define __L4_TCR_THREAD_WORD_0 (-4)
#define __L4_TCR_THREAD_WORD_1 (-5)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6)
@@ -144,6 +145,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w)
{
(__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w;
+ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void)
diff -rup pistachio/user/include/l4/arm/vregs.h
pistachio-to/user/include/l4/arm/vregs.h
--- pistachio/user/include/l4/arm/vregs.h 2004-06-04 10:20:12.000000000
+0200
+++ pistachio-to/user/include/l4/arm/vregs.h 2005-01-31 14:43:59.000000000
+0100
@@ -35,6 +35,9 @@ L4_INLINE L4_Word_t *__L4_ARM_Utcb( void
#define __L4_TCR_BR_OFFSET (80)
#define __L4_TCR_MR_OFFSET (16)
+#define __L4_TCR_XFER_TIMEOUT (12)
+#define __L4_TCR_THREAD_WORD1 (11)
+#define __L4_TCR_THREAD_WORD0 (10)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9)
#define __L4_TCR_INTENDED_RECEIVER (8)
#define __L4_TCR_ERROR_CODE (7)
diff -rup pistachio/user/include/l4/ia32/vregs.h
pistachio-to/user/include/l4/ia32/vregs.h
--- pistachio/user/include/l4/ia32/vregs.h 2004-11-17 01:48:13.000000000
+0100
+++ pistachio-to/user/include/l4/ia32/vregs.h 2005-01-31 14:40:47.000000000
+0100
@@ -66,6 +66,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi
* Location of TCRs within UTCB.
*/
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3)
#define __L4_TCR_THREAD_WORD_0 (-4)
#define __L4_TCR_THREAD_WORD_1 (-5)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6)
@@ -145,6 +146,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w)
{
(__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w;
+ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void)
diff -rup pistachio/user/include/l4/ia64/vregs.h
pistachio-to/user/include/l4/ia64/vregs.h
--- pistachio/user/include/l4/ia64/vregs.h 2003-09-24 21:13:50.000000000
+0200
+++ pistachio-to/user/include/l4/ia64/vregs.h 2005-01-31 14:44:41.000000000
+0100
@@ -62,6 +62,7 @@ L4_INLINE L4_Word_t * __L4_IA64_Utcb (vo
*/
#define __L4_TCB_MR_OFFSET (48)
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (45)
#define __L4_TCR_THREAD_WORD_1 (44)
#define __L4_TCR_THREAD_WORD_0 (43)
#define __L4_TCB_BR_OFFSET (10)
@@ -154,6 +155,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w)
{
(__L4_IA64_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w;
+ (__L4_IA64_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void)
diff -rup pistachio/user/include/l4/mips64/vregs.h
pistachio-to/user/include/l4/mips64/vregs.h
--- pistachio/user/include/l4/mips64/vregs.h 2004-10-06 21:13:47.000000000
+0200
+++ pistachio-to/user/include/l4/mips64/vregs.h 2005-01-31 14:45:34.000000000
+0100
@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_Mips64_Utcb( v
#define __L4_TCR_BR_OFFSET (80)
#define __L4_TCR_MR_OFFSET (16)
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12)
#define __L4_TCR_THREAD_WORD1 (11)
#define __L4_TCR_THREAD_WORD0 (10)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9)
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w )
{
(__L4_Mips64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w;
+ (__L4_Mips64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void )
diff -rup pistachio/user/include/l4/powerpc/vregs.h
pistachio-to/user/include/l4/powerpc/vregs.h
--- pistachio/user/include/l4/powerpc/vregs.h 2003-10-27 21:50:41.000000000
+0100
+++ pistachio-to/user/include/l4/powerpc/vregs.h 2005-01-31
14:46:01.000000000 +0100
@@ -53,6 +53,7 @@ L4_INLINE L4_Word_t *__L4_PPC_Utcb( void
* Location of TCRs within UTCB.
*/
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3)
#define __L4_TCR_THREAD_WORD_0 (-4)
#define __L4_TCR_THREAD_WORD_1 (-5)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6)
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w )
{
(__L4_PPC_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w;
+ (__L4_PPC_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void )
diff -rup pistachio/user/include/l4/powerpc64/vregs.h
pistachio-to/user/include/l4/powerpc64/vregs.h
--- pistachio/user/include/l4/powerpc64/vregs.h 2003-10-28 02:26:17.000000000
+0100
+++ pistachio-to/user/include/l4/powerpc64/vregs.h 2005-01-31
14:46:25.000000000 +0100
@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_PPC64_Utcb( vo
#define __L4_TCR_BR_OFFSET (80)
#define __L4_TCR_MR_OFFSET (16)
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12)
#define __L4_TCR_THREAD_WORD1 (11)
#define __L4_TCR_THREAD_WORD0 (10)
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9)
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w )
{
(__L4_PPC64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w;
+ (__L4_PPC64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w;
}
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void )