X-Git-Url: https://git.ti.com/gitweb?p=ipc%2Fipcdev.git;a=blobdiff_plain;f=linux%2Fsrc%2Fapi%2FIpc.c;h=46db4ae16507a9f3176753d6bba30e4b3a484979;hp=43cfa66143fe946c566cfc5f98ec4f8df5e2e2fd;hb=7610394a7901b753ea4f2ba938ce96a42964420b;hpb=19c8290c37cbd0bd5fb2d720fab1955803b55ab4 diff --git a/linux/src/api/Ipc.c b/linux/src/api/Ipc.c index 43cfa66..46db4ae 100644 --- a/linux/src/api/Ipc.c +++ b/linux/src/api/Ipc.c @@ -44,9 +44,9 @@ #include #include #include -#include /* Common IPC headers: */ +#include #include #include @@ -73,9 +73,10 @@ Int Ipc_start (Void) { MessageQ_Config msgqCfg; MultiProc_Config mpCfg; - Int32 status = Ipc_S_SUCCESS; + Int32 status; LAD_Status ladStatus; UInt16 rprocId; + Int32 attachedAny = 0; /* Catch ctrl-C, and cleanup: */ (void) signal(SIGINT, cleanup); @@ -97,19 +98,28 @@ Int Ipc_start (Void) MessageQ_setup(&msgqCfg); /* Now attach to all remote processors, assuming they are up. */ - for (rprocId = 0; - (rprocId < MultiProc_getNumProcessors()) && (status >= 0); - rprocId++) { - if (0 == rprocId) { - /* Skip host, which should always be 0th entry. */ - continue; - } - status = MessageQ_attach (rprocId, NULL); - if (status < 0) { - printf("Ipc_start: MessageQ_attach(%d) failed: %d\n", - rprocId, status); - status = Ipc_E_FAIL; - } + for (rprocId = 0; rprocId < MultiProc_getNumProcessors(); rprocId++) { + if (0 == rprocId) { + /* Skip host, which should always be 0th entry. */ + continue; + } + status = MessageQ_attach(rprocId, NULL); + if (status == MessageQ_E_RESOURCE) { + continue; + } + if (status < 0) { + printf("Ipc_start: MessageQ_attach(%d) failed: %d\n", + rprocId, status); + status = Ipc_E_FAIL; + + break; + } + else { + attachedAny = 1; + } + } + if (attachedAny) { + status = Ipc_S_SUCCESS; } } else {