Changeset 27010 in vbox for trunk/src/VBox
- Timestamp:
- Mar 4, 2010 11:08:19 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 58319
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/solaris/vbi/i86pc/os/vbi.c
r27004 r27010 193 193 _init(void) 194 194 { 195 196 197 195 int err = vbi_init(); 196 if (!err) 197 err = mod_install(&vbi_modlinkage); 198 198 return (err); 199 199 } … … 227 227 if (p_contig_free == NULL) { 228 228 p_contig_free = (void (*)(void *, size_t)) 229 229 kobj_getsymvalue("contig_free", 1); 230 230 if (p_contig_free == NULL) { 231 231 cmn_err(CE_NOTE, " contig_free() not found in kernel"); … … 329 329 attr = base_attr; 330 330 attr.dma_attr_addr_hi = *phys; 331 331 attr.dma_attr_align = alignment; 332 332 if (!contig) 333 333 attr.dma_attr_sgllen = npages; … … 349 349 vbi_contig_alloc(uint64_t *phys, size_t size) 350 350 { 351 351 /* Obsolete */ 352 352 return (vbi_internal_alloc(phys, size, PAGESIZE /* alignment */, 1 /* contiguous */)); 353 353 } … … 356 356 vbi_contig_free(void *va, size_t size) 357 357 { 358 358 /* Obsolete */ 359 359 p_contig_free(va, size); 360 360 } … … 373 373 374 374 hat_devload(kas.a_hat, va, size, (pfn_t)(pa >> PAGESHIFT), 375 375 prot, HAT_LOAD | HAT_LOAD_LOCK | HAT_UNORDERED_OK); 376 376 377 377 return (va); … … 535 535 536 536 t = thread_create(NULL, NULL, (void (*)())func, arg, len, 537 537 VBIPROC(), TS_RUN, priority); 538 538 return (t); 539 539 } … … 615 615 if (use_old_with_ulong) { 616 616 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 617 617 set.words[0], (xc_func_t)func); 618 618 } else { 619 619 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 620 620 set, (xc_func_t)func); 621 621 } 622 622 } else { … … 637 637 if (use_old_with_ulong) { 638 638 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 639 639 set.words[0], (xc_func_t)func); 640 640 } else { 641 641 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 642 642 set, (xc_func_t)func); 643 643 } 644 644 } else { … … 659 659 if (use_old_with_ulong) { 660 660 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 661 661 set.words[0], (xc_func_t)func); 662 662 } else { 663 663 p_xc_call((xc_arg_t)arg, 0, 0, X_CALL_HIPRI, 664 664 set, (xc_func_t)func); 665 665 } 666 666 } else { … … 680 680 if (!IS_KERNEL(addr)) { 681 681 err = as_fault(VBIPROC()->p_as->a_hat, VBIPROC()->p_as, 682 682 (caddr_t)addr, len, F_SOFTLOCK, access); 683 683 if (err != 0) { 684 684 VBI_VERBOSE("vbi_lock_va() failed to lock"); … … 695 695 if (!IS_KERNEL(addr)) 696 696 as_fault(VBIPROC()->p_as->a_hat, VBIPROC()->p_as, 697 697 (caddr_t)addr, len, F_SOFTUNLOCK, access); 698 698 } 699 699 … … 752 752 for (p = 0; p < pgcnt; ++p, va += PAGESIZE) { 753 753 hat_devload(as->a_hat, va, 754 755 754 PAGESIZE, a->palist[p] >> PAGESHIFT, 755 data->prot | HAT_UNORDERED_OK, HAT_LOAD | HAT_LOAD_LOCK); 756 756 } 757 757 … … 780 780 { 781 781 if (addr < seg->s_base || addr + len > seg->s_base + seg->s_size || 782 782 (len & PAGEOFFSET) || ((uintptr_t)addr & PAGEOFFSET)) 783 783 panic("segvbi_unmap"); 784 784 … … 787 787 788 788 hat_unload(seg->s_as->a_hat, addr, len, 789 789 HAT_UNLOAD_UNMAP | HAT_UNLOAD_UNLOCK); 790 790 791 791 seg_free(seg); … … 805 805 static int 806 806 segvbi_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, 807 807 enum fault_type type, enum seg_rw rw) 808 808 { 809 809 return (FC_MAKE_ERR(EFAULT)); … … 846 846 847 847 for (v = 0, len = (len + PAGEOFFSET) & PAGEMASK; len; 848 848 len -= PAGESIZE, v += PAGESIZE) 849 849 *vec++ = 1; 850 850 return (v); … … 853 853 static int 854 854 segvbi_lockop(struct seg *seg, caddr_t addr, 855 855 size_t len, int attr, int op, ulong_t *lockmap, size_t pos) 856 856 { 857 857 return (0); … … 898 898 static int 899 899 segvbi_pagelock(struct seg *seg, caddr_t addr, size_t len, 900 900 struct page ***ppp, enum lock_type type, enum seg_rw rw) 901 901 { 902 902 return (ENOTSUP); … … 1249 1249 p_contig_free(va, size); 1250 1250 } 1251
Note:
See TracChangeset
for help on using the changeset viewer.