int _gnix_notifier_unmonitor(struct gnix_mr_notifier *mrn, uint64_t cookie) { int ret; struct registration_monitor rm; fastlock_acquire(&mrn->lock); ret = notifier_verify_stuff(mrn); if (ret != FI_SUCCESS) { GNIX_WARN(FI_LOG_MR, "Invalid MR notifier\n"); goto err_exit; } GNIX_DEBUG(FI_LOG_MR, "unmonitoring cookie=%lu\n", cookie); memset(&rm, 0, sizeof(rm)); rm.type = REGISTRATION_UNMONITOR; rm.u.unmon.user_cookie = cookie; ret = kdreg_write(mrn, &rm, sizeof(rm)); err_exit: fastlock_release(&mrn->lock); return ret; }
int _gnix_notifier_monitor(struct gnix_mr_notifier *mrn, void *addr, uint64_t len, uint64_t cookie) { int ret; struct registration_monitor rm; fastlock_acquire(&mrn->lock); ret = notifier_verify_stuff(mrn); if (ret != FI_SUCCESS) { GNIX_WARN(FI_LOG_MR, "Invalid MR notifier\n"); goto err_exit; } if (ret == 0) { GNIX_DEBUG(FI_LOG_MR, "monitoring %p (len=%lu) cookie=%lu\n", addr, len, cookie); memset(&rm, 0, sizeof(rm)); rm.type = REGISTRATION_MONITOR; rm.u.mon.addr = (uint64_t) addr; rm.u.mon.len = len; rm.u.mon.user_cookie = cookie; ret = kdreg_write(mrn, &rm, sizeof(rm)); } err_exit: fastlock_release(&mrn->lock); return ret; }
int _gnix_notifier_unmonitor(struct gnix_mr_notifier *mrn, uint64_t cookie) { int ret; struct registration_monitor rm; ret = notifier_verify_stuff(mrn); if (ret == 0) { GNIX_DEBUG(FI_LOG_MR, "unmonitoring cookie=%lu\n", cookie); memset(&rm, 0, sizeof(rm)); rm.type = REGISTRATION_UNMONITOR; rm.u.unmon.user_cookie = cookie; ret = kdreg_write(mrn, &rm, sizeof(rm)); } return ret; }
int _gnix_notifier_monitor(struct gnix_mr_notifier *mrn, void *addr, uint64_t len, uint64_t cookie) { int ret; struct registration_monitor rm; ret = notifier_verify_stuff(mrn); if (ret == 0) { GNIX_DEBUG(FI_LOG_MR, "monitoring %p (len=%lu) cookie=%lu\n", addr, len, cookie); memset(&rm, 0, sizeof(rm)); rm.type = REGISTRATION_MONITOR; rm.u.mon.addr = (uint64_t) addr; rm.u.mon.len = len; rm.u.mon.user_cookie = cookie; ret = kdreg_write(mrn, &rm, sizeof(rm)); } return ret; }