index 7445bed5a461e38400d8dbd9c2f3230cbf47cd25..70742765d97d434c1ce51265573d1b732dd4e904 100644 (file)
* @file NameServer.c
*
* @brief NameServer Manager
- *
*/
+/* Standard IPC headers */
+#include <ti/ipc/Std.h>
-/* Standard headers */
-#include <Std.h>
-
-/* Linux specific header files, replacing OSAL: */
+/* POSIX thread support */
#include <pthread.h>
/* Socket Headers */
#include <unistd.h>
#include <assert.h>
-/* SysLink Socket Protocol Family */
+/* Socket Protocol Family */
#include <net/rpmsg.h>
/* Module level headers */
err = SocketBindAddr(sock, procId, NAME_SERVER_RPMSG_ADDR);
if (err < 0) {
- status = NameServer_E_FAIL;
- LOG2("NameServer_setup: bind failed: %d, %s\n",
+ status = NameServer_E_FAIL;
+ LOG2("NameServer_setup: bind failed: %d, %s\n",
errno, strerror(errno))
LOG1(" closing recv socket: %d\n", sock)
close(sock);
}
else {
- NameServer_module->recvSock[procId] = sock;
+ NameServer_module->recvSock[procId] = sock;
}
}
}
status = NameServer_E_FAIL;
}
+ else {
+ /* look for at least one good send/recv pair to indicate success */
+ for (procId = 0; procId < numProcs; procId++) {
+ if (NameServer_module->sendSock[procId] != INVALIDSOCKET &&
+ NameServer_module->recvSock[procId] != INVALIDSOCKET) {
+ status = NameServer_S_SUCCESS;
+
+ break;
+ }
+ }
+ }
exit:
LOG1("NameServer_setup: exiting, refCount=%d\n", NameServer_module->refCount)
int err;
/* Set Timeout to wait: */
- tv.tv_sec = NAMESERVER_GET_TIMEOUT;
- tv.tv_usec = 0;
+ tv.tv_sec = 0;
+ tv.tv_usec = NAMESERVER_GET_TIMEOUT;
/* Create request message and send to remote: */
sock = NameServer_module->sendSock[procId];
+ if (sock == INVALIDSOCKET) {
+ LOG1("NameServer_getRemote: no socket connection to processor %d\n",
+ procId);
+ status = NameServer_E_RESOURCE;
+ goto exit;
+ }
+
LOG1("NameServer_getRemote: Sending request via sock: %d\n", sock)
/* Create request message and send to remote processor: */
status = NameServer_getRemote(handle, name, value, len, i);
if ((status >= 0) ||
- ((status < 0) && (status != NameServer_E_NOTFOUND))) {
+ ((status < 0) && (status != NameServer_E_NOTFOUND) &&
+ (status != NameServer_E_RESOURCE))) {
break;
}
}
}
if ((status >= 0) ||
- ((status < 0) && (status != NameServer_E_NOTFOUND))) {
+ ((status < 0) && (status != NameServer_E_NOTFOUND) &&
+ (status != NameServer_E_RESOURCE))) {
break;
}
}
}
+ if (status == NameServer_E_RESOURCE) {
+ status = NameServer_E_NOTFOUND;
+ }
+
return (status);
}