A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd

Fix some stuff for no priority and

thread_queue_wake() doesn't need the 2nd parameter. The original purpose
for it never came to be.

Non priority version mrsw_writer_wakeup_readers was left improperly
finished. Get that back into line.

Change-Id: Ic613a2479f3cc14dc7c761517670eb15178da9f5

+14 -20
+1 -2
firmware/kernel/include/thread.h
··· 360 360 higher priority than current were woken) */ 361 361 362 362 /* A convenience function for waking an entire queue of threads. */ 363 - unsigned int thread_queue_wake(struct thread_entry **list, 364 - volatile int *count); 363 + unsigned int thread_queue_wake(struct thread_entry **list); 365 364 366 365 /* Wakeup a thread at the head of a list */ 367 366 enum wakeup_thread_protocol
+8 -1
firmware/kernel/mrsw_lock.c
··· 124 124 mrsw_writer_wakeup_readers(struct mrsw_lock *mrsw) 125 125 { 126 126 mrsw->splay.blocker.thread = NULL; 127 - for (int count = 0; mrsw->queue && mrsw->queue->retval != 0; count++) 127 + int count = 0; 128 + 129 + while (mrsw->queue && mrsw->queue->retval != 0) 130 + { 128 131 wakeup_thread(&mrsw->queue); 132 + count++; 133 + } 134 + 135 + mrsw->count = count; 129 136 return THREAD_OK; 130 137 } 131 138
+1 -1
firmware/kernel/queue.c
··· 267 267 corelock_unlock(&all_queues.cl); 268 268 269 269 /* Release thread(s) waiting on queue head */ 270 - thread_queue_wake(&q->queue, NULL); 270 + thread_queue_wake(&q->queue); 271 271 272 272 #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME 273 273 if(q->send)
+2 -8
firmware/kernel/thread.c
··· 1527 1527 * INTERNAL: Intended for use by kernel objects and not for programs. 1528 1528 *--------------------------------------------------------------------------- 1529 1529 */ 1530 - unsigned int thread_queue_wake(struct thread_entry **list, 1531 - volatile int *count) 1530 + unsigned int thread_queue_wake(struct thread_entry **list) 1532 1531 { 1533 - int num = 0; 1534 1532 unsigned result = THREAD_NONE; 1535 1533 1536 1534 for (;;) ··· 1541 1539 break; /* No more threads */ 1542 1540 1543 1541 result |= rc; 1544 - num++; 1545 1542 } 1546 - 1547 - if (count) 1548 - *count = num; 1549 1543 1550 1544 return result; 1551 1545 } ··· 1821 1815 * execution except the slot itself. */ 1822 1816 1823 1817 /* Signal this thread */ 1824 - thread_queue_wake(&current->queue, NULL); 1818 + thread_queue_wake(&current->queue); 1825 1819 corelock_unlock(&current->waiter_cl); 1826 1820 switch_thread(); 1827 1821 /* This should never and must never be reached - if it is, the
+2 -8
firmware/target/hosted/sdl/thread-sdl.c
··· 439 439 return THREAD_NONE; 440 440 } 441 441 442 - unsigned int thread_queue_wake(struct thread_entry **list, 443 - volatile int *count) 442 + unsigned int thread_queue_wake(struct thread_entry **list) 444 443 { 445 444 unsigned int result = THREAD_NONE; 446 - int num = 0; 447 445 448 446 for (;;) 449 447 { ··· 453 451 break; 454 452 455 453 result |= rc; 456 - num++; 457 454 } 458 - 459 - if (count) 460 - *count = num; 461 455 462 456 return result; 463 457 } ··· 621 615 622 616 new_thread_id(thread->id, thread); 623 617 thread->state = STATE_KILLED; 624 - thread_queue_wake(&thread->queue, NULL); 618 + thread_queue_wake(&thread->queue); 625 619 626 620 SDL_DestroySemaphore(s); 627 621