]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ipc/ipcdev.git/blobdiff - qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c
Cleanup: remove directory qnx/src/ipc3x_dev/ti/syslink/rpmsg-omx
[ipc/ipcdev.git] / qnx / src / ipc3x_dev / ti / syslink / build / Qnx / resmgr / syslink_main.c
index 583279469d11705af22f3a1a7343491a3ba899db..3ad63e0ce0d4b3a14262eaf17b2bc2421ed6be39 100644 (file)
@@ -68,7 +68,6 @@
 #include <ti/syslink/utils/MemoryOS.h>
 #include <ti/ipc/MultiProc.h>
 #include <_MultiProc.h>
-#include <rprcfmt.h>
 #include <OsalSemaphore.h>
 #include <ti/syslink/utils/OsalPrint.h>
 #if defined(SYSLINK_PLATFORM_OMAP4430) || defined(SYSLINK_PLATFORM_OMAP5430)
@@ -116,8 +115,6 @@ Bool syslink_hib_hibernating = FALSE;
 pthread_mutex_t syslink_hib_mutex = PTHREAD_MUTEX_INITIALIZER;
 pthread_cond_t syslink_hib_cond = PTHREAD_COND_INITIALIZER;
 
-extern int rpmsg_omx_setup (void);
-extern void rpmsg_omx_destroy (void);
 extern int rpmsg_resmgr_setup (void);
 extern void rpmsg_resmgr_destroy (void);
 extern Int rpmsg_dce_setup (Void);
@@ -154,7 +151,7 @@ typedef struct syslink_trace_info_t {
     Bool        firstRead;
 } syslink_trace_info;
 
-static syslink_trace_info proc_traces[NUM_REMOTE_PROCS];
+static syslink_trace_info proc_traces[MultiProc_MAXPROCESSORS];
 
 int syslink_read(resmgr_context_t *ctp, io_read_t *msg, syslink_ocb_t *ocb)
 {
@@ -302,55 +299,20 @@ syslink_ocb_free (IOFUNC_OCB_T * i_ocb)
     }
 }
 
-/* Initialize the syslink device */
-int init_syslink_device(syslink_dev_t *dev)
+int init_syslink_trace_device(syslink_dev_t *dev)
 {
-    iofunc_attr_t *  attr;
-    syslink_attr_t * trace_attr;
     resmgr_attr_t    resmgr_attr;
     int              i;
+    syslink_attr_t * trace_attr;
     char             trace_name[_POSIX_PATH_MAX];
     int              status = 0;
-    u32              da = 0, pa = 0;
-    u32              len;
-
-    pthread_mutex_init(&dev->lock, NULL);
+    unsigned int     da = 0, pa = 0;
+    unsigned int     len;
 
     memset(&resmgr_attr, 0, sizeof resmgr_attr);
     resmgr_attr.nparts_max = 10;
     resmgr_attr.msg_max_size = 2048;
 
-    memset(&dev->syslink.mattr, 0, sizeof(iofunc_mount_t));
-    dev->syslink.mattr.flags = ST_NOSUID | ST_NOEXEC;
-    dev->syslink.mattr.conf = IOFUNC_PC_CHOWN_RESTRICTED |
-                              IOFUNC_PC_NO_TRUNC |
-                              IOFUNC_PC_SYNC_IO;
-    dev->syslink.mattr.funcs = &dev->syslink.mfuncs;
-
-    memset(&dev->syslink.mfuncs, 0, sizeof(iofunc_funcs_t));
-    dev->syslink.mfuncs.nfuncs = _IOFUNC_NFUNCS;
-
-    iofunc_func_init(_RESMGR_CONNECT_NFUNCS, &dev->syslink.cfuncs,
-                    _RESMGR_IO_NFUNCS, &dev->syslink.iofuncs);
-
-    iofunc_attr_init(attr = &dev->syslink.cattr, S_IFCHR | 0777, NULL, NULL);
-
-    dev->syslink.mfuncs.ocb_calloc = syslink_ocb_calloc;
-    dev->syslink.mfuncs.ocb_free = syslink_ocb_free;
-    dev->syslink.iofuncs.devctl = syslink_devctl;
-    dev->syslink.iofuncs.unblock = syslink_unblock;
-
-    attr->mount = &dev->syslink.mattr;
-    iofunc_time_update(attr);
-
-    if (-1 == (dev->syslink.resmgr_id =
-        resmgr_attach(dev->dpp, &resmgr_attr,
-                      IPC_DEVICE_PATH, _FTYPE_ANY, 0,
-                      &dev->syslink.cfuncs,
-                      &dev->syslink.iofuncs, attr))) {
-        return(-1);
-    }
-
     for (i = 0; i < syslink_num_cores; i++) {
         iofunc_func_init(_RESMGR_CONNECT_NFUNCS, &dev->syslink.cfuncs_trace[i],
                          _RESMGR_IO_NFUNCS, &dev->syslink.iofuncs_trace[i]);
@@ -377,6 +339,10 @@ int init_syslink_device(syslink_dev_t *dev)
                                                 (Ptr) da,
                                                 ProcMgr_AddrType_SlaveVirt);
             }
