3505 }
3506 }
3507 mutex_exit(&pidlock);
3508 }
3509
3510 /*
3511 * return memory object ID
3512 */
3513 int
3514 as_getmemid(struct as *as, caddr_t addr, memid_t *memidp)
3515 {
3516 struct seg *seg;
3517 int sts;
3518
3519 AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
3520 seg = as_segat(as, addr);
3521 if (seg == NULL) {
3522 AS_LOCK_EXIT(as, &as->a_lock);
3523 return (EFAULT);
3524 }
3525 /*
3526 * catch old drivers which may not support getmemid
3527 */
3528 if (seg->s_ops->getmemid == NULL) {
3529 AS_LOCK_EXIT(as, &as->a_lock);
3530 return (ENODEV);
3531 }
3532
3533 sts = segop_getmemid(seg, addr, memidp);
3534
3535 AS_LOCK_EXIT(as, &as->a_lock);
3536 return (sts);
3537 }
|
3505 }
3506 }
3507 mutex_exit(&pidlock);
3508 }
3509
3510 /*
3511 * return memory object ID
3512 */
3513 int
3514 as_getmemid(struct as *as, caddr_t addr, memid_t *memidp)
3515 {
3516 struct seg *seg;
3517 int sts;
3518
3519 AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
3520 seg = as_segat(as, addr);
3521 if (seg == NULL) {
3522 AS_LOCK_EXIT(as, &as->a_lock);
3523 return (EFAULT);
3524 }
3525
3526 sts = segop_getmemid(seg, addr, memidp);
3527
3528 AS_LOCK_EXIT(as, &as->a_lock);
3529 return (sts);
3530 }
|