Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

xxflshtb.c File Reference

#include "ki.h"

Go to the source code of this file.

Functions

VOID KiFlushEntireTbTarget (IN PULONG SignalDone, IN PVOID Parameter1, IN PVOID Parameter2, IN PVOID Parameter3)
VOID KiFlushMultipleTbTarget (IN PULONG SignalDone, IN PVOID Number, IN PVOID Virtual, IN PVOID Pid)
VOID KiFlushSingleTbTarget (IN PULONG SignalDone, IN PVOID Virtual, IN PVOID Pid, IN PVOID Parameter3)
VOID KiFlushMultipleTbTarget64 (IN PULONG SignalDone, IN PVOID Number, IN PVOID Virtual, IN PVOID Pid)
VOID KiFlushSingleTbTarget64 (IN PULONG SignalDone, IN PVOID Virtual, IN PVOID Pid, IN PVOID Parameter3)
VOID KeFlushEntireTb (IN BOOLEAN Invalid, IN BOOLEAN AllProcessors)
VOID KeFlushMultipleTb (IN ULONG Number, IN PVOID *Virtual, IN BOOLEAN Invalid, IN BOOLEAN AllProcessors, IN PHARDWARE_PTE *PtePointer OPTIONAL, IN HARDWARE_PTE PteValue)
VOID KeFlushMultipleTb64 (IN ULONG Number, IN PULONG *Virtual, IN BOOLEAN Invalid, IN BOOLEAN AllProcessors, IN PHARDWARE_PTE *PtePointer OPTIONAL, IN HARDWARE_PTE PteValue)
HARDWARE_PTE KeFlushSingleTb (IN PVOID Virtual, IN BOOLEAN Invalid, IN BOOLEAN AllProcessors, IN PHARDWARE_PTE PtePointer, IN HARDWARE_PTE PteValue)
HARDWARE_PTE KeFlushSingleTb64 (IN ULONG Virtual, IN BOOLEAN Invalid, IN BOOLEAN AllProcessors, IN PHARDWARE_PTE PtePointer, IN HARDWARE_PTE PteValue)


Function Documentation

VOID KeFlushEntireTb IN BOOLEAN  Invalid,
IN BOOLEAN  AllProcessors
 

Definition at line 74 of file xxflshtb.c.

References _KPROCESS::ActiveProcessors, _KTHREAD::ApcState, ASSERT, DISPATCH_LEVEL, FALSE, KeActiveProcessors, KeFlushCurrentTb(), KeGetCurrentThread, KeLowerIrql(), KiFlushEntireTbTarget(), KiIpiSendPacket(), KiIpiStallOnPacketTargets(), KiLockContextSwap, KiUnlockContextSwap, NULL, and _KAPC_STATE::Process.

