IWIP + RTOS - so vermeiden Sie netconn block der thread für immer?

Wenn die Iwip netconn_accept() oder netconn_recv() Funktion wird aufgerufen, wenn wir mit einem RTOS, blockiert der thread und wartet auf eine Verbindung bis zum timeout oder für immer, hängt von der Einstellung der LWIP_SO_RCVTIME0. Die Dauer der Zeitüberschreitung ist gleich der SYS_ARCH_TIMEOUT.

Den SYS_ARCH_TIMEOUT ist definiert als 0xffffffff im Kern beinhalten einen Teil des Iwip-stack, so dass ich denke, dass es nicht zu erwarten ist, geändert werden.

Eigentlich möchte ich es, um zu überprüfen, ob eine Verbindung hergestellt wird, wenn es dann nicht weiterhin den thread. Jedoch, wenn ich den Anruf netconn_accept() ist, wird es nur den thread blockiert und wartet dort ewig (oder sehr lange)...ich will nicht einfach nur ändern Sie den Wert definieren von SYS_ARCH_TIMEOUT da brauche ich verschiedene timeout in verschiedenen Situationen...

Was ist der gute Weg, das zu tun? Danke.

  • Ich weiß nicht, die Besonderheiten des iwip, aber muss es ein Konzept der non-blocking-sockets oder ein select-like-Funktion?
  • Die BSD-sockets-Implementierung in iwip wirklich extra Raum, die OP möglicherweise nicht in der Lage zu leisten. 64 Kb RAM ist das nicht ein großer Raum für alles.
  • Wie Sie wissen, ich habe nur 64kb RAM?? Weiß ich, du...?
  • Ich bezweifle, dass Sie einfach genug hatte von FreeRTOS mich :)))
InformationsquelleAutor eepty | 2012-06-01
Schreibe einen Kommentar