| 1108 | }; |
| 1109 | |
| 1110 | static void |
| 1111 | rms_action_func(void *arg) |
| 1112 | { |
| 1113 | struct rmslock_ipi *rmsipi; |
| 1114 | struct rmslock_pcpu *pcpu; |
| 1115 | struct rmslock *rms; |
| 1116 | |
| 1117 | rmsipi = __containerof(arg, struct rmslock_ipi, srcra); |
| 1118 | rms = rmsipi->rms; |
| 1119 | pcpu = rms_int_pcpu(rms); |
| 1120 | |
| 1121 | if (pcpu->influx) |
| 1122 | return; |
| 1123 | if (pcpu->readers != 0) { |
| 1124 | atomic_add_int(&rms->readers, pcpu->readers); |
| 1125 | pcpu->readers = 0; |
| 1126 | } |
| 1127 | smp_rendezvous_cpus_done(arg); |
| 1128 | } |
| 1129 | |
| 1130 | static void |
| 1131 | rms_wait_func(void *arg, int cpu) |
nothing calls this directly
no test coverage detected