00081 : 00082 00083 This function flushes the entire translation buffer (TB) on all 00084 processors that are currently running threads which are children 00085 of the current process or flushes the entire translation buffer 00086 on all processors in the host configuration. 00087 00088 Arguments: 00089 00090 Invalid - Supplies a boolean value that specifies the reason for 00091 flushing the translation buffer. 00092 00093 AllProcessors - Supplies a boolean value that determines which 00094 translation buffers are to be flushed. 00095 00096 Return Value: 00097 00098 None. 00099 00100 --*/ 00101 00102 { 00103 00104 KIRQL OldIrql; 00105 PKPROCESS Process; 00106 KAFFINITY TargetProcessors; 00107 PKTHREAD Thread; 00108 00109 ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); 00110 00111 // 00112 // Compute the target set of processors, disable context switching, 00113 // and send the flush entire parameters to the target processors, 00114 // if any, for execution. 00115 // 00116 00117 #if defined(NT_UP) 00118 00119 OldIrql = KeRaiseIrqlToSynchLevel(); 00120 00121 #else 00122 00123 if (AllProcessors != FALSE) { 00124 OldIrql = KeRaiseIrqlToSynchLevel(); 00125 TargetProcessors = KeActiveProcessors; 00126 00127 } else { 00128 Thread = KeGetCurrentThread(); 00129 Process = Thread->ApcState.Process; 00130 KiLockContextSwap(&OldIrql); 00131 TargetProcessors = Process->ActiveProcessors; 00132 } 00133 00134 TargetProcessors &= PCR->NotMember; 00135 if (TargetProcessors != 0) { 00136 KiIpiSendPacket(TargetProcessors, 00137 KiFlushEntireTbTarget, 00138 NULL, 00139 NULL, 00140 NULL); 00141 } 00142 00143 #endif 00144 00145 // 00146 // Flush TB on current processor. 00147 // 00148 00149 KeFlushCurrentTb(); 00150 00151 // 00152 // Wait until all target processors have finished. 00153 // 00154 00155 #if defined(NT_UP) 00156 00157 KeLowerIrql(OldIrql); 00158 00159 #else 00160 00161 if (TargetProcessors != 0) { 00162 KiIpiStallOnPacketTargets(); 00163 } 00164 00165 if (AllProcessors != FALSE) { 00166 KeLowerIrql(OldIrql); 00167 00168 } else { 00169 KiUnlockContextSwap(OldIrql); 00170 } 00171 00172 #endif 00173 00174 return; 00175 }

VOID KeFlushMultipleTb IN ULONG  Number,
IN PVOID *  Virtual,
IN BOOLEAN  Invalid,
IN BOOLEAN  AllProcessors,
IN PHARDWARE_PTE *PtePointer  OPTIONAL,
IN HARDWARE_PTE  PteValue
 

Definition at line 222 of file xxflshtb.c.

References _KPROCESS::ActiveProcessors, _KTHREAD::ApcState, ASSERT, DISPATCH_LEVEL, FALSE, Index, KeActiveProcessors, KeGetCurrentThread, KeLowerIrql(), KiFlushMultipleTb(), KiFlushMultipleTbTarget(), KiIpiSendPacket(), KiIpiStallOnPacketTargets(), KiLockContextSwap, KiUnlockContextSwap, NULL, _KAPC_STATE::Process, and Virtual.

00233 : 00234 00235 This function flushes multiple entries from the translation buffer 00236 on all processors that are currently running threads which are 00237 children of the current process or flushes a multiple entries from 00238 the translation buffer on all processors in the host configuration. 00239 00240 Arguments: 00241 00242 Number - Supplies the number of TB entries to flush. 00243 00244 Virtual - Supplies a pointer to an array of virtual addresses that 00245 are within the pages whose translation buffer entries are to be 00246 flushed. 00247 00248 Invalid - Supplies a boolean value that specifies the reason for 00249 flushing the translation buffer. 00250 00251 AllProcessors - Supplies a boolean value that determines which 00252 translation buffers are to be flushed. 00253 00254 PtePointer - Supplies an optional pointer to an array of pointers to 00255 page table entries that receive the specified page table entry 00256 value. 00257 00258 PteValue - Supplies the the new page table entry value. 00259 00260 Return Value: 00261 00262 The previous contents of the specified page table entry is returned 00263 as the function value. 00264 00265 --*/ 00266 00267 { 00268 00269 ULONG Index; 00270 KIRQL OldIrql; 00271 PKPROCESS Process; 00272 KAFFINITY TargetProcessors; 00273 PKTHREAD Thread; 00274 00275 ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); 00276 ASSERT(Number <= FLUSH_MULTIPLE_MAXIMUM); 00277 00278 // 00279 // Compute the target set of processors. 00280 // 00281 00282 #if !defined(NT_UP) 00283 00284 if (AllProcessors != FALSE) { 00285 OldIrql = KeRaiseIrqlToSynchLevel(); 00286 TargetProcessors = KeActiveProcessors; 00287 00288 } else { 00289 Thread = KeGetCurrentThread(); 00290 Process = Thread->ApcState.Process; 00291 KiLockContextSwap(&OldIrql); 00292 TargetProcessors = Process->ActiveProcessors; 00293 } 00294 00295 TargetProcessors &= PCR->NotMember; 00296 00297 #endif 00298 00299 // 00300 // If a page table entry address array is specified, then set the 00301 // specified page table entries to the specific value. 00302 // 00303 00304 if (ARGUMENT_PRESENT(PtePointer)) { 00305 for (Index = 0; Index < Number; Index += 1) { 00306 *PtePointer[Index] = PteValue; 00307 } 00308 } 00309 00310 // 00311 // If any target processors are specified, then send a flush multiple 00312 // packet to the target set of processor. 00313 // 00314 00315 #if !defined(NT_UP) 00316 00317 if (TargetProcessors != 0) { 00318 KiIpiSendPacket(TargetProcessors, 00319 KiFlushMultipleTbTarget, 00320 (PVOID)Number, 00321 (PVOID)Virtual, 00322 NULL); 00323 } 00324 00325 #endif 00326 00327 // 00328 // Flush the specified entries from the TB on the current processor. 00329 // 00330 00331 KiFlushMultipleTb(Invalid, &Virtual[0], Number); 00332 00333 // 00334 // Wait until all target processors have finished. 00335 // 00336 00337 #if !defined(NT_UP) 00338 00339 if (TargetProcessors != 0) { 00340 KiIpiStallOnPacketTargets(); 00341 } 00342 00343 if (AllProcessors != FALSE) { 00344 KeLowerIrql(OldIrql); 00345 00346 } else { 00347 KiUnlockContextSwap(OldIrql); 00348 } 00349 00350 #endif 00351 00352 return; 00353 }

