478 |
|
|
479 |
: /* outputs */ |
: /* outputs */ |
480 |
"=r"(utcb) |
"=r"(utcb) |
481 |
|
|
482 |
|
|
483 |
|
This patch extends the L4 kernel by allowing to set different xfer |
484 |
|
timeouts for local and remote page faults. |
485 |
|
|
486 |
|
2005-01-31 Matthieu Lemerre <racin@free.fr> |
487 |
|
|
488 |
|
* kernel/src/api/v4/space.cc (handle_xfer_timeouts): Accept |
489 |
|
new argument FAULT_IN_SENDER_AS which specifies if the fault happened |
490 |
|
in the sender's address space. Adjust the timeouts taking |
491 |
|
this parameter into account. |
492 |
|
(space_t::handle_pagefaults): Pass new argument to |
493 |
|
handle_xfer_timeouts. |
494 |
|
* kernel/include/api/v4/tcb.h (tcb_t): New accessor function |
495 |
|
prototypes get_local_xfer_timeout_snd and |
496 |
|
get_local_xfer_timeout_rcv. |
497 |
|
(tcb_t::get_local_xfer_timeout_snd, tcb_t::get_local_xfer_timeout_rcv): |
498 |
|
New inline functions. |
499 |
|
* kernel/include/glue/v4-alpha/utcb.h (utcb_t): New members |
500 |
|
thread_word_0, thread_word_1 and local_xfer_timeout. Adjust |
501 |
|
padding. |
502 |
|
* kernel/include/glue/v4/v4-amd64/utcb.h (utcb_t): Likewise. |
503 |
|
* kernel/include/glue/v4/v4-arm/utcb.h (utcb_t): Likewise. |
504 |
|
* kernel/include/glue/v4/v4-ia32/utcb.h (utcb_t): Likewise. |
505 |
|
* kernel/include/glue/v4/v4-ia64/utcb.h (utcb_t): Likewise. |
506 |
|
* kernel/include/glue/v4/v4-mips64/utcb.h (utcb_t): Likewise. |
507 |
|
* kernel/include/glue/v4/v4-powerpc/utcb.h (utcb_t): Likewise. |
508 |
|
* kernel/include/glue/v4/v4-powerpc64/utcb.h (utcb_t): Likewise. |
509 |
|
* user/include/l4/alpha/vregs.h, |
510 |
|
user/include/l4/amd64/vregs.h, user/include/l4/arm/vregs.h, |
511 |
|
user/include/l4/ia32/vregs.h, user/include/l4/ia64/vregs.h, |
512 |
|
user/include/l4/mips64/vregs.h, user/include/l4/powerpc/vregs.h, |
513 |
|
user/include/l4/powerpc64/vregs.h: For all these files: |
514 |
|
(__L4_TCR_LOCAL_XFER_TIMEOUT): Define macro. |
515 |
|
(__L4_TCR_XferTimeout): Set local transfer timeout as well. |
516 |
|
|
517 |
|
diff -rup pistachio/kernel/include/api/v4/tcb.h pistachio-to/kernel/include/api/v4/tcb.h |
518 |
|
--- pistachio/kernel/include/api/v4/tcb.h 2005-01-22 01:45:47.000000000 +0100 |
519 |
|
+++ pistachio-to/kernel/include/api/v4/tcb.h 2005-01-31 13:56:52.000000000 +0100 |
520 |
|
@@ -130,6 +130,8 @@ public: |
521 |
|
|
522 |
|
time_t get_xfer_timeout_snd (); |
523 |
|
time_t get_xfer_timeout_rcv (); |
524 |
|
+ time_t get_local_xfer_timeout_snd (); |
525 |
|
+ time_t get_local_xfer_timeout_rcv (); |
526 |
|
void set_actual_sender(threadid_t tid); |
527 |
|
threadid_t get_virtual_sender(); |
528 |
|
threadid_t get_intended_receiver(); |
529 |
|
@@ -588,6 +590,24 @@ INLINE time_t tcb_t::get_xfer_timeout_rc |
530 |
|
return get_utcb()->xfer_timeout.get_rcv(); |
531 |
|
} |
532 |
|
|
533 |
|
+/** |
534 |
|
+ * Get a thread's local send transfer timeout |
535 |
|
+ * @return local send transfer timeout |
536 |
|
+ */ |
537 |
|
+INLINE time_t tcb_t::get_local_xfer_timeout_snd (void) |
538 |
|
+{ |
539 |
|
+ return get_utcb()->local_xfer_timeout.get_snd(); |
540 |
|
+} |
541 |
|
+ |
542 |
|
+/** |
543 |
|
+ * Get a thread's local receive transfer timeout |
544 |
|
+ * @return local receive transfer timeout |
545 |
|
+ */ |
546 |
|
+INLINE time_t tcb_t::get_local_xfer_timeout_rcv (void) |
547 |
|
+{ |
548 |
|
+ return get_utcb()->local_xfer_timeout.get_rcv(); |
549 |
|
+} |
550 |
|
+ |
551 |
|
|
552 |
|
/** |
553 |
|
* enqueues the tcb into the send queue of tcb |
554 |
|
diff -rup pistachio/kernel/include/glue/v4-alpha/utcb.h pistachio-to/kernel/include/glue/v4-alpha/utcb.h |
555 |
|
--- pistachio/kernel/include/glue/v4-alpha/utcb.h 2003-09-24 21:12:21.000000000 +0200 |
556 |
|
+++ pistachio-to/kernel/include/glue/v4-alpha/utcb.h 2005-01-31 14:15:12.000000000 +0100 |
557 |
|
@@ -54,7 +54,10 @@ public: |
558 |
|
word_t error_code; /* 56 */ |
559 |
|
threadid_t intended_receiver; /* 64 */ |
560 |
|
threadid_t virtual_sender; /* 72 */ |
561 |
|
- word_t __padding0[6]; /* 80 .. 128 */ |
562 |
|
+ word_t thread_word_0; /* 80 */ |
563 |
|
+ word_t thread_word_1; /* 88 */ |
564 |
|
+ timeout_t local_xfer_timeout; /* 96 */ |
565 |
|
+ word_t __padding0[3]; /* 104 .. 128 */ |
566 |
|
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ |
567 |
|
word_t br[IPC_NUM_BR]; /* 640 .. 904 */ |
568 |
|
word_t __padding1[15]; /* 904 .. 1024 */ |
569 |
|
diff -rup pistachio/kernel/include/glue/v4-amd64/utcb.h pistachio-to/kernel/include/glue/v4-amd64/utcb.h |
570 |
|
--- pistachio/kernel/include/glue/v4-amd64/utcb.h 2004-06-02 13:26:42.000000000 +0200 |
571 |
|
+++ pistachio-to/kernel/include/glue/v4-amd64/utcb.h 2005-01-31 14:17:42.000000000 +0100 |
572 |
|
@@ -49,7 +49,10 @@ public: |
573 |
|
timeout_t xfer_timeout; /* - 64 */ |
574 |
|
threadid_t intended_receiver; /* - 56 */ |
575 |
|
threadid_t virtual_sender; /* - 48 */ |
576 |
|
- word_t reserved1[5]; /* - 40 .. -1 */ |
577 |
|
+ word_t thread_word_1; /* - 40 */ |
578 |
|
+ word_t thread_word_0; /* - 32 */ |
579 |
|
+ timeout_t local_xfer_timeout; /* - 24 */ |
580 |
|
+ word_t reserved1[2]; /* - 16 .. -1 */ |
581 |
|
word_t mr[IPC_NUM_MR]; /* 0 .. 511 */ |
582 |
|
|
583 |
|
/* do not delete this TCB_END_MARKER */ |
584 |
|
diff -rup pistachio/kernel/include/glue/v4-arm/utcb.h pistachio-to/kernel/include/glue/v4-arm/utcb.h |
585 |
|
--- pistachio/kernel/include/glue/v4-arm/utcb.h 2004-06-04 04:26:52.000000000 +0200 |
586 |
|
+++ pistachio-to/kernel/include/glue/v4-arm/utcb.h 2005-01-31 14:19:25.000000000 +0100 |
587 |
|
@@ -35,7 +35,7 @@ |
588 |
|
#include INC_API(thread.h) |
589 |
|
#include INC_API(types.h) |
590 |
|
|
591 |
|
-#define PADDING_0 ((64-sizeof(threadid_t)*5-sizeof(word_t)*3-sizeof(timeout_t)-sizeof(u8_t)*2-sizeof(u16_t))/4) |
592 |
|
+#define PADDING_0 ((64-sizeof(threadid_t)*5-sizeof(word_t)*5-sizeof(timeout_t)*2-sizeof(u8_t)*2-sizeof(u16_t))/4) |
593 |
|
|
594 |
|
#define PADDING_1 ((448-sizeof(word_t)*(IPC_NUM_MR+IPC_NUM_BR))/4) |
595 |
|
|
596 |
|
@@ -57,7 +57,10 @@ public: |
597 |
|
word_t error_code; /* 28 */ |
598 |
|
threadid_t intended_receiver; /* 32 */ |
599 |
|
threadid_t virtual_sender; /* 36 */ |
600 |
|
- word_t __padding0[PADDING_0]; /* 40 .. 64 */ |
601 |
|
+ word_t thread_word_0; /* 40 */ |
602 |
|
+ word_t thread_word_1; /* 44 */ |
603 |
|
+ timeout_t local_xfer_timeout; /* 48 */ |
604 |
|
+ word_t __padding0[PADDING_0]; /* 52 .. 64 */ |
605 |
|
word_t mr[IPC_NUM_MR]; /* 64 .. 320 */ |
606 |
|
word_t br[IPC_NUM_BR]; /* 320 .. 452 */ |
607 |
|
word_t __padding1[PADDING_1]; /* 452 .. 512 */ |
608 |
|
diff -rup pistachio/kernel/include/glue/v4-ia32/utcb.h pistachio-to/kernel/include/glue/v4-ia32/utcb.h |
609 |
|
--- pistachio/kernel/include/glue/v4-ia32/utcb.h 2003-09-24 21:12:22.000000000 +0200 |
610 |
|
+++ pistachio-to/kernel/include/glue/v4-ia32/utcb.h 2005-01-31 14:03:38.000000000 +0100 |
611 |
|
@@ -51,7 +51,10 @@ public: |
612 |
|
timeout_t xfer_timeout; /* -32 */ |
613 |
|
threadid_t intended_receiver; /* -28 */ |
614 |
|
threadid_t virtual_sender; /* -24 */ |
615 |
|
- word_t reserved1[5]; /* -20 .. -4 */ |
616 |
|
+ word_t thread_word_1; /* -20 */ |
617 |
|
+ word_t thread_word_0; /* -16 */ |
618 |
|
+ timeout_t local_xfer_timeout; /* -12 */ |
619 |
|
+ word_t reserved1[2]; /* -8 .. -4 */ |
620 |
|
word_t mr[IPC_NUM_MR]; /* 0 .. 252 */ |
621 |
|
|
622 |
|
/* do not delete this TCB_END_MARKER */ |
623 |
|
diff -rup pistachio/kernel/include/glue/v4-ia64/utcb.h pistachio-to/kernel/include/glue/v4-ia64/utcb.h |
624 |
|
--- pistachio/kernel/include/glue/v4-ia64/utcb.h 2003-09-24 21:12:23.000000000 +0200 |
625 |
|
+++ pistachio-to/kernel/include/glue/v4-ia64/utcb.h 2005-01-31 14:20:56.000000000 +0100 |
626 |
|
@@ -55,7 +55,10 @@ public: |
627 |
|
word_t error_code; // 72 (9) |
628 |
|
|
629 |
|
word_t br[IPC_NUM_BR]; // 80 (10) |
630 |
|
- word_t __padding1[5]; // 344 (43) |
631 |
|
+ word_t thread_word_0; // 88 (11) |
632 |
|
+ word_t thread_word_1; // 88 (12) |
633 |
|
+ timeout_t local_xfer_timeout; // 96 (13) |
634 |
|
+ word_t __padding1[2]; // 368 (46) |
635 |
|
|
636 |
|
word_t mr[IPC_NUM_MR]; // 384 (48) |
637 |
|
word_t __padding2[16]; // 896 (112) |
638 |
|
diff -rup pistachio/kernel/include/glue/v4-mips64/utcb.h pistachio-to/kernel/include/glue/v4-mips64/utcb.h |
639 |
|
--- pistachio/kernel/include/glue/v4-mips64/utcb.h 2004-10-06 21:13:40.000000000 +0200 |
640 |
|
+++ pistachio-to/kernel/include/glue/v4-mips64/utcb.h 2005-01-31 14:21:56.000000000 +0100 |
641 |
|
@@ -54,7 +54,10 @@ public: |
642 |
|
word_t error_code; /* 56 */ |
643 |
|
threadid_t intended_receiver; /* 64 */ |
644 |
|
threadid_t virtual_sender; /* 72 */ |
645 |
|
- word_t __padding0[6]; /* 80 .. 128 */ |
646 |
|
+ word_t thread_word_0; /* 80 */ |
647 |
|
+ word_t thread_word_1; /* 88 */ |
648 |
|
+ timeout_t local_xfer_timeout; /* 96 */ |
649 |
|
+ word_t __padding0[3]; /* 104 .. 128 */ |
650 |
|
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ |
651 |
|
word_t br[IPC_NUM_BR]; /* 640 .. 904 */ |
652 |
|
word_t __padding1[15]; /* 904 .. 1024 */ |
653 |
|
diff -rup pistachio/kernel/include/glue/v4-powerpc/utcb.h pistachio-to/kernel/include/glue/v4-powerpc/utcb.h |
654 |
|
--- pistachio/kernel/include/glue/v4-powerpc/utcb.h 2003-11-17 12:17:19.000000000 +0100 |
655 |
|
+++ pistachio-to/kernel/include/glue/v4-powerpc/utcb.h 2005-01-31 14:22:40.000000000 +0100 |
656 |
|
@@ -52,7 +52,8 @@ public: |
657 |
|
threadid_t virtual_sender; /* -24 */ |
658 |
|
word_t thread_word1; /* -20 */ |
659 |
|
word_t thread_word0; /* -16 */ |
660 |
|
- word_t reserved1[3]; /* -12 .. -4 */ |
661 |
|
+ timeout_t local_xfer_timeout; /* -12 */ |
662 |
|
+ word_t reserved1[2]; /* -8 .. -4 */ |
663 |
|
word_t mr[IPC_NUM_MR]; /* 0 .. 252 */ |
664 |
|
} __attribute__((packed)); |
665 |
|
|
666 |
|
diff -rup pistachio/kernel/include/glue/v4-powerpc64/utcb.h pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h |
667 |
|
--- pistachio/kernel/include/glue/v4-powerpc64/utcb.h 2004-06-04 04:52:57.000000000 +0200 |
668 |
|
+++ pistachio-to/kernel/include/glue/v4-powerpc64/utcb.h 2005-01-31 14:23:32.000000000 +0100 |
669 |
|
@@ -49,7 +49,10 @@ public: |
670 |
|
word_t error_code; /* 56 */ |
671 |
|
threadid_t intended_receiver; /* 64 */ |
672 |
|
threadid_t virtual_sender; /* 72 */ |
673 |
|
- word_t __padding0[6]; /* 80 .. 128 */ |
674 |
|
+ word_t thread_word_0; /* 80 */ |
675 |
|
+ word_t thread_word_1; /* 88 */ |
676 |
|
+ timeout_t local_xfer_timeout; /* 96 */ |
677 |
|
+ word_t __padding0[3]; /* 104 .. 128 */ |
678 |
|
word_t mr[IPC_NUM_MR]; /* 128 .. 640 */ |
679 |
|
word_t br[IPC_NUM_BR]; /* 640 .. 904 */ |
680 |
|
word_t __padding1[15]; /* 904 .. 1024 */ |
681 |
|
diff -rup pistachio/kernel/src/api/v4/space.cc pistachio-to/kernel/src/api/v4/space.cc |
682 |
|
--- pistachio/kernel/src/api/v4/space.cc 2004-10-06 21:13:42.000000000 +0200 |
683 |
|
+++ pistachio-to/kernel/src/api/v4/space.cc 2005-01-31 14:11:48.000000000 +0100 |
684 |
|
@@ -149,8 +149,9 @@ void tunnel_pagefault (word_t addr) |
685 |
|
* up a timeout for the sender thread. |
686 |
|
* |
687 |
|
* @param sender sender thread |
688 |
|
+ * @param fault_in_sender_as page fault happened in the space of the sender |
689 |
|
*/ |
690 |
|
-static void handle_xfer_timeouts (tcb_t * sender) |
691 |
|
+static void handle_xfer_timeouts (tcb_t * sender, bool fault_in_sender_as) |
692 |
|
{ |
693 |
|
#warning Handle priority inversion for xfer timeouts |
694 |
|
|
695 |
|
@@ -163,9 +164,27 @@ static void handle_xfer_timeouts (tcb_t |
696 |
|
ASSERT (! sender->get_partner ().is_nilthread ()); |
697 |
|
ASSERT (sender->get_state() == thread_state_t::locked_running); |
698 |
|
ASSERT (partner->get_state() == thread_state_t::locked_waiting); |
699 |
|
- |
700 |
|
- time_t snd_to = sender->get_xfer_timeout_snd (); |
701 |
|
- time_t rcv_to = partner->get_xfer_timeout_rcv (); |
702 |
|
+ |
703 |
|
+ time_t snd_to; |
704 |
|
+ time_t rcv_to; |
705 |
|
+ time_t timeout; |
706 |
|
+ |
707 |
|
+ if (fault_in_sender_as) |
708 |
|
+ { |
709 |
|
+ /* The page fault happened in the sender. So the timeouts |
710 |
|
+ that matter are the local pf send timeout of the sender |
711 |
|
+ and the remote pf receive timeout of the partner. */ |
712 |
|
+ snd_to = sender->get_local_xfer_timeout_snd (); |
713 |
|
+ rcv_to = partner->get_xfer_timeout_rcv (); |
714 |
|
+ } |
715 |
|
+ else |
716 |
|
+ { |
717 |
|
+ /* The page fault happened in the partner. So the timeouts |
718 |
|
+ that matter are the remote pf send timeout of the sender |
719 |
|
+ and the local pf receive timeout of the partner. */ |
720 |
|
+ snd_to = sender->get_xfer_timeout_snd (); |
721 |
|
+ rcv_to = partner->get_local_xfer_timeout_rcv (); |
722 |
|
+ } |
723 |
|
|
724 |
|
if (snd_to.is_zero () || rcv_to.is_zero ()) |
725 |
|
{ |
726 |
|
@@ -225,7 +244,7 @@ void space_t::handle_pagefault(addr_t ad |
727 |
|
// Pagefault during IPC copy. Initiate xfer timeout |
728 |
|
// counters before handling pagefault. |
729 |
|
current->misc.ipc_copy.copy_fault = addr; |
730 |
|
- handle_xfer_timeouts (current); |
731 |
|
+ handle_xfer_timeouts (current, true); |
732 |
|
} |
733 |
|
|
734 |
|
// if we have a user fault we may have a stale partner |
735 |
|
@@ -279,7 +298,7 @@ void space_t::handle_pagefault(addr_t ad |
736 |
|
{ |
737 |
|
// Fault in copy area. Tunnel pagefault through partner. |
738 |
|
current->misc.ipc_copy.copy_fault = addr; |
739 |
|
- handle_xfer_timeouts (current); |
740 |
|
+ handle_xfer_timeouts (current, false); |
741 |
|
|
742 |
|
// On PF tunneling we temporarily set the current thread |
743 |
|
// into waiting for partner. |
744 |
|
|
745 |
|
|
746 |
|
diff -rup pistachio/user/include/l4/alpha/vregs.h pistachio-to/user/include/l4/alpha/vregs.h |
747 |
|
--- pistachio/user/include/l4/alpha/vregs.h 2004-10-06 21:13:47.000000000 +0200 |
748 |
|
+++ pistachio-to/user/include/l4/alpha/vregs.h 2005-01-31 14:42:41.000000000 +0100 |
749 |
|
@@ -52,6 +52,8 @@ L4_INLINE L4_Word_t *__L4_Alpha_Utcb( vo |
750 |
|
|
751 |
|
#define __L4_TCR_BR_OFFSET (80) |
752 |
|
#define __L4_TCR_MR_OFFSET (16) |
753 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) |
754 |
|
+#define __L4_TCR_THREAD_WORD1 (11) |
755 |
|
#define __L4_TCR_THREAD_WORD0 (10) |
756 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) |
757 |
|
#define __L4_TCR_INTENDED_RECEIVER (8) |
758 |
|
@@ -128,6 +130,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
759 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) |
760 |
|
{ |
761 |
|
(__L4_Alpha_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; |
762 |
|
+ (__L4_Alpha_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; |
763 |
|
} |
764 |
|
|
765 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) |
766 |
|
diff -rup pistachio/user/include/l4/amd64/vregs.h pistachio-to/user/include/l4/amd64/vregs.h |
767 |
|
--- pistachio/user/include/l4/amd64/vregs.h 2003-09-24 21:06:22.000000000 +0200 |
768 |
|
+++ pistachio-to/user/include/l4/amd64/vregs.h 2005-01-31 14:43:02.000000000 +0100 |
769 |
|
@@ -65,6 +65,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi |
770 |
|
* Location of TCRs within UTCB. (Counted in word_t) |
771 |
|
*/ |
772 |
|
|
773 |
|
+#define __L4_TCR_XFER_TIMEOUT (-3) |
774 |
|
#define __L4_TCR_THREAD_WORD_0 (-4) |
775 |
|
#define __L4_TCR_THREAD_WORD_1 (-5) |
776 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) |
777 |
|
@@ -144,6 +145,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
778 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) |
779 |
|
{ |
780 |
|
(__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; |
781 |
|
+ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; |
782 |
|
} |
783 |
|
|
784 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) |
785 |
|
diff -rup pistachio/user/include/l4/arm/vregs.h pistachio-to/user/include/l4/arm/vregs.h |
786 |
|
--- pistachio/user/include/l4/arm/vregs.h 2004-06-04 10:20:12.000000000 +0200 |
787 |
|
+++ pistachio-to/user/include/l4/arm/vregs.h 2005-01-31 14:43:59.000000000 +0100 |
788 |
|
@@ -35,6 +35,9 @@ L4_INLINE L4_Word_t *__L4_ARM_Utcb( void |
789 |
|
|
790 |
|
#define __L4_TCR_BR_OFFSET (80) |
791 |
|
#define __L4_TCR_MR_OFFSET (16) |
792 |
|
+#define __L4_TCR_XFER_TIMEOUT (12) |
793 |
|
+#define __L4_TCR_THREAD_WORD1 (11) |
794 |
|
+#define __L4_TCR_THREAD_WORD0 (10) |
795 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) |
796 |
|
#define __L4_TCR_INTENDED_RECEIVER (8) |
797 |
|
#define __L4_TCR_ERROR_CODE (7) |
798 |
|
diff -rup pistachio/user/include/l4/ia32/vregs.h pistachio-to/user/include/l4/ia32/vregs.h |
799 |
|
--- pistachio/user/include/l4/ia32/vregs.h 2004-11-17 01:48:13.000000000 +0100 |
800 |
|
+++ pistachio-to/user/include/l4/ia32/vregs.h 2005-01-31 14:40:47.000000000 +0100 |
801 |
|
@@ -66,6 +66,7 @@ L4_INLINE L4_Word_t * __L4_X86_Utcb (voi |
802 |
|
* Location of TCRs within UTCB. |
803 |
|
*/ |
804 |
|
|
805 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3) |
806 |
|
#define __L4_TCR_THREAD_WORD_0 (-4) |
807 |
|
#define __L4_TCR_THREAD_WORD_1 (-5) |
808 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) |
809 |
|
@@ -145,6 +146,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
810 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) |
811 |
|
{ |
812 |
|
(__L4_X86_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; |
813 |
|
+ (__L4_X86_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; |
814 |
|
} |
815 |
|
|
816 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) |
817 |
|
diff -rup pistachio/user/include/l4/ia64/vregs.h pistachio-to/user/include/l4/ia64/vregs.h |
818 |
|
--- pistachio/user/include/l4/ia64/vregs.h 2003-09-24 21:13:50.000000000 +0200 |
819 |
|
+++ pistachio-to/user/include/l4/ia64/vregs.h 2005-01-31 14:44:41.000000000 +0100 |
820 |
|
@@ -62,6 +62,7 @@ L4_INLINE L4_Word_t * __L4_IA64_Utcb (vo |
821 |
|
*/ |
822 |
|
|
823 |
|
#define __L4_TCB_MR_OFFSET (48) |
824 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (45) |
825 |
|
#define __L4_TCR_THREAD_WORD_1 (44) |
826 |
|
#define __L4_TCR_THREAD_WORD_0 (43) |
827 |
|
#define __L4_TCB_BR_OFFSET (10) |
828 |
|
@@ -154,6 +155,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
829 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout (L4_Word_t w) |
830 |
|
{ |
831 |
|
(__L4_IA64_Utcb ())[__L4_TCR_XFER_TIMEOUT] = w; |
832 |
|
+ (__L4_IA64_Utcb ())[__L4_TCR_LOCAL_XFER_TIMEOUT] = w; |
833 |
|
} |
834 |
|
|
835 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver(void) |
836 |
|
diff -rup pistachio/user/include/l4/mips64/vregs.h pistachio-to/user/include/l4/mips64/vregs.h |
837 |
|
--- pistachio/user/include/l4/mips64/vregs.h 2004-10-06 21:13:47.000000000 +0200 |
838 |
|
+++ pistachio-to/user/include/l4/mips64/vregs.h 2005-01-31 14:45:34.000000000 +0100 |
839 |
|
@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_Mips64_Utcb( v |
840 |
|
|
841 |
|
#define __L4_TCR_BR_OFFSET (80) |
842 |
|
#define __L4_TCR_MR_OFFSET (16) |
843 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) |
844 |
|
#define __L4_TCR_THREAD_WORD1 (11) |
845 |
|
#define __L4_TCR_THREAD_WORD0 (10) |
846 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) |
847 |
|
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
848 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) |
849 |
|
{ |
850 |
|
(__L4_Mips64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; |
851 |
|
+ (__L4_Mips64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; |
852 |
|
} |
853 |
|
|
854 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) |
855 |
|
diff -rup pistachio/user/include/l4/powerpc/vregs.h pistachio-to/user/include/l4/powerpc/vregs.h |
856 |
|
--- pistachio/user/include/l4/powerpc/vregs.h 2003-10-27 21:50:41.000000000 +0100 |
857 |
|
+++ pistachio-to/user/include/l4/powerpc/vregs.h 2005-01-31 14:46:01.000000000 +0100 |
858 |
|
@@ -53,6 +53,7 @@ L4_INLINE L4_Word_t *__L4_PPC_Utcb( void |
859 |
|
* Location of TCRs within UTCB. |
860 |
|
*/ |
861 |
|
|
862 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (-3) |
863 |
|
#define __L4_TCR_THREAD_WORD_0 (-4) |
864 |
|
#define __L4_TCR_THREAD_WORD_1 (-5) |
865 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (-6) |
866 |
|
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
867 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) |
868 |
|
{ |
869 |
|
(__L4_PPC_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; |
870 |
|
+ (__L4_PPC_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; |
871 |
|
} |
872 |
|
|
873 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) |
874 |
|
diff -rup pistachio/user/include/l4/powerpc64/vregs.h pistachio-to/user/include/l4/powerpc64/vregs.h |
875 |
|
--- pistachio/user/include/l4/powerpc64/vregs.h 2003-10-28 02:26:17.000000000 +0100 |
876 |
|
+++ pistachio-to/user/include/l4/powerpc64/vregs.h 2005-01-31 14:46:25.000000000 +0100 |
877 |
|
@@ -48,6 +48,7 @@ L4_INLINE L4_Word_t *__L4_PPC64_Utcb( vo |
878 |
|
|
879 |
|
#define __L4_TCR_BR_OFFSET (80) |
880 |
|
#define __L4_TCR_MR_OFFSET (16) |
881 |
|
+#define __L4_TCR_LOCAL_XFER_TIMEOUT (12) |
882 |
|
#define __L4_TCR_THREAD_WORD1 (11) |
883 |
|
#define __L4_TCR_THREAD_WORD0 (10) |
884 |
|
#define __L4_TCR_VIRTUAL_ACTUAL_SENDER (9) |
885 |
|
@@ -131,6 +132,7 @@ L4_INLINE L4_Word_t __L4_TCR_XferTimeout |
886 |
|
L4_INLINE void __L4_TCR_Set_XferTimeout( L4_Word_t w ) |
887 |
|
{ |
888 |
|
(__L4_PPC64_Utcb())[ __L4_TCR_XFER_TIMEOUT ] = w; |
889 |
|
+ (__L4_PPC64_Utcb())[ __L4_TCR_LOCAL_XFER_TIMEOUT ] = w; |
890 |
|
} |
891 |
|
|
892 |
|
L4_INLINE L4_Word_t __L4_TCR_IntendedReceiver( void ) |