+            else {
+                GT_setFailureReason(curTrace, GT_4CLASS, "init_syslink_trace_device",
+                                    status, "not performing ProcMgr_translate");
+            }
             /* map length aligned to page size */
             proc_traces[i].va =
                     mmap_device_io (((len + 0x1000 - 1) / 0x1000) * 0x1000, pa);
@@ -385,11 +351,16 @@ int init_syslink_device(syslink_dev_t *dev)
             proc_traces[i].ridx = (uint32_t *)((uint32_t)proc_traces[i].widx + \
                                                sizeof(uint32_t));
             if (proc_traces[i].va == MAP_DEVICE_FAILED) {
+                GT_setFailureReason(curTrace, GT_4CLASS, "init_syslink_trace_device",
+                                    status, "mmap_device_io failed");
+                GT_1trace(curTrace, GT_4CLASS, "errno %d", errno);
                 proc_traces[i].va = NULL;
             }
             proc_traces[i].firstRead = TRUE;
         }
         else {
+            GT_setFailureReason(curTrace, GT_4CLASS, "init_syslink_trace_device",
+                                status, "RscTable_getInfo failed");
             proc_traces[i].va = NULL;
         }
         if (-1 == (dev->syslink.resmgr_id_trace[i] =
@@ -398,25 +369,19 @@ int init_syslink_device(syslink_dev_t *dev)
                                      &dev->syslink.cfuncs_trace[i],
                                      &dev->syslink.iofuncs_trace[i],
                                      &trace_attr->attr))) {
+            GT_setFailureReason(curTrace, GT_4CLASS, "init_syslink_trace_device",
+                                status, "resmgr_attach failed");
             return(-1);
         }
     }
 
-    return(0);
 }
 
-/* De-initialize the syslink device */
-int deinit_syslink_device(syslink_dev_t *dev)
+int deinit_syslink_trace_device(syslink_dev_t *dev)
 {
     int status = EOK;
     int i = 0;
 
-    status = resmgr_detach(dev->dpp, dev->syslink.resmgr_id, 0);
-    if (status < 0) {
-        Osal_printf("syslink: resmgr_detach failed %d", errno);
-        status = errno;
-    }
-
     for (i = 0; i < syslink_num_cores; i++) {
         status = resmgr_detach(dev->dpp, dev->syslink.resmgr_id_trace[i], 0);
         if (status < 0) {
@@ -428,6 +393,76 @@ int deinit_syslink_device(syslink_dev_t *dev)
                    ((proc_traces[i].len + 8 + 0x1000 - 1) / 0x1000) * 0x1000);
         proc_traces[i].va = NULL;
     }
+}
+
+/* Initialize the syslink device */
+int init_syslink_device(syslink_dev_t *dev)
+{
+    iofunc_attr_t *  attr;
+    syslink_attr_t * trace_attr;
+    resmgr_attr_t    resmgr_attr;
+    int              i;
+    char             trace_name[_POSIX_PATH_MAX];
+    int              status = 0;
+
+    pthread_mutex_init(&dev->lock, NULL);
+
+    memset(&resmgr_attr, 0, sizeof resmgr_attr);
+    resmgr_attr.nparts_max = 10;
+    resmgr_attr.msg_max_size = 2048;
+
+    memset(&dev->syslink.mattr, 0, sizeof(iofunc_mount_t));
+    dev->syslink.mattr.flags = ST_NOSUID | ST_NOEXEC;
+    dev->syslink.mattr.conf = IOFUNC_PC_CHOWN_RESTRICTED |
+                              IOFUNC_PC_NO_TRUNC |
+                              IOFUNC_PC_SYNC_IO;
+    dev->syslink.mattr.funcs = &dev->syslink.mfuncs;
+
+    memset(&dev->syslink.mfuncs, 0, sizeof(iofunc_funcs_t));
+    dev->syslink.mfuncs.nfuncs = _IOFUNC_NFUNCS;
+
+    iofunc_func_init(_RESMGR_CONNECT_NFUNCS, &dev->syslink.cfuncs,
+                    _RESMGR_IO_NFUNCS, &dev->syslink.iofuncs);
+
+    iofunc_attr_init(attr = &dev->syslink.cattr, S_IFCHR | 0777, NULL, NULL);
+
+    dev->syslink.mfuncs.ocb_calloc = syslink_ocb_calloc;
+    dev->syslink.mfuncs.ocb_free = syslink_ocb_free;
+    dev->syslink.iofuncs.devctl = syslink_devctl;
+    dev->syslink.iofuncs.unblock = syslink_unblock;
+
+    attr->mount = &dev->syslink.mattr;
+    iofunc_time_update(attr);
+
+    if (-1 == (dev->syslink.resmgr_id =
+        resmgr_attach(dev->dpp, &resmgr_attr,
+                      IPC_DEVICE_PATH, _FTYPE_ANY, 0,
+                      &dev->syslink.cfuncs,
+                      &dev->syslink.iofuncs, attr))) {
+        return(-1);
+    }
+
+    status = init_syslink_trace_device(dev);
+    if (status < 0) {
+        return status;
+    }
+
+    return(0);
+}
+
+/* De-initialize the syslink device */
+int deinit_syslink_device(syslink_dev_t *dev)
+{
+    int status = EOK;
+    int i = 0;
+
+    status = resmgr_detach(dev->dpp, dev->syslink.resmgr_id, 0);
+    if (status < 0) {
+        Osal_printf("syslink: resmgr_detach failed %d", errno);
+        status = errno;
+    }
+
+    status = deinit_syslink_trace_device(dev);
 
     return(status);
 }