VOID KeFlushMultipleTb64 IN ULONG  Number,
IN PULONG *  Virtual,
IN BOOLEAN  Invalid,
IN BOOLEAN  AllProcessors,
IN PHARDWARE_PTE *PtePointer  OPTIONAL,
IN HARDWARE_PTE  PteValue
 

Definition at line 422 of file xxflshtb.c.

References _KPROCESS::ActiveProcessors, _KTHREAD::ApcState, ASSERT, DISPATCH_LEVEL, FALSE, Index, KeActiveProcessors, KeGetCurrentThread, KeLowerIrql(), KiFlushMultipleTbTarget64(), KiIpiSendPacket(), KiIpiStallOnPacketTargets(), KiLockContextSwap, KiUnlockContextSwap, NULL, _KAPC_STATE::Process, and Virtual.

00433 : 00434 00435 This function flushes multiple entries from the translation buffer 00436 on all processors that are currently running threads which are 00437 children of the current process or flushes a multiple entries from 00438 the translation buffer on all processors in the host configuration. 00439 00440 Arguments: 00441 00442 Number - Supplies the number of TB entries to flush. 00443 00444 Virtual - Supplies a pointer to an array of virtual page numbers that 00445 are flushed from the TB. 00446 00447 Invalid - Supplies a boolean value that specifies the reason for 00448 flushing the translation buffer. 00449 00450 AllProcessors - Supplies a boolean value that determines which 00451 translation buffers are to be flushed. 00452 00453 PtePointer - Supplies an optional pointer to an array of pointers to 00454 page table entries that receive the specified page table entry 00455 value. 00456 00457 PteValue - Supplies the the new page table entry value. 00458 00459 Return Value: 00460 00461 The previous contents of the specified page table entry is returned 00462 as the function value. 00463 00464 --*/ 00465 00466 { 00467 00468 ULONG Index; 00469 KIRQL OldIrql; 00470 PKPROCESS Process; 00471 KAFFINITY TargetProcessors; 00472 PKTHREAD Thread; 00473 00474 ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); 00475 ASSERT(Number <= FLUSH_MULTIPLE_MAXIMUM); 00476 00477 // 00478 // Compute the target set of processors. 00479 // 00480 00481 #if !defined(NT_UP) 00482 00483 if (AllProcessors != FALSE) { 00484 OldIrql = KeRaiseIrqlToSynchLevel(); 00485 TargetProcessors = KeActiveProcessors; 00486 00487 } else { 00488 Thread = KeGetCurrentThread(); 00489 Process = Thread->ApcState.Process; 00490 KiLockContextSwap(&OldIrql); 00491 TargetProcessors = Process->ActiveProcessors; 00492 } 00493 00494 TargetProcessors &= PCR->NotMember; 00495 00496 #endif 00497 00498 // 00499 // If a page table entry address array is specified, then set the 00500 // specified page table entries to the specific value. 00501 // 00502 00503 if (ARGUMENT_PRESENT(PtePointer)) { 00504 for (Index = 0; Index < Number; Index += 1) { 00505 *PtePointer[Index] = PteValue; 00506 } 00507 } 00508 00509 // 00510 // If any target processors are specified, then send a flush multiple 00511 // packet to the target set of processor. 00512 // 00513 00514 #if !defined(NT_UP) 00515 00516 if (TargetProcessors != 0) { 00517 KiIpiSendPacket(TargetProcessors, 00518 KiFlushMultipleTbTarget64, 00519 (PVOID)Number, 00520 (PVOID)Virtual, 00521 NULL); 00522 } 00523 00524 #endif 00525 00526 // 00527 // Flush the specified entries from the TB on the current processor. 00528 // 00529 00530 KiFlushMultipleTb64(Invalid, &Virtual[0], Number); 00531 00532 // 00533 // Wait until all target processors have finished. 00534 // 00535 00536 #if !defined(NT_UP) 00537 00538 if (TargetProcessors != 0) { 00539 KiIpiStallOnPacketTargets(); 00540 } 00541 00542 if (AllProcessors != FALSE) { 00543 KeLowerIrql(OldIrql); 00544 00545 } else { 00546 KiUnlockContextSwap(OldIrql); 00547 } 00548 00549 #endif 00550 00551 return; 00552 }

