int dm_get_config_events( void *hanp, size_t hlen, u_int nelem, dm_eventset_t *eventsetp, u_int *nelemp) { dm_fsys_vector_t *fsys_vector; dm_tokdata_t *tdp; int error; /* Convert the handle into a vnode. */ if ((error = dm_get_config_tdp(hanp, hlen, &tdp)) != 0) return(error); /* Now call the filesystem-specific routine to determine the events supported by that filesystem. */ VN_BHV_READ_LOCK(VN_BHV_HEAD(tdp->td_vp)); fsys_vector = dm_fsys_vector(tdp->td_vp); error = fsys_vector->get_config_events(tdp->td_vp, tdp->td_right, nelem, eventsetp, nelemp); VN_BHV_READ_UNLOCK(VN_BHV_HEAD(tdp->td_vp)); dm_app_put_tdp(tdp); return(error); }
int dm_set_region( dm_sessid_t sid, void *hanp, size_t hlen, dm_token_t token, u_int nelem, dm_region_t *regbufp, dm_boolean_t *exactflagp) { dm_fsys_vector_t *fsys_vector; dm_tokdata_t *tdp; int error; error = dm_app_get_tdp(sid, hanp, hlen, token, DM_TDT_REG, DM_RIGHT_EXCL, &tdp); if (error != 0) return(error); VN_BHV_READ_LOCK(VN_BHV_HEAD(tdp->td_vp)); fsys_vector = dm_fsys_vector(tdp->td_vp); error = fsys_vector->set_region(tdp->td_vp, tdp->td_right, nelem, regbufp, exactflagp); VN_BHV_READ_UNLOCK(VN_BHV_HEAD(tdp->td_vp)); dm_app_put_tdp(tdp); return(error); }
int dm_get_config( void *hanp, size_t hlen, dm_config_t flagname, dm_size_t *retvalp) { dm_fsys_vector_t *fsys_vector; dm_tokdata_t *tdp; dm_size_t retval; int system = 1; int error; /* Trap and process configuration parameters which are system-wide. */ switch (flagname) { case DM_CONFIG_LEGACY: case DM_CONFIG_PENDING: case DM_CONFIG_OBJ_REF: retval = DM_TRUE; break; case DM_CONFIG_MAX_MESSAGE_DATA: retval = DM_MAX_MSG_DATA; break; default: system = 0; break; } if (system) { if (copy_to_user(retvalp, &retval, sizeof(retval))) return(EFAULT); return(0); } /* Must be filesystem-specific. Convert the handle into a vnode. */ if ((error = dm_get_config_tdp(hanp, hlen, &tdp)) != 0) return(error); /* Now call the filesystem-specific routine to determine the value of the configuration option for that filesystem. */ VN_BHV_READ_LOCK(VN_BHV_HEAD(tdp->td_vp)); fsys_vector = dm_fsys_vector(tdp->td_vp); error = fsys_vector->get_config(tdp->td_vp, tdp->td_right, flagname, retvalp); VN_BHV_READ_UNLOCK(VN_BHV_HEAD(tdp->td_vp)); dm_app_put_tdp(tdp); return(error); }