l4-hurd
[Top][All Lists]
Advanced

[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 )





reply via email to

[Prev in Thread] Current Thread [Next in Thread]