@@ -464,6 +499,8 @@ static void ipc_recover(Ptr args)
 
     deinit_ipc(dev, TRUE);
     init_ipc(dev, syslink_firmware, TRUE);
+    deinit_syslink_trace_device(dev);
+    init_syslink_trace_device(dev);
 }
 
 Int syslink_error_cb (UInt16 procId, ProcMgr_Handle handle,
@@ -780,11 +817,6 @@ procmgropen_fail:
         if (status < 0)
             goto resmgrsetup_fail;
 
-        /* Set up rpmsg_omx */
-        status = rpmsg_omx_setup();
-        if (status < 0)
-            goto omxsetup_fail;
-
         /* Set up rpmsg_dce */
         status = rpmsg_dce_setup();
         if (status < 0)
@@ -808,8 +840,6 @@ rpcsetup_fail:
 tiipcsetup_fail:
     rpmsg_dce_destroy();
 dcesetup_fail:
-    rpmsg_omx_destroy();
-omxsetup_fail:
     rpmsg_resmgr_destroy();
 resmgrsetup_fail:
     for (i-=1; i >= 0; i--) {
@@ -864,8 +894,6 @@ int deinit_ipc(syslink_dev_t * dev, bool recover)
 
     rpmsg_dce_destroy();
 
-    rpmsg_omx_destroy();
-
     rpmsg_resmgr_destroy();
 
     for (i = 0; i < MultiProc_MAXPROCESSORS; i++) {
@@ -1046,7 +1074,7 @@ static void *ducatiTraceThread(void *parm)
 
     pthread_mutex_lock(&trace_mutex);
     while ( (trace_active == TRUE) && (exit == FALSE) ) {
-        for (core = 0; core < NUM_REMOTE_PROCS; core++) {
+        for (core = 0; core < MultiProc_MAXPROCESSORS; core++) {
             while ((bytesRead = readNextTrace(core, trace_buffer, TRACE_BUFFER_SIZE)) > 0) {
 #if (_NTO_VERSION >= 800)
                 slog2f(buffer_handle, 0, 0, "C%d:%s", core, trace_buffer);
@@ -1153,7 +1181,7 @@ int main(int argc, char *argv[])
     char *user_parm = NULL;
     struct stat          sbuf;
 
-    if (-1 != stat("/dev/syslink", &sbuf)) {
+    if (-1 != stat(IPC_DEVICE_PATH, &sbuf)) {
         printf ("Syslink Already Running...\n");
         return EXIT_FAILURE;
     }
@@ -1174,7 +1202,11 @@ int main(int argc, char *argv[])
 #if defined(SYSLINK_PLATFORM_OMAP4430)
             syslink_firmware[syslink_num_cores].proc = "SYSM3";
 #else
+#ifndef SYSLINK_SYSBIOS_SMP
             syslink_firmware[syslink_num_cores].proc = "CORE0";
+#else
+            syslink_firmware[syslink_num_cores].proc = "IPU";
+#endif
 #endif
             syslink_num_cores++;
 #ifndef SYSLINK_SYSBIOS_SMP