Changeset 26159 in vbox for trunk/src/VBox
- Timestamp:
- Feb 2, 2010 6:12:40 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 57173
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PDMDevHlp.cpp
r26158 r26159 1781 1781 AssertBreakpoint(); 1782 1782 return false; 1783 } 1784 1785 1786 /** @interface_method_impl{PDMDEVHLP,pfnLdrGetRCInterfaceSymbols} */ 1787 static DECLCALLBACK(int) pdmR3DevHlp_LdrGetRCInterfaceSymbols(PPDMDEVINS pDevIns, void *pvInterface, size_t cbInterface, 1788 const char *pszSymPrefix, const char *pszSymList) 1789 { 1790 PDMDEV_ASSERT_DEVINS(pDevIns); 1791 VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3); 1792 LogFlow(("pdmR3DevHlp_PDMLdrGetRCInterfaceSymbols: caller='%s'/%d: pvInterface=%p cbInterface=%zu pszSymPrefix=%p:{%s} pszSymList=%p:{%s}\n", 1793 pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pvInterface, cbInterface, pszSymPrefix, pszSymPrefix, pszSymList, pszSymList)); 1794 1795 int rc; 1796 if ( strncmp(pszSymPrefix, "dev", 3) == 0 1797 && RTStrIStr(pszSymPrefix + 3, pDevIns->pDevReg->szDeviceName) != NULL) 1798 { 1799 if (pDevIns->pDevReg->fFlags & PDM_DEVREG_FLAGS_RC) 1800 rc = PDMR3LdrGetInterfaceSymbols(pDevIns->Internal.s.pVMR3, pvInterface, cbInterface, 1801 pDevIns->pDevReg->szDeviceName, pszSymPrefix, pszSymList, 1802 false /*fRing0OrRC*/); 1803 else 1804 { 1805 AssertMsgFailed(("Not a raw-mode enabled driver\n")); 1806 rc = VERR_PERMISSION_DENIED; 1807 } 1808 } 1809 else 1810 { 1811 AssertMsgFailed(("Invalid prefix '%s' for '%s'; must start with 'dev' and contain the driver name!\n", 1812 pszSymPrefix, pDevIns->pDevReg->szDeviceName)); 1813 rc = VERR_INVALID_NAME; 1814 } 1815 1816 LogFlow(("pdmR3DevHlp_PDMLdrGetRCInterfaceSymbols: caller='%s'/%d: returns %Rrc\n", pDevIns->pDevReg->szDeviceName, 1817 pDevIns->iInstance, rc)); 1818 return rc; 1819 } 1820 1821 1822 /** @interface_method_impl{PDMDEVHLP,pfnLdrGetR0InterfaceSymbols} */ 1823 static DECLCALLBACK(int) pdmR3DevHlp_LdrGetR0InterfaceSymbols(PPDMDEVINS pDevIns, void *pvInterface, size_t cbInterface, 1824 const char *pszSymPrefix, const char *pszSymList) 1825 { 1826 PDMDEV_ASSERT_DEVINS(pDevIns); 1827 VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3); 1828 LogFlow(("pdmR3DevHlp_PDMLdrGetR0InterfaceSymbols: caller='%s'/%d: pvInterface=%p cbInterface=%zu pszSymPrefix=%p:{%s} pszSymList=%p:{%s}\n", 1829 pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pvInterface, cbInterface, pszSymPrefix, pszSymPrefix, pszSymList, pszSymList)); 1830 1831 int rc; 1832 if ( strncmp(pszSymPrefix, "dev", 3) == 0 1833 && RTStrIStr(pszSymPrefix + 3, pDevIns->pDevReg->szDeviceName) != NULL) 1834 { 1835 if (pDevIns->pDevReg->fFlags & PDM_DEVREG_FLAGS_R0) 1836 rc = PDMR3LdrGetInterfaceSymbols(pDevIns->Internal.s.pVMR3, pvInterface, cbInterface, 1837 pDevIns->pDevReg->szDeviceName, pszSymPrefix, pszSymList, 1838 true /*fRing0OrRC*/); 1839 else 1840 { 1841 AssertMsgFailed(("Not a ring-0 enabled driver\n")); 1842 rc = VERR_PERMISSION_DENIED; 1843 } 1844 } 1845 else 1846 { 1847 AssertMsgFailed(("Invalid prefix '%s' for '%s'; must start with 'dev' and contain the driver name!\n", 1848 pszSymPrefix, pDevIns->pDevReg->szDeviceName)); 1849 rc = VERR_INVALID_NAME; 1850 } 1851 1852 LogFlow(("pdmR3DevHlp_PDMLdrGetR0InterfaceSymbols: caller='%s'/%d: returns %Rrc\n", pDevIns->pDevReg->szDeviceName, 1853 pDevIns->iInstance, rc)); 1854 return rc; 1783 1855 } 1784 1856 … … 2858 2930 pdmR3DevHlp_AssertEMT, 2859 2931 pdmR3DevHlp_AssertOther, 2932 pdmR3DevHlp_LdrGetRCInterfaceSymbols, 2933 pdmR3DevHlp_LdrGetR0InterfaceSymbols, 2860 2934 0, 2861 2935 0, … … 3051 3125 pdmR3DevHlp_AssertEMT, 3052 3126 pdmR3DevHlp_AssertOther, 3127 pdmR3DevHlp_LdrGetRCInterfaceSymbols, 3128 pdmR3DevHlp_LdrGetR0InterfaceSymbols, 3053 3129 0, 3054 3130 0,
Note:
See TracChangeset
for help on using the changeset viewer.