HARDWARE_PTE KeFlushSingleTb IN PVOID  Virtual,
IN BOOLEAN  Invalid,
IN BOOLEAN  AllProcessors,
IN PHARDWARE_PTE  PtePointer,
IN HARDWARE_PTE  PteValue
 

Definition at line 620 of file xxflshtb.c.

References _KPROCESS::ActiveProcessors, _KTHREAD::ApcState, ASSERT, DISPATCH_LEVEL, FALSE, KeActiveProcessors, KeGetCurrentThread, KeLowerIrql(), KiFlushSingleTb(), KiFlushSingleTbTarget(), KiIpiSendPacket(), KiIpiStallOnPacketTargets(), KiLockContextSwap, KiUnlockContextSwap, NULL, _KAPC_STATE::Process, and Virtual.

00630 : 00631 00632 This function flushes a single entry from the translation buffer 00633 on all processors that are currently running threads which are 00634 children of the current process or flushes a single entry from 00635 the translation buffer on all processors in the host configuration. 00636 00637 Arguments: 00638 00639 Virtual - Supplies a virtual address that is within the page whose 00640 translation buffer entry is to be flushed. 00641 00642 Invalid - Supplies a boolean value that specifies the reason for 00643 flushing the translation buffer. 00644 00645 AllProcessors - Supplies a boolean value that determines which 00646 translation buffers are to be flushed. 00647 00648 PtePointer - Supplies a pointer to the page table entry which 00649 receives the specified value. 00650 00651 PteValue - Supplies the the new page table entry value. 00652 00653 Return Value: 00654 00655 The previous contents of the specified page table entry is returned 00656 as the function value. 00657 00658 --*/ 00659 00660 { 00661 00662 KIRQL OldIrql; 00663 HARDWARE_PTE OldPte; 00664 PKPROCESS Process; 00665 KAFFINITY TargetProcessors; 00666 PKTHREAD Thread; 00667 00668 ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); 00669 00670 // 00671 // Compute the target set of processors. 00672 // 00673 00674 #if !defined(NT_UP) 00675 00676 if (AllProcessors != FALSE) { 00677 OldIrql = KeRaiseIrqlToSynchLevel(); 00678 TargetProcessors = KeActiveProcessors; 00679 00680 } else { 00681 Thread = KeGetCurrentThread(); 00682 Process = Thread->ApcState.Process; 00683 KiLockContextSwap(&OldIrql); 00684 TargetProcessors = Process->ActiveProcessors; 00685 } 00686 00687 TargetProcessors &= PCR->NotMember; 00688 00689 #endif 00690 00691 // 00692 // Capture the previous contents of the page table entry and set the 00693 // page table entry to the new value. 00694 // 00695 00696 OldPte = *PtePointer; 00697 *PtePointer = PteValue; 00698 00699 // 00700 // If any target processors are specified, then send a flush single 00701 // packet to the target set of processors. 00702 00703 #if !defined(NT_UP) 00704 00705 if (TargetProcessors != 0) { 00706 KiIpiSendPacket(TargetProcessors, 00707 KiFlushSingleTbTarget, 00708 (PVOID)Virtual, 00709 NULL, 00710 NULL); 00711 } 00712 00713 #endif 00714 00715 // 00716 // Flush the specified entry from the TB on the current processor. 00717 // 00718 00719 KiFlushSingleTb(Invalid, Virtual); 00720 00721 // 00722 // Wait until all target processors have finished. 00723 // 00724 00725 #if !defined(NT_UP) 00726 00727 if (TargetProcessors != 0) { 00728 KiIpiStallOnPacketTargets(); 00729 } 00730 00731 if (AllProcessors != FALSE) { 00732 KeLowerIrql(OldIrql); 00733 00734 } else { 00735 KiUnlockContextSwap(OldIrql); 00736 } 00737 00738 #endif 00739 00740 return OldPte; 00741 }

