Changeset 9470 in vbox
- Timestamp:
- Jun 6, 2008 12:19:12 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 31727
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/Makefile.kmk
r9218 r9470 181 181 ifeq ($(KBUILD_TARGET),linux) 182 182 vboxdrv_TEMPLATE = VBOXR0DRV 183 vboxdrv_DEFS = KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) MODULE IN_RT_R0 IN_SUP_R0 CONFIG_VBOXDRV_AS_MISC USE_NEW_OS_INTERFACE_FOR_MM 183 vboxdrv_DEFS = KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) MODULE IN_RT_R0 IN_SUP_R0 CONFIG_VBOXDRV_AS_MISC USE_NEW_OS_INTERFACE_FOR_MM USE_NEW_OS_INTERFACE_FOR_GIP 184 184 ifdef VBOX_WITH_IDT_PATCHING 185 185 vboxdrv_DEFS += VBOX_WITH_IDT_PATCHING -
trunk/src/VBox/HostDrivers/Support/SUPDRV.h
r8837 r9470 697 697 /** If non-zero we've successfully called RTTimerRequestSystemGranularity(). */ 698 698 uint32_t u32SystemTimerGranularityGrant; 699 #endif 700 #ifdef RT_OS_WINDOWS 699 /** The CPU id of the GIP master. 700 * This CPU is responsible for the updating the common GIP data. */ 701 RTCPUID volatile idGipMaster; 702 #else 703 # ifdef RT_OS_WINDOWS 701 704 /** The GIP timer object. */ 702 705 KTIMER GipTimer; … … 713 716 /** Current CPU affinity mask. */ 714 717 KAFFINITY uAffinityMask; 715 # endif716 # ifdef RT_OS_LINUX718 # endif 719 # ifdef RT_OS_LINUX 717 720 /** The last jiffies. */ 718 721 unsigned long ulLastJiffies; … … 721 724 /** Set when GIP is suspended to prevent the timers from re-registering themselves). */ 722 725 uint8_t volatile fGIPSuspended; 723 # ifdef CONFIG_SMP726 # ifdef CONFIG_SMP 724 727 /** Array of per CPU data for SUPGIPMODE_ASYNC_TSC. */ 725 728 struct LINUXCPU … … 734 737 VBOXKTIMER Timer; 735 738 } aCPUs[256]; 736 # endif 737 #endif 739 # endif 740 # endif /* LINUX */ 741 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 738 742 } SUPDRVDEVEXT; 739 743 … … 762 766 void VBOXCALL supdrvOSGipResume(PSUPDRVDEVEXT pDevExt); 763 767 void VBOXCALL supdrvOSGipSuspend(PSUPDRVDEVEXT pDevExt); 768 #endif 769 #ifdef RT_OS_WINDOWS /** @todo remove when RTMpGetCount() has been fixed. */ 764 770 unsigned VBOXCALL supdrvOSGetCPUCount(PSUPDRVDEVEXT pDevExt); 771 #endif 765 772 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt); 766 #endif767 773 768 774 -
trunk/src/VBox/HostDrivers/Support/SUPDRVShared.c
r9444 r9470 253 253 static int supdrvGipCreate(PSUPDRVDEVEXT pDevExt); 254 254 static void supdrvGipDestroy(PSUPDRVDEVEXT pDevExt); 255 static DECLCALLBACK(void) supdrvGipTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick); 255 static DECLCALLBACK(void) supdrvGipSyncTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick); 256 static DECLCALLBACK(void) supdrvGipAsyncTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick); 257 static DECLCALLBACK(void) supdrvGipMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); 256 258 #endif 257 259 … … 3748 3750 3749 3751 /* 3750 * Find a reasonable update interval, something close to 10ms would be nice, 3751 * and create a recurring timer. 3752 * Find a reasonable update interval and initialize the structure. 3752 3753 */ 3753 3754 u32Interval = u32SystemResolution = RTTimerGetSystemGranularity(); … … 3755 3756 u32Interval += u32SystemResolution; 3756 3757 3757 rc = RTTimerCreateEx(&pDevExt->pGipTimer, u32Interval, 0, supdrvGipTimer, pDevExt); 3758 if (RT_FAILURE(rc)) 3759 { 3760 OSDBGPRINT(("supdrvGipCreate: failed create GIP timer at %RU32 ns interval. rc=%d\n", u32Interval, rc)); 3758 supdrvGipInit(pDevExt, pGip, HCPhysGip, RTTimeSystemNanoTS(), 1000000000 / u32Interval /*=Hz*/); 3759 3760 /* 3761 * Create the timer. 3762 * If CPU_ALL isn't supported we'll have to fall back to synchronous mode. 3763 */ 3764 if (pGip->u32Mode == SUPGIPMODE_ASYNC_TSC) 3765 { 3766 rc = RTTimerCreateEx(&pDevExt->pGipTimer, u32Interval, RTTIMER_FLAGS_CPU_ALL, supdrvGipAsyncTimer, pDevExt); 3767 if (rc == VERR_NOT_SUPPORTED) 3768 { 3769 OSDBGPRINT(("supdrvGipCreate: omni timer not supported, falling back to synchronous mode\n")); 3770 pGip->u32Mode = SUPGIPMODE_SYNC_TSC; 3771 } 3772 } 3773 if (pGip->u32Mode != SUPGIPMODE_ASYNC_TSC) 3774 rc = RTTimerCreateEx(&pDevExt->pGipTimer, u32Interval, 0, supdrvGipSyncTimer, pDevExt); 3775 if (RT_SUCCESS(rc)) 3776 { 3777 if (pGip->u32Mode == SUPGIPMODE_ASYNC_TSC) 3778 rc = RTMpNotificationRegister(supdrvGipMpEvent, pDevExt); 3779 if (RT_SUCCESS(rc)) 3780 { 3781 /* 3782 * We're good. 3783 */ 3784 dprintf(("supdrvGipCreate: %ld ns interval.\n", (long)u32Interval)); 3785 return VINF_SUCCESS; 3786 } 3787 3788 OSDBGPRINT(("supdrvGipCreate: failed register MP event notfication. rc=%d\n", rc)); 3789 } 3790 else 3791 { 3792 OSDBGPRINT(("supdrvGipCreate: failed create GIP timer at %ld ns interval. rc=%d\n", (long)u32Interval, rc)); 3761 3793 Assert(!pDevExt->pGipTimer); 3762 supdrvGipDestroy(pDevExt); 3763 return rc; 3764 } 3765 3766 /* 3767 * We're good. 3768 */ 3769 supdrvGipInit(pDevExt, pGip, HCPhysGip, RTTimeSystemNanoTS(), 1000000000 / u32Interval /*=Hz*/); 3770 return VINF_SUCCESS; 3794 } 3795 supdrvGipDestroy(pDevExt); 3796 return rc; 3771 3797 } 3772 3798 … … 3822 3848 3823 3849 /** 3824 * Timer callback function .3850 * Timer callback function sync GIP mode. 3825 3851 * @param pTimer The timer. 3826 3852 * @param pvUser The device extension. 3827 * @param iTick The current tick. 3828 */ 3829 static DECLCALLBACK(void) supdrvGipTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick) 3853 */ 3854 static DECLCALLBACK(void) supdrvGipSyncTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick) 3830 3855 { 3831 3856 PSUPDRVDEVEXT pDevExt = (PSUPDRVDEVEXT)pvUser; 3832 3857 supdrvGipUpdate(pDevExt->pGip, RTTimeSystemNanoTS()); 3833 NOREF(iTick); 3834 } 3858 } 3859 3860 3861 /** 3862 * Timer callback function for async GIP mode. 3863 * @param pTimer The timer. 3864 * @param pvUser The device extension. 3865 */ 3866 static DECLCALLBACK(void) supdrvGipAsyncTimer(PRTTIMER pTimer, void *pvUser, uint64_t iTick) 3867 { 3868 PSUPDRVDEVEXT pDevExt = (PSUPDRVDEVEXT)pvUser; 3869 RTCPUID idCpu = RTMpCpuId(); 3870 uint64_t NanoTS = RTTimeSystemNanoTS(); 3871 3872 if (pDevExt->idGipMaster == idCpu) 3873 supdrvGipUpdate(pDevExt->pGip, NanoTS); 3874 else 3875 supdrvGipUpdatePerCpu(pDevExt->pGip, NanoTS, ASMGetApicId()); 3876 } 3877 3878 3879 /** 3880 * Multiprocessor event notification callback. 3881 * 3882 * This is used to make sue that the GIP master gets passed on to 3883 * another CPU. 3884 * 3885 * @param enmEvent The event. 3886 * @param idCpu The cpu it applies to. 3887 * @param pvUser Pointer to the device extension. 3888 */ 3889 static DECLCALLBACK(void) supdrvGipMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser) 3890 { 3891 PSUPDRVDEVEXT pDevExt = (PSUPDRVDEVEXT)pvUser; 3892 if (enmEvent == RTMPEVENT_OFFLINE) 3893 { 3894 RTCPUID idGipMaster; 3895 ASMAtomicReadSize(&pDevExt->idGipMaster, &idGipMaster); 3896 if (idGipMaster == idCpu) 3897 { 3898 /* 3899 * Find a new GIP master. 3900 */ 3901 bool fIgnored; 3902 unsigned i; 3903 RTCPUID idNewGipMaster = NIL_RTCPUID; 3904 RTCPUSET OnlineCpus; 3905 RTMpGetOnlineSet(&OnlineCpus); 3906 3907 for (i = 0; i < RTCPUSET_MAX_CPUS; i++) 3908 { 3909 RTCPUID idCurCpu = RTMpCpuIdFromSetIndex(i); 3910 if ( RTCpuSetIsMember(&OnlineCpus, idCurCpu) 3911 && idCurCpu != idGipMaster) 3912 { 3913 idNewGipMaster = idCurCpu; 3914 break; 3915 } 3916 } 3917 3918 dprintf(("supdrvGipMpEvent: Gip master %#lx -> %#lx\n", (long)idGipMaster, (long)idNewGipMaster)); 3919 ASMAtomicCmpXchgSize(&pDevExt->idGipMaster, idNewGipMaster, idGipMaster, fIgnored); 3920 NOREF(fIgnored); 3921 } 3922 } 3923 } 3924 3835 3925 #endif /* USE_NEW_OS_INTERFACE_FOR_GIP */ 3836 3926 … … 3907 3997 static SUPGIPMODE supdrvGipDeterminTscMode(PSUPDRVDEVEXT pDevExt) 3908 3998 { 3909 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP3910 3999 /* 3911 4000 * The problem here is that AMD processors with power management features … … 3919 4008 * can be relied upon to have somewhat uniform TSC between the cpus. 3920 4009 */ 4010 # ifdef RT_OS_WINDOWS /** @todo fix RTMpGetCount() wrt to IRQL. */ 3921 4011 if (supdrvOSGetCPUCount(pDevExt) > 1) 4012 # else 4013 if (RTMpGetCount() > 1) 4014 # endif 3922 4015 { 3923 4016 uint32_t uEAX, uEBX, uECX, uEDX; 3924 4017 3925 /* Permit user users override. */4018 /* Permit the user and/or the OS specfic bits to force async mode. */ 3926 4019 if (supdrvOSGetForcedAsyncTscMode(pDevExt)) 3927 4020 return SUPGIPMODE_ASYNC_TSC; 4021 4022 /** @todo perform supdrvDetermineAsyncTsc here! */ 3928 4023 3929 4024 /* Check for "AuthenticAMD" */ … … 3934 4029 && uEDX == X86_CPUID_VENDOR_AMD_EDX) 3935 4030 { 4031 /** @todo This is probably wrong. TscInvariant doesn't seem to mean that RdTSC returns the 4032 * value everywhere, but rather that the rate is supposed to be the same. */ 3936 4033 /* Check for APM support and that TscInvariant is cleared. */ 3937 4034 ASMCpuId(0x80000000, &uEAX, &uEBX, &uECX, &uEDX); … … 3945 4042 } 3946 4043 } 3947 #endif3948 4044 return SUPGIPMODE_SYNC_TSC; 3949 4045 } -
trunk/src/VBox/HostDrivers/Support/freebsd/SUPDrv-freebsd.c
r7272 r9470 531 531 } 532 532 533 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt) 534 { 535 return false; 536 } 537 533 538 534 539 SUPR0DECL(int) SUPR0Printf(const char *pszFormat, ...) -
trunk/src/VBox/HostDrivers/Support/linux/Makefile
r8155 r9470 75 75 r0drv/alloc-r0drv.o \ 76 76 r0drv/initterm-r0drv.o \ 77 r0drv/ linux/mp-r0drv-linux.o \77 r0drv/mpnotification-r0drv.o \ 78 78 r0drv/linux/alloc-r0drv-linux.o \ 79 79 r0drv/linux/initterm-r0drv-linux.o \ 80 r0drv/linux/mp-r0drv-linux.o \ 81 r0drv/linux/mpnotification-r0drv-linux.o \ 80 82 r0drv/linux/process-r0drv-linux.o \ 81 83 r0drv/linux/semevent-r0drv-linux.o \ … … 83 85 r0drv/linux/semfastmutex-r0drv-linux.o \ 84 86 r0drv/linux/spinlock-r0drv-linux.o \ 85 r0drv/linux/thread-r0drv-linux.o 87 r0drv/linux/thread-r0drv-linux.o \ 88 r0drv/linux/time-r0drv-linux.o \ 89 r0drv/linux/timer-r0drv-linux.o \ 90 common/err/RTErrConvertFromErrno.o 86 91 ifeq ($(BUILD_TARGET_ARCH),amd64) 87 92 OBJS += alloc/heapsimple.o … … 223 228 # If this makes testboxes crash/burn/leak disable it and add a comment to defect #2116. 224 229 # 225 KFLAGS += -DUSE_NEW_OS_INTERFACE_FOR_MM 230 KFLAGS += -DUSE_NEW_OS_INTERFACE_FOR_MM -DUSE_NEW_OS_INTERFACE_FOR_GIP 226 231 OBJS += r0drv/memobj-r0drv.o \ 227 232 r0drv/linux/memobj-r0drv-linux.o -
trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
r9236 r9470 1 /* $Rev :$ */1 /* $Rev$ */ 2 2 /** @file 3 3 * The VirtualBox Support Driver - Linux hosts. … … 199 199 #define str(s) #s 200 200 201 201 202 /******************************************************************************* 202 * Defined Constants And Macros*203 * Structures and Typedefs * 203 204 *******************************************************************************/ 205 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 206 # ifdef VBOX_HRTIMER 207 typedef enum hrtimer_restart (*PFNVBOXKTIMER)(struct hrtimer *); 208 # else 209 typedef void (*PFNVBOXKTIMER)(unsigned long); 210 # endif 211 #endif 212 213 214 /******************************************************************************* 215 * Global Variables * 216 *******************************************************************************/ 204 217 /** 205 218 * Device extention & session data association structure. … … 207 220 static SUPDRVDEVEXT g_DevExt; 208 221 222 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 209 223 /** Timer structure for the GIP update. */ 210 224 static VBOXKTIMER g_GipTimer; 211 225 /** Pointer to the page structure for the GIP. */ 212 226 struct page *g_pGipPage; 227 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 213 228 214 229 /** Registered devfs device handle. */ … … 254 269 * Internal Functions * 255 270 *******************************************************************************/ 256 #ifdef VBOX_HRTIMER257 typedef enum hrtimer_restart (*PFNVBOXKTIMER)(struct hrtimer *);258 #else259 typedef void (*PFNVBOXKTIMER)(unsigned long);260 #endif261 262 271 static int VBoxDrvLinuxInit(void); 263 272 static void VBoxDrvLinuxUnload(void); … … 270 279 #endif 271 280 static int VBoxDrvLinuxIOCtlSlow(struct file *pFilp, unsigned int uCmd, unsigned long ulArg); 281 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 272 282 static int VBoxDrvLinuxInitGip(PSUPDRVDEVEXT pDevExt); 273 283 static int VBoxDrvLinuxTermGip(PSUPDRVDEVEXT pDevExt); 274 # ifdef VBOX_HRTIMER284 # ifdef VBOX_HRTIMER 275 285 static enum hrtimer_restart VBoxDrvLinuxGipTimer(struct hrtimer *pTimer); 276 # else286 # else 277 287 static void VBoxDrvLinuxGipTimer(unsigned long ulUser); 278 # endif279 # ifdef CONFIG_SMP280 # ifdef VBOX_HRTIMER288 # endif 289 # ifdef CONFIG_SMP 290 # ifdef VBOX_HRTIMER 281 291 static enum hrtimer_restart VBoxDrvLinuxGipTimerPerCpu(struct hrtimer *pTimer); 282 # else292 # else 283 293 static void VBoxDrvLinuxGipTimerPerCpu(unsigned long ulUser); 284 # endif294 # endif 285 295 static void VBoxDrvLinuxGipResumePerCpu(void *pvUser); 286 #endif 296 # endif /* CONFIG_SMP */ 297 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 287 298 static int VBoxDrvLinuxErr2LinuxErr(int); 288 299 … … 315 326 #endif 316 327 328 329 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 330 317 331 static inline void vbox_ktimer_init(PVBOXKTIMER pTimer, PFNVBOXKTIMER pfnFunction, unsigned long ulData) 318 332 { … … 346 360 #endif 347 361 } 362 363 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 364 348 365 349 366 #ifdef CONFIG_X86_LOCAL_APIC … … 641 658 if (RT_SUCCESS(rc)) 642 659 { 660 rc = RTR0MpNotificationInit(NULL); 661 if (RT_SUCCESS(rc)) 662 { 643 663 #ifdef RT_ARCH_AMD64 644 rc = RTR0MemExecDonate(&g_abExecMemory[0], sizeof(g_abExecMemory)); 645 #endif 646 /* 647 * Initialize the device extension. 648 */ 649 if (RT_SUCCESS(rc)) 650 rc = supdrvInitDevExt(&g_DevExt); 651 if (!rc) 652 { 664 rc = RTR0MemExecDonate(&g_abExecMemory[0], sizeof(g_abExecMemory)); 665 #endif 653 666 /* 654 * Create the GIP page.667 * Initialize the device extension. 655 668 */ 656 rc = VBoxDrvLinuxInitGip(&g_DevExt); 669 if (RT_SUCCESS(rc)) 670 rc = supdrvInitDevExt(&g_DevExt); 657 671 if (!rc) 658 672 { 659 printk(KERN_INFO DEVICE_NAME ": TSC mode is %s, kernel timer mode is " 673 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 674 /* 675 * Create the GIP page. 676 */ 677 rc = VBoxDrvLinuxInitGip(&g_DevExt); 678 if (!rc) 679 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 680 { 681 printk(KERN_INFO DEVICE_NAME ": TSC mode is %s, kernel timer mode is " 660 682 #ifdef VBOX_HRTIMER 661 "'high-res'" 662 #else 663 "'normal'" 664 #endif 665 ".\n", 666 g_DevExt.pGip->u32Mode == SUPGIPMODE_SYNC_TSC ? "'synchronous'" : "'asynchronous'"); 667 LogFlow(("VBoxDrv::ModuleInit returning %#x\n", rc)); 668 printk(KERN_DEBUG DEVICE_NAME ": Successfully loaded version " 669 VBOX_VERSION_STRING " (interface " xstr(SUPDRVIOC_VERSION) ").\n"); 670 return rc; 683 "'high-res'" 684 #else 685 "'normal'" 686 #endif 687 ".\n", 688 g_DevExt.pGip->u32Mode == SUPGIPMODE_SYNC_TSC ? "'synchronous'" : "'asynchronous'"); 689 LogFlow(("VBoxDrv::ModuleInit returning %#x\n", rc)); 690 printk(KERN_DEBUG DEVICE_NAME ": Successfully loaded version " 691 VBOX_VERSION_STRING " (interface " xstr(SUPDRVIOC_VERSION) ").\n"); 692 return rc; 693 } 694 695 supdrvDeleteDevExt(&g_DevExt); 671 696 } 672 673 supdrvDeleteDevExt(&g_DevExt); 697 else 698 rc = -EINVAL; 699 RTR0MpNotificationTerm(NULL); 674 700 } 675 else676 rc = -EINVAL;677 701 RTR0Term(); 678 702 } … … 730 754 * Destroy GIP, delete the device extension and terminate IPRT. 731 755 */ 756 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 732 757 VBoxDrvLinuxTermGip(&g_DevExt); 758 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 733 759 supdrvDeleteDevExt(&g_DevExt); 734 760 RTR0Term(); … … 947 973 } 948 974 975 976 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP 949 977 950 978 /** … … 1365 1393 } 1366 1394 1367 1368 /** 1369 * Get the current CPU count. 1370 * @returns Number of cpus. 1371 */ 1372 unsigned VBOXCALL supdrvOSGetCPUCount(PSUPDRVDEVEXT pDevExt) 1373 { 1374 #ifdef CONFIG_SMP 1375 # if defined(num_present_cpus) && !defined(VBOX_REDHAT_KABI) 1376 return num_present_cpus(); 1377 # elif defined(num_possible_cpus) 1378 return num_possible_cpus(); 1379 # else 1380 return smp_num_cpus; 1381 # endif 1382 #else 1383 return 1; 1384 #endif 1385 } 1386 1387 /** 1388 * Force async tsc mode. 1389 * @todo add a module argument for this. 1390 */ 1395 #endif /* !USE_NEW_OS_INTERFACE_FOR_GIP */ 1396 1397 1391 1398 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt) 1392 1399 { … … 1475 1482 1476 1483 1477 /* GCC C++ hack. */1484 /* GCC C++ hack. (shouldn't be necessary...) */ 1478 1485 unsigned __gxx_personality_v0 = 0xcccccccc; 1479 1486 -
trunk/src/VBox/HostDrivers/Support/linux/files_vboxdrv
r8155 r9470 64 64 ${PATH_ROOT}/src/VBox/HostDrivers/Support/SUPDRVShared.c=>SUPDRVShared.c \ 65 65 ${PATH_ROOT}/src/VBox/Runtime/common/alloc/heapsimple.cpp=>alloc/heapsimple.c \ 66 ${PATH_ROOT}/src/VBox/Runtime/common/err/RTErrConvertFromErrno.cpp=>common/err/RTErrConvertFromErrno.c \ 66 67 ${PATH_ROOT}/src/VBox/Runtime/common/log/log.cpp=>common/log/log.c \ 67 68 ${PATH_ROOT}/src/VBox/Runtime/common/log/logcom.cpp=>common/log/logcom.c \ … … 89 90 ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.h=>r0drv/alloc-r0drv.h \ 90 91 ${PATH_ROOT}/src/VBox/Runtime/r0drv/initterm-r0drv.cpp=>r0drv/initterm-r0drv.c \ 92 ${PATH_ROOT}/src/VBox/Runtime/r0drv/mp-r0drv.h=>r0drv/mp-r0drv.h \ 93 ${PATH_ROOT}/src/VBox/Runtime/r0drv/mpnotification-r0drv.c=>r0drv/mpnotification-r0drv.c \ 91 94 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c=>r0drv/linux/RTLogWriteDebugger-r0drv-linux.c \ 92 95 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c=>r0drv/linux/alloc-r0drv-linux.c \ … … 94 97 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c=>r0drv/linux/memobj-r0drv-linux.c \ 95 98 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/mp-r0drv-linux.c=>r0drv/linux/mp-r0drv-linux.c \ 96 ${PATH_ROOT}/src/VBox/Runtime/r0drv/ mp-r0drv.h=>r0drv/mp-r0drv.h\99 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/mpnotification-r0drv-linux.c=>r0drv/linux/mpnotification-r0drv-linux.c \ 97 100 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/process-r0drv-linux.c=>r0drv/linux/process-r0drv-linux.c \ 98 101 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/semevent-r0drv-linux.c=>r0drv/linux/semevent-r0drv-linux.c \ … … 103 106 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ 104 107 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/thread-r0drv-linux.c=>r0drv/linux/thread-r0drv-linux.c \ 108 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c=>r0drv/linux/time-r0drv-linux.c \ 109 ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c=>r0drv/linux/timer-r0drv-linux.c \ 105 110 ${PATH_ROOT}/src/VBox/Runtime/r0drv/memobj-r0drv.cpp=>r0drv/memobj-r0drv.c \ 106 111 ${PATH_ROOT}/src/VBox/Runtime/VBox/log-vbox.cpp=>VBox/log-vbox.c \
Note:
See TracChangeset
for help on using the changeset viewer.