pussuw commented on code in PR #6197:
URL: https://github.com/apache/incubator-nuttx/pull/6197#discussion_r880407538


##########
arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c:
##########
@@ -1339,20 +1340,23 @@ static int IRAM_ATTR wifi_is_in_isr(void)
 static void *esp_thread_semphr_get(void)
 {
   int ret;
-  int i;
   void *sem;
-  struct tcb_s *tcb = this_task();
-  struct task_group_s *group = tcb->group;
 
-  for (i = 0; i < CONFIG_SCHED_EXIT_MAX; i++)
+  if (!g_wifi_tkey_init)
     {
-      if (group->tg_exit[i].func.on == esp_thread_semphr_free)
+      ret = tls_alloc(NULL);
+      if (ret < 0)
         {
-          break;
+          wlerr("Failed to create pthread key\n");
+          return NULL;
         }
+
+      g_wifi_thread_key = ret;
+      g_wifi_tkey_init = true;
     }
 
-  if (i >= CONFIG_SCHED_EXIT_MAX)
+  sem = (void *)tls_get_value(g_wifi_thread_key);

Review Comment:
   Semantically it seems what I did is equal to using the group structure to 
store the semaphore information like the old implementation does. 
   
   ```
   /****************************************************************************
    * Name: tls_alloc
    *
    * Description:
    *   Allocate a group-unique TLS data index
    *
   ```
   Which is exactly what the old implementation did with tg_exit, if I follow 
the old implementation correctly.



-- 
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: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to