sock_close.c/closesocket() では、ストリーミング ソケットが突然閉じられると、_task_start_preemption() が呼び出されない場合があります。ただし、呼び出される必要があります。これは、_task_start_preemption() の呼び出しが発生するまで、呼び出しThreadのプリエンプションが無効になることを意味します。
int32_t クローズソケット(uint32_t ソック)
{
...
そうでない場合、
if(((uint32_t)socket_ptr->PROTOCOL) == SOCK_STREAM)
{
構造体 tcb_parm パラメータ;
if(NULL == socket_ptr->TCB_PTR)
{
_task_start_preemption(); //***この呼び出しをここに追加***
出口へ行きます;
}
...
}
...
}
フィードバックをありがとうございます。MQX チームに転送します。
よろしくお願いします。
ダニエル