summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8fdef06)
raw | patch | inline | side by side (parent: 8fdef06)
author | Justin Sobota <jsobota@ti.com> | |
Wed, 14 Jan 2015 01:51:10 +0000 (20:51 -0500) | ||
committer | Justin Sobota <jsobota@ti.com> | |
Wed, 14 Jan 2015 01:51:10 +0000 (20:51 -0500) |
index aea43baa09a4f511e313f1c6a2fa291a1ab45042..a1da1fd29006d1b61cf6828297e54affc463af19 100644 (file)
Binary files a/docs/ReleaseNotes_RM.doc and b/docs/ReleaseNotes_RM.doc differ
Binary files a/docs/ReleaseNotes_RM.doc and b/docs/ReleaseNotes_RM.doc differ
index 3062d1345ac89bc5194c1d273df63392208a444c..e7edde5020d5074afc44514f3d8063efd7d4617d 100644 (file)
Binary files a/docs/ReleaseNotes_RM.pdf and b/docs/ReleaseNotes_RM.pdf differ
Binary files a/docs/ReleaseNotes_RM.pdf and b/docs/ReleaseNotes_RM.pdf differ
diff --git a/package.xdc b/package.xdc
index 4cf527caa9fbcbc4af5843229693cf1c5dde8b49..19892aab1f86476dbfc49e11eefd21f3df83aacf 100644 (file)
--- a/package.xdc
+++ b/package.xdc
* DESCRIPTION: \r
* This file contains the package specification for the RM library\r
*\r
- * Copyright (C) 2012-2014, Texas Instruments, Inc.\r
+ * Copyright (C) 2012-2015, Texas Instruments, Inc.\r
*****************************************************************************/\r
\r
-package ti.drv.rm[2, 1, 0, 7] {\r
+package ti.drv.rm[2, 1, 0, 8] {\r
module Settings;\r
}\r
index 19d72b8e2b86579eb9f341378661c6fba3bda39e..a88c04a168bd967d5e83a4bd64d5161a4f097a8d 100644 (file)
/*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2015, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include <ti/drv/rm/rm_transport.h>
/* App defines: Must match on remote proc side: */
-#define HEAPID 0u
-#define CLIENT_MESSAGEQ_NAME "RM_CLIENT"
-#define SERVER_MESSAGEQ_NAME "RM_SERVER"
+#define HEAPID 0u
+#define MAX_MESSAGEQ_NAME_LEN 32u
+#define CLIENT_MESSAGEQ_NAME "RM_CLIENT"
+#define SERVER_MESSAGEQ_NAME "RM_SERVER"
#define PROC_ID_DEFAULT 1 /* Host is zero, remote cores start at 1 */
Int rmServerExchange_execute(UInt16 procId)
{
- int32_t status = 0;
- int err;
- MessageQ_Msg msg = NULL;
- MessageQ_Params msgParams;
- MessageQ_QueueId queueId = MessageQ_INVALIDMESSAGEQ;
- MessageQ_Handle msgqHandle;
- char remoteQueueName[64];
- MessageQ_Msg rmMsg;
- Rm_Packet *rmPkt;
- int rm_pkt_len;
- sock_h sock_to_server;
- sock_name_t local_sock_name;
- sock_name_t server_sock;
- sock_name_t server_sock_addr;
+ int32_t status = 0;
+ int err;
+ MessageQ_Msg msg = NULL;
+ MessageQ_Params msgParams;
+ MessageQ_QueueId queueId = MessageQ_INVALIDMESSAGEQ;
+ MessageQ_Handle msgqHandle;
+ char remoteQueueName[64];
+ MessageQ_Msg rmMsg;
+ Rm_Packet *rmPkt;
+ int rm_pkt_len;
+ sock_h sock_to_server;
+ sock_name_t local_sock_name;
+ sock_name_t server_sock;
+ sock_name_t server_sock_addr;
struct sockaddr_un server_addr;
- char client_ex_sock_name[] = "/tmp/var/run/rm/rm_dsp_client_exchange";
- char server_sock_name[] = RM_SERVER_SOCKET_NAME;
+ char client_ex_sock_name[] = "/tmp/var/run/rm/rm_dsp_client_exchange";
+ char server_sock_name[] = RM_SERVER_SOCKET_NAME;
printf("Entered rmServerExchange_execute\n");
printf("Local MessageQId: 0x%x\n", MessageQ_getQueueId(msgqHandle));
}
- sprintf(remoteQueueName, "%s_%s", CLIENT_MESSAGEQ_NAME,
- MultiProc_getName(procId));
+ snprintf(remoteQueueName, MAX_MESSAGEQ_NAME_LEN, "%s_%s", CLIENT_MESSAGEQ_NAME,
+ MultiProc_getName(procId));
/* Poll until remote side has it's messageQ created before we send: */
do {
index 0445f5aad55e1eb22821520f69f8c584337de12b..b3d658867912521ce2e43be5bd4285f3f6bd71e7 100644 (file)
*
* ============================================================================
*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2015, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -311,10 +311,11 @@ Rm_Packet *transportAlloc(Rm_AppTransportHandle appTransport, uint32_t pktSize,
void transportFree (Rm_Packet *rm_pkt)
{
- uint32_t pkt_size = rm_pkt->pktLenBytes;
+ uint32_t pkt_size;
int32_t status;
if (rm_pkt) {
+ pkt_size = rm_pkt->pktLenBytes;
free (rm_pkt);
}
}
index 980e3b64b122d0c79cc1f6d7d0fe8860a54191f3..6e146167b3a205c84f1a10ce4341cc3f7a8743f4 100644 (file)
/*
- * Copyright (C) 2013-2014 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2013-2015 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
@@ -130,7 +130,7 @@ void rmsrv_log(const int loglevel, const char* functionName, const char* fileNam
va_list args;
struct stat fbuf;
- sprintf(lineno_a, "%d", lineNo);
+ snprintf(lineno_a, MAX_PRE_LOG_BUF_LEN, "%d", lineNo);
rmsrv_log_buf[0] = 0;
@@ -151,9 +151,10 @@ void rmsrv_log(const int loglevel, const char* functionName, const char* fileNam
va_end(args);
/* logfile reset if going over max_len */
- fstat(fileno(rmsrv_cfg.logfile_p), &fbuf);
- if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
- freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+ if (fstat(fileno(rmsrv_cfg.logfile_p), &fbuf) == 0) {
+ if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
+ freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+ }
}
fprintf(rmsrv_cfg.logfile_p, "%s", rmsrv_log_buf);
int fd;
struct stat file_stat;
pid_t pid;
- char *grl_file;
- char *policy_file;
+ char *grl_file = NULL;
+ char *policy_file = NULL;
char *lin_dtb_file = NULL;
- void *grl;
- void *policy;
+ void *grl = NULL;
+ void *policy = NULL;
void *lin_dtb = NULL;
const struct option longopts[] =
{
{"nodaemon", no_argument, 0, 'n'},
- {"kill", no_argument, 0, 'k'},
+ {"kill", no_argument, 0, 'k'},
{"help", no_argument, 0, 'h'},
{"lindtb", required_argument, 0, 'l'},
{"logsize", required_argument, 0, 's'},
/* Send OK to parent process */
daemon_retval_send(0);
}
-
+ else {
+ if (kill) {
+ printf("Can't kill undaemonized RM server\n");
+ exit(EXIT_FAILURE);
+ }
+ }
+
rm_server_run(grl, policy, lin_dtb, daemonize);
close_n_exit:
index cd7be6015fedb4bdab0fd0eb642d370ada2cbd1a..8f18f10bf08f5d8fc672e525fdc5396105a6f8df 100644 (file)
*
* \par
* ============================================================================
- * @n (C) Copyright 2012-2014, Texas Instruments, Inc.
+ * @n (C) Copyright 2012-2015, Texas Instruments, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
va_end(ap);
/* logfile reset if going over max_len */
- fstat(fileno(rmsrv_cfg.logfile_p), &fbuf);
- if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
- freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+ if (fstat(fileno(rmsrv_cfg.logfile_p), &fbuf) == 0) {
+ if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
+ freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+ }
}
fprintf(rmsrv_cfg.logfile_p, "%s", rmsrv_log_buf);
index ee557f25769463ec4aae4b08e71ca774340b1bf5..57cdacb60f7462c41422369610d5d03c5ef82628 100644 (file)
/*
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2013-2015 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
sd->fd = socket(AF_UNIX, SOCK_DGRAM, 0);
if (sd->fd < 0) {
- error_msg("can't open socket (error: %s)",
- sd->addr.sun_path, strerror(errno));
+ error_msg("can't open socket %s (error: %s)",
+ sd->addr.sun_path, strerror(errno));
goto check_n_return;
}
unlink(sd->addr.sun_path);
if (bind(sd->fd, (struct sockaddr *) &sd->addr, sizeof(struct sockaddr_un)) < 0) {
- error_msg("can't bind socket (error: %s)",
- sd->addr.sun_path, strerror(errno));
+ error_msg("can't bind socket %s (error: %s)",
+ sd->addr.sun_path, strerror(errno));
goto check_n_return;
}
} else {
fd = socket(AF_UNIX, SOCK_DGRAM, 0);
if (fd < 0) {
- error_msg("can't open socket (error: %s)",
- to_addr.sun_path, strerror(errno));
+ error_msg("can't open socket %s (error: %s)",
+ to_addr.sun_path, strerror(errno));
return -1;
}
}
if (sendto (fd, data, length, 0, (struct sockaddr *) &to_addr,
sizeof(struct sockaddr_un)) < 0) {
error_msg("can't send data to %s (error: %s)",
- to_addr.sun_path, strerror(errno));
+ to_addr.sun_path, strerror(errno));
return -1;
}
+ if (!sd) {
+ close(fd);
+ }
+
return 0;
}
}
if (from) {
- if((from->type = sock_addr_e) && (from->s.addr))
+ if((from->type == sock_addr_e) && (from->s.addr))
from_length = sizeof(struct sockaddr_un);
else {
error_msg("invalid from parameter");