Steve,
Basically you will have to do trial and error to determine if anything has reentrancy problems. As of 6.0, the only ones that I had problems with were in TCP/IP. I ported SSH Server which is the bulk of my application and required a lot of hacking. I finally solved it by using mutex wrappers for a lot of the TCP/IP functions (select(), send(), recv()).
If you are porting something to NetOS, the other big issue is that there are a lot of missing functions.
Network:
inet_aton(), getaddrinfo(), freeaddrinfo(), getnameinfo(), gethostbyname(), gethostbyaddr(), getservbyname(), getimeofday(), pipe(), socketpair(). ICMP classes. Note that the DNS functions that are internal are broken as of NetOS 6.0a (I had to rewrite them). I never did get pipe() or socketpair() to work properly.
File:
mkdir(), rmdir(), opendir(), readdir(), rewinddir(). These are implemented in the core as NAFS calls, but need a wrapper to be compatible. Also the FLASH0/ needs to be prepended for them to work.
OS:
All the passwd functions - getuid(), geteuid(), setuid(), seteuid(), getpwnam(), getpwuid(), etc.
Also if you are using SSL, NetOS only has a partial port. For anything using AES or anything besides what is needed for https, it needs to be reported.
As for the original subject of this thread, I solved the single app problem by creating all the specific applications as C++ classes (SSH, Telnet, Nist, etc) that automatically clean up after themselves. Essentially putting a OS type launch for each of these applications.
Good luck on your app.
-Erik