| 1002 | } |
| 1003 | |
| 1004 | static void __noinline |
| 1005 | rms_rlock_fallback(struct rmslock *rms) |
| 1006 | { |
| 1007 | |
| 1008 | rms_int_influx_exit(rms, rms_int_pcpu(rms)); |
| 1009 | critical_exit(); |
| 1010 | |
| 1011 | mtx_lock(&rms->mtx); |
| 1012 | while (rms->writers > 0) |
| 1013 | msleep(&rms->readers, &rms->mtx, PUSER - 1, mtx_name(&rms->mtx), 0); |
| 1014 | critical_enter(); |
| 1015 | rms_int_readers_inc(rms, rms_int_pcpu(rms)); |
| 1016 | mtx_unlock(&rms->mtx); |
| 1017 | critical_exit(); |
| 1018 | } |
| 1019 | |
| 1020 | void |
| 1021 | rms_rlock(struct rmslock *rms) |
no test coverage detected