| 1083 | } |
| 1084 | |
| 1085 | void |
| 1086 | rms_runlock(struct rmslock *rms) |
| 1087 | { |
| 1088 | struct rmslock_pcpu *pcpu; |
| 1089 | |
| 1090 | critical_enter(); |
| 1091 | pcpu = rms_int_pcpu(rms); |
| 1092 | rms_int_influx_enter(rms, pcpu); |
| 1093 | atomic_interrupt_fence(); |
| 1094 | if (__predict_false(rms->writers > 0)) { |
| 1095 | rms_runlock_fallback(rms); |
| 1096 | return; |
| 1097 | } |
| 1098 | atomic_interrupt_fence(); |
| 1099 | rms_int_readers_dec(rms, pcpu); |
| 1100 | atomic_interrupt_fence(); |
| 1101 | rms_int_influx_exit(rms, pcpu); |
| 1102 | critical_exit(); |
| 1103 | } |
| 1104 | |
| 1105 | struct rmslock_ipi { |
| 1106 | struct rmslock *rms; |
no test coverage detected