Changeset 7906 in vbox for trunk/src/VBox/Additions
- Timestamp:
- Apr 11, 2008 11:24:36 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 29534
- Location:
- trunk/src/VBox/Additions
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c
r7886 r7906 292 292 { 293 293 /* 294 * Check vendor and device ID.294 * Map the register address space. 295 295 */ 296 uint16_t uVendorID = pci_config_get16(PciHandle, PCI_CONF_VENID); 297 uint16_t uDeviceID = pci_config_get16(PciHandle, PCI_CONF_DEVID); 298 if ( uVendorID == VMMDEV_VENDORID 299 && uDeviceID == VMMDEV_DEVICEID) 296 caddr_t baseAddr; 297 ddi_device_acc_attr_t deviceAttr; 298 deviceAttr.devacc_attr_version = DDI_DEVICE_ATTR_V0; 299 deviceAttr.devacc_attr_endian_flags = DDI_NEVERSWAP_ACC; 300 deviceAttr.devacc_attr_dataorder = DDI_STRICTORDER_ACC; 301 deviceAttr.devacc_attr_access = DDI_DEFAULT_ACC; 302 rc = ddi_regs_map_setup(pDip, 1, &baseAddr, 0, 0, &deviceAttr, &pState->PciIOHandle); 303 if (rc == DDI_SUCCESS) 300 304 { 301 305 /* 302 * Verify PCI class of the device (a bit paranoid).306 * Read size of the MMIO region. 303 307 */ 304 uint8_t uClass = pci_config_get8(PciHandle, PCI_CONF_BASCLASS); 305 uint8_t uSubClass = pci_config_get8(PciHandle, PCI_CONF_SUBCLASS); 306 if ( uClass == PCI_CLASS_PERIPH 307 && uSubClass == PCI_PERIPH_OTHER) 308 pState->uIOPortBase = (uintptr_t)baseAddr; 309 rc = ddi_dev_regsize(pDip, 2, &pState->cbMMIO); 310 if (rc == DDI_SUCCESS) 308 311 { 309 /* 310 * Map the register address space. 311 */ 312 caddr_t baseAddr; 313 ddi_device_acc_attr_t deviceAttr; 314 deviceAttr.devacc_attr_version = DDI_DEVICE_ATTR_V0; 315 deviceAttr.devacc_attr_endian_flags = DDI_NEVERSWAP_ACC; 316 deviceAttr.devacc_attr_dataorder = DDI_STRICTORDER_ACC; 317 deviceAttr.devacc_attr_access = DDI_DEFAULT_ACC; 318 rc = ddi_regs_map_setup(pDip, 1, &baseAddr, 0, 0, &deviceAttr, &pState->PciIOHandle); 312 rc = ddi_regs_map_setup(pDip, 2, &pState->pMMIOBase, 0, pState->cbMMIO, &deviceAttr, 313 &pState->PciMMIOHandle); 319 314 if (rc == DDI_SUCCESS) 320 315 { 321 316 /* 322 * Read size of the MMIO region.317 * Add IRQ of VMMDev. 323 318 */ 324 pState->uIOPortBase = (uintptr_t)baseAddr; 325 rc = ddi_dev_regsize(pDip, 2, &pState->cbMMIO); 319 rc = VBoxGuestSolarisAddIRQ(pDip, pState); 326 320 if (rc == DDI_SUCCESS) 327 321 { 328 rc = ddi_regs_map_setup(pDip, 2, &pState->pMMIOBase, 0, pState->cbMMIO, &deviceAttr, 329 &pState->PciMMIOHandle); 330 if (rc == DDI_SUCCESS) 322 /* 323 * Call the common device extension initializer. 324 */ 325 rc = VBoxGuestInitDevExt(&g_DevExt, pState->uIOPortBase, pState->pMMIOBase, 326 pState->cbMMIO, VBOXOSTYPE_Solaris); 327 if (RT_SUCCESS(rc)) 331 328 { 332 /* 333 * Add IRQ of VMMDev. 334 */ 335 rc = VBoxGuestSolarisAddIRQ(pDip, pState); 329 rc = ddi_create_minor_node(pDip, DEVICE_NAME, S_IFCHR, instance, DDI_PSEUDO, 0); 336 330 if (rc == DDI_SUCCESS) 337 331 { 338 /* 339 * Call the common device extension initializer. 340 */ 341 rc = VBoxGuestInitDevExt(&g_DevExt, pState->uIOPortBase, pState->pMMIOBase, 342 pState->cbMMIO, VBOXOSTYPE_Solaris); 343 if (RT_SUCCESS(rc)) 344 { 345 rc = ddi_create_minor_node(pDip, DEVICE_NAME, S_IFCHR, instance, DDI_PSEUDO, 0); 346 if (rc == DDI_SUCCESS) 347 { 348 g_pDip = pDip; 349 ddi_set_driver_private(pDip, pState); 350 pci_config_teardown(&PciHandle); 351 ddi_report_dev(pDip); 352 return DDI_SUCCESS; 353 } 354 355 LogRel((DEVICE_NAME ":ddi_create_minor_node failed.\n")); 356 } 357 else 358 LogRel((DEVICE_NAME ":VBoxGuestInitDevExt failed.\n")); 359 VBoxGuestSolarisRemoveIRQ(pDip, pState); 332 g_pDip = pDip; 333 ddi_set_driver_private(pDip, pState); 334 pci_config_teardown(&PciHandle); 335 ddi_report_dev(pDip); 336 return DDI_SUCCESS; 360 337 } 361 else 362 LogRel((DEVICE_NAME ":VBoxGuestSolarisAddIRQ failed.\n")); 363 ddi_regs_map_free(&pState->PciMMIOHandle); 338 339 LogRel((DEVICE_NAME ":ddi_create_minor_node failed.\n")); 364 340 } 365 341 else 366 LogRel((DEVICE_NAME ":ddi_regs_map_setup for MMIO region failed.\n")); 342 LogRel((DEVICE_NAME ":VBoxGuestInitDevExt failed.\n")); 343 VBoxGuestSolarisRemoveIRQ(pDip, pState); 367 344 } 368 345 else 369 LogRel((DEVICE_NAME ": ddi_dev_regsize for MMIO regionfailed.\n"));370 ddi_regs_map_free(&pState->Pci IOHandle);346 LogRel((DEVICE_NAME ":VBoxGuestSolarisAddIRQ failed.\n")); 347 ddi_regs_map_free(&pState->PciMMIOHandle); 371 348 } 372 349 else 373 LogRel((DEVICE_NAME ":ddi_regs_map_setup for IOportfailed.\n"));350 LogRel((DEVICE_NAME ":ddi_regs_map_setup for MMIO region failed.\n")); 374 351 } 375 352 else 376 LogRel((DEVICE_NAME ":PCI class/sub-class does not match.\n")); 353 LogRel((DEVICE_NAME ":ddi_dev_regsize for MMIO region failed.\n")); 354 ddi_regs_map_free(&pState->PciIOHandle); 377 355 } 378 356 else 379 LogRel((DEVICE_NAME ": PCI vendorID, deviceID does not match.\n"));357 LogRel((DEVICE_NAME ":ddi_regs_map_setup for IOport failed.\n")); 380 358 pci_config_teardown(&PciHandle); 381 359 } -
trunk/src/VBox/Additions/solaris/Installer/postinstall.sh
r7886 r7906 84 84 85 85 # Some distros like Indiana have no xorg.conf, deal with this 86 if ! (test -f '/etc/X11/xorg.conf' -o -f '/etc/X11/.xorg.conf'); then86 if test ! -f '/etc/X11/xorg.conf' && test ! -f '/etc/X11/.xorg.conf'; then 87 87 mv -f $vboxadditions_path/solaris_xorg.conf /etc/X11/.xorg.conf 88 88 fi -
trunk/src/VBox/Additions/solaris/Installer/vboxguest.sh
r7404 r7906 1 #!/bin/ bash1 #!/bin/sh 2 2 # innotek VirtualBox 3 3 # VirtualBox Guest Additions kernel module control script for Solaris. … … 62 62 check_root() 63 63 { 64 if test ` id -u` -ne 0; then64 if test `/usr/xpg4/bin/id -u` -ne 0; then 65 65 abort "This program must be run with administrator privileges. Aborting" 66 66 fi 67 67 } 68 68 69 start ()69 start_module() 70 70 { 71 71 if module_loaded; then … … 73 73 else 74 74 /usr/sbin/add_drv -i'pci80ee,cafe' -m'* 0666 root sys' vboxguest 75 if ! module_loaded; then75 if test ! module_loaded; then 76 76 abort "Failed to load vboxguest." 77 77 elif test -c "/devices/pci@0,0/pci80ee,cafe@4:vboxguest"; then … … 84 84 } 85 85 86 stop ()86 stop_module() 87 87 { 88 88 if module_loaded; then … … 94 94 } 95 95 96 restart ()96 restart_module() 97 97 { 98 stop 98 stop_module 99 99 sync 100 start 100 start_module 101 101 return 0 102 102 } 103 103 104 status ()104 status_module() 105 105 { 106 106 if module_loaded; then … … 121 121 case "$1" in 122 122 start) 123 start 123 start_module 124 124 ;; 125 125 stop) 126 stop 126 stop_module 127 127 ;; 128 128 restart) 129 restart 129 restart_module 130 130 ;; 131 131 status) 132 status 132 status_module 133 133 ;; 134 134 *) -
trunk/src/VBox/Additions/solaris/Makefile.kmk
r7886 r7906 101 101 $(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOLARIS_ADDITION_INSTALLER)/vboxdevlink.sed $(SOLARISINSTDIR)/etc/devlink.tab 102 102 $(call MSG_L1,Creating install package: $@) 103 $(QUIET)$(SOLARISINSTDIR)/makepackage.sh $(SOLARISINSTDIR) $(PKGFILENAME) 103 $(QUIET)$(SOLARISINSTDIR)/makepackage.sh $(SOLARISINSTDIR) $(PKGFILENAME) 1>/dev/null 2>/dev/null 104 104 $(QUIET)$(INSTALL) -m 0644 $(SOLARISINSTDIR)/$(PKGFILENAME) $(PATH_BIN)/additions/$(PKGFILENAME) 105 105
Note:
See TracChangeset
for help on using the changeset viewer.