Lines Matching refs:writer
78 rw->writer.id = rw->reader.id = INV_PTHREAD_ID;
79 rw->writer.count = rw->reader.count = 0;
80 rw->writer.next = rw->reader.next = 0;
195 rw->writer.id = myself;
196 rw->writer.count = 1;
228 /* Wait for reader(s) or writer to finish */
233 * - No writers (or writer is myself), and one of:
240 ((rw->writer_count == 0 || rw->writer.id == myself) &&
252 if (rw->writer_count == 0 || rw->writer.id == myself) {
296 rw->writer.id = myself;
298 rw->writer.count++;
375 /* Wait for writer to complete; writer == myself also OK */
376 while (rw->writer_count > 0 && rw->writer.id != myself) {
438 rw->writer.id != myself || rw->writer.count == 0) {
446 rw->writer.count--;
447 if (rw->writer.count == 0) {
448 rw->writer.id = INV_PTHREAD_ID;
490 (rw->writer_count > 0 && rw->writer.id != myself)) {
537 /* If there are no readers, wake up any waiting writer */
574 if (rw->writer_count == 0 || rw->writer.id != pthread_self()) {
619 if (rw->writer_count > 0 && rw->writer.id == myself) {
675 (rw->writer.id != myself || rw->writer.count != 1) ||
716 printf("0x%x: No writer\n", rw);
719 rw, rw->writer.id, rw->writer.count);
720 if (rw->writer.wait)
723 printf("0x%x: Invalid writer count = %d\n",