HARDWARE_PTE KeFlushSingleTb64 IN ULONG  Virtual,
IN BOOLEAN  Invalid,
IN BOOLEAN  AllProcessors,
IN PHARDWARE_PTE  PtePointer,
IN HARDWARE_PTE  PteValue
 

Definition at line 795 of file xxflshtb.c.

References _KPROCESS::ActiveProcessors, _KTHREAD::ApcState, ASSERT, DISPATCH_LEVEL, FALSE, KeActiveProcessors, KeGetCurrentThread, KeLowerIrql(), KiFlushSingleTbTarget64(), KiIpiSendPacket(), KiIpiStallOnPacketTargets(), KiLockContextSwap, KiUnlockContextSwap, NULL, _KAPC_STATE::Process, and Virtual.

00805 : 00806 00807 This function flushes a single entry from the translation buffer 00808 on all processors that are currently running threads which are 00809 children of the current process or flushes a single entry from 00810 the translation buffer on all processors in the host configuration. 00811 00812 Arguments: 00813 00814 Virtual - Supplies a virtual page number that is flushed from the TB. 00815 00816 Invalid - Supplies a boolean value that specifies the reason for 00817 flushing the translation buffer. 00818 00819 AllProcessors - Supplies a boolean value that determines which 00820 translation buffers are to be flushed. 00821 00822 PtePointer - Supplies a pointer to the page table entry which 00823 receives the specified value. 00824 00825 PteValue - Supplies the the new page table entry value. 00826 00827 Return Value: 00828 00829 The previous contents of the specified page table entry is returned 00830 as the function value. 00831 00832 --*/ 00833 00834 { 00835 00836 KIRQL OldIrql; 00837 HARDWARE_PTE OldPte; 00838 PKPROCESS Process; 00839 KAFFINITY TargetProcessors; 00840 PKTHREAD Thread; 00841 00842 ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); 00843 00844 // 00845 // Compute the target set of processors. 00846 // 00847 00848 #if !defined(NT_UP) 00849 00850 if (AllProcessors != FALSE) { 00851 OldIrql = KeRaiseIrqlToSynchLevel(); 00852 TargetProcessors = KeActiveProcessors; 00853 00854 } else { 00855 Thread = KeGetCurrentThread(); 00856 Process = Thread->ApcState.Process; 00857 KiLockContextSwap(&OldIrql); 00858 TargetProcessors = Process->ActiveProcessors; 00859 } 00860 00861 TargetProcessors &= PCR->NotMember; 00862 00863 #endif 00864 00865 // 00866 // Capture the previous contents of the page table entry and set the 00867 // page table entry to the new value. 00868 // 00869 00870 OldPte = *PtePointer; 00871 *PtePointer = PteValue; 00872 00873 // 00874 // If any target processors are specified, then send a flush single 00875 // packet to the target set of processors. 00876 00877 #if !defined(NT_UP) 00878 00879 if (TargetProcessors != 0) { 00880 KiIpiSendPacket(TargetProcessors, 00881 KiFlushSingleTbTarget64, 00882 (PVOID)Virtual, 00883 NULL, 00884 NULL); 00885 } 00886 00887 #endif 00888 00889 // 00890 // Flush the specified entry from the TB on the current processor. 00891 // 00892 00893 KiFlushSingleTb64(Invalid, Virtual); 00894 00895 // 00896 // Wait until all target processors have finished. 00897 // 00898 00899 #if !defined(NT_UP) 00900 00901 if (TargetProcessors != 0) { 00902 KiIpiStallOnPacketTargets(); 00903 } 00904 00905 if (AllProcessors != FALSE) { 00906 KeLowerIrql(OldIrql); 00907 00908 } else { 00909 KiUnlockContextSwap(OldIrql); 00910 } 00911 00912 #endif 00913 00914 return OldPte; 00915 }

