3655 }
3656 }
3657 mutex_exit(&pidlock);
3658 }
3659
3660 /*
3661 * return memory object ID
3662 */
3663 int
3664 as_getmemid(struct as *as, caddr_t addr, memid_t *memidp)
3665 {
3666 struct seg *seg;
3667 int sts;
3668
3669 AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
3670 seg = as_segat(as, addr);
3671 if (seg == NULL) {
3672 AS_LOCK_EXIT(as, &as->a_lock);
3673 return (EFAULT);
3674 }
3675 /*
3676 * catch old drivers which may not support getmemid
3677 */
3678 if (seg->s_ops->getmemid == NULL) {
3679 AS_LOCK_EXIT(as, &as->a_lock);
3680 return (ENODEV);
3681 }
3682
3683 sts = segop_getmemid(seg, addr, memidp);
3684
3685 AS_LOCK_EXIT(as, &as->a_lock);
3686 return (sts);
3687 }
|
3655 }
3656 }
3657 mutex_exit(&pidlock);
3658 }
3659
3660 /*
3661 * return memory object ID
3662 */
3663 int
3664 as_getmemid(struct as *as, caddr_t addr, memid_t *memidp)
3665 {
3666 struct seg *seg;
3667 int sts;
3668
3669 AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
3670 seg = as_segat(as, addr);
3671 if (seg == NULL) {
3672 AS_LOCK_EXIT(as, &as->a_lock);
3673 return (EFAULT);
3674 }
3675
3676 sts = segop_getmemid(seg, addr, memidp);
3677
3678 AS_LOCK_EXIT(as, &as->a_lock);
3679 return (sts);
3680 }
|