Print this page
6150 use NULL getmemid segop as a shorthand for ENODEV


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 }