diff --git a/qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c b/qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c
index 502b294f29e5a24ea4e5ab004dbed8e260b4aac3..3512cc6e11d080e3c94cfad161738e4527573ead 100644 (file)
}
}
-/* 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);
-
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]);
(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);
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] =
&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) {
((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;
+ u32 da = 0, pa = 0;
+ u32 len;
+
+ 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);
}
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,