VOID KiFlushEntireTbTarget IN PULONG  SignalDone,
IN PVOID  Parameter1,
IN PVOID  Parameter2,
IN PVOID  Parameter3
 

VOID KiFlushMultipleTbTarget IN PULONG  SignalDone,
IN PVOID  Number,
IN PVOID  Virtual,
IN PVOID  Pid
 

Definition at line 359 of file xxflshtb.c.

References ASSERT, Index, KiFlushMultipleTb(), KiIpiSignalPacketDone(), TRUE, and Virtual.

00368 : 00369 00370 This is the target function for flushing multiple TB entries. 00371 00372 Arguments: 00373 00374 SignalDone Supplies a pointer to a variable that is cleared when the 00375 requested operation has been performed. 00376 00377 Number - Supplies the number of TB entries to flush. 00378 00379 Virtual - Supplies a pointer to an array of virtual addresses that 00380 are within the pages whose translation buffer entries are to be 00381 flushed. 00382 00383 Pid - Supplies the PID of the TB entries to flush. 00384 00385 Return Value: 00386 00387 None. 00388 00389 --*/ 00390 00391 { 00392 00393 ULONG Index; 00394 PVOID Array[FLUSH_MULTIPLE_MAXIMUM]; 00395 00396 ASSERT((ULONG)Number <= FLUSH_MULTIPLE_MAXIMUM); 00397 00398 // 00399 // Capture the virtual addresses that are to be flushed from the TB 00400 // on the current processor and clear the packet address. 00401 // 00402 00403 for (Index = 0; Index < (ULONG)Number; Index += 1) { 00404 Array[Index] = ((PVOID *)(Virtual))[Index]; 00405 } 00406 00407 KiIpiSignalPacketDone(SignalDone); 00408 00409 // 00410 // Flush the specified virtual addresses from the TB on the current 00411 // processor. 00412 // 00413 00414 KiFlushMultipleTb(TRUE, &Array[0], (ULONG)Number); 00415 return; 00416 }

VOID KiFlushMultipleTbTarget64 IN PULONG  SignalDone,
IN PVOID  Number,
IN PVOID  Virtual,
IN PVOID  Pid
 

Definition at line 558 of file xxflshtb.c.

References ASSERT, Index, KiIpiSignalPacketDone(), TRUE, and Virtual.

00567 : 00568 00569 This is the target function for flushing multiple TB entries. 00570 00571 Arguments: 00572 00573 SignalDone Supplies a pointer to a variable that is cleared when the 00574 requested operation has been performed. 00575 00576 Number - Supplies the number of TB entries to flush. 00577 00578 Virtual - Supplies a pointer to an array of virtual page numbers that 00579 are flushed from the TB. 00580 00581 Pid - Supplies the PID of the TB entries to flush. 00582 00583 Return Value: 00584 00585 None. 00586 00587 --*/ 00588 00589 { 00590 00591 ULONG Index; 00592 PULONG Array[FLUSH_MULTIPLE_MAXIMUM]; 00593 00594 ASSERT((ULONG)Number <= FLUSH_MULTIPLE_MAXIMUM); 00595 00596 // 00597 // Capture the virtual addresses that are to be flushed from the TB 00598 // on the current processor and clear the packet address. 00599 // 00600 00601 for (Index = 0; Index < (ULONG)Number; Index += 1) { 00602 Array[Index] = ((PULONG *)(Virtual))[Index]; 00603 } 00604 00605 KiIpiSignalPacketDone(SignalDone); 00606 00607 // 00608 // Flush the specified virtual addresses from the TB on the current 00609 // processor. 00610 // 00611 00612 KiFlushMultipleTb64(TRUE, &Array[0], (ULONG)Number); 00613 return; 00614 }

VOID KiFlushSingleTbTarget IN PULONG  SignalDone,
IN PVOID  Virtual,
IN PVOID  Pid,
IN PVOID  Parameter3
 

Definition at line 747 of file xxflshtb.c.

References KiFlushSingleTb(), KiIpiSignalPacketDone(), TRUE, and Virtual.

00756 : 00757 00758 This is the target function for flushing a single TB entry. 00759 00760 Arguments: 00761 00762 SignalDone Supplies a pointer to a variable that is cleared when the 00763 requested operation has been performed. 00764 00765 Virtual - Supplies a virtual address that is within the page whose 00766 translation buffer entry is to be flushed. 00767 00768 RequestPacket - Supplies a pointer to a flush single TB packet address. 00769 00770 Pid - Not used. 00771 00772 Parameter3 - Not used. 00773 00774 Return Value: 00775 00776 None. 00777 00778 --*/ 00779 00780 { 00781 00782 // 00783 // Flush a single entry form the TB on the current processor. 00784 // 00785 00786 KiIpiSignalPacketDone(SignalDone); 00787 KiFlushSingleTb(TRUE, Virtual); 00788 return; 00789 }

VOID KiFlushSingleTbTarget64 IN PULONG  SignalDone,
IN PVOID  Virtual,
IN PVOID  Pid,
IN PVOID  Parameter3
 

Definition at line 921 of file xxflshtb.c.

References KiIpiSignalPacketDone(), TRUE, and Virtual.

00930 : 00931 00932 This is the target function for flushing a single TB entry. 00933 00934 Arguments: 00935 00936 SignalDone Supplies a pointer to a variable that is cleared when the 00937 requested operation has been performed. 00938 00939 Virtual - Supplies a virtual page number that is flushed from the TB. 00940 00941 RequestPacket - Supplies a pointer to a flush single TB packet address. 00942 00943 Pid - Not used. 00944 00945 Parameter3 - Not used. 00946 00947 Return Value: 00948 00949 None. 00950 00951 --*/ 00952 00953 { 00954 00955 // 00956 // Flush a single entry form the TB on the current processor. 00957 // 00958 00959 KiIpiSignalPacketDone(SignalDone); 00960 KiFlushSingleTb64(TRUE, (ULONG)Virtual); 00961 return; 00962 }


Generated on Sat May 15 19:46:11 2004 for test by doxygen 1.3.7