pkarashchenko commented on a change in pull request #5171:
URL: https://github.com/apache/incubator-nuttx/pull/5171#discussion_r782787550
##########
File path: sched/semaphore/sem_holder.c
##########
@@ -1035,18 +944,57 @@ void nxsem_release_holder(FAR sem_t *sem)
{
FAR struct tcb_s *rtcb = this_task();
FAR struct semholder_s *pholder;
+ FAR struct semholder_s *candidate = NULL;
+ unsigned int total = 0;
/* Find the container for this holder */
- pholder = nxsem_findholder(sem, rtcb);
- if (pholder != NULL && pholder->counts > 0)
+#if CONFIG_SEM_PREALLOCHOLDERS > 0
+ for (pholder = sem->hhead; pholder; pholder = pholder->flink)
+#else
+ int i;
+
+ /* We have two hard-allocated holder structures in sem_t */
+
+ for (i = 0; i < 2; i++)
+#endif
+ {
+#if CONFIG_SEM_PREALLOCHOLDERS == 0
+ pholder = &sem->holder[i];
+ if (pholder->counts <= 0)
+ continue;
Review comment:
Yes. I understand. I just see that in all other places decision in done
based on `htcb`, so suggest a common approach. We can add instrumentation to
assert if `htcb != NULL` and `counts <= 0` to catch possible bugs. The same for
`htcb == NULL` and `counts > 0`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]