Linux: Removed circular dependencies from ipc libs
authorArnie Reynoso <ariner@ti.com>
Wed, 25 Sep 2013 20:44:00 +0000 (13:44 -0700)
committerChris Ring <cring@ti.com>
Wed, 25 Sep 2013 23:55:49 +0000 (16:55 -0700)
The circular dependencies between libtiipc and libtiipcutils has
been removed by moving the assignment of the user side application's
MultiProc config structure to the libtiipcutils library via a new
function (_MultiProc_initCfg).

This also forces the creation of a LAD specific libtiipcutils library
(libtiipcutils_lad), which the daemon needs to link against.

linux/include/_MultiProc.h
linux/src/api/Ipc.c
linux/src/daemon/Makefile.am
linux/src/daemon/Makefile.in
linux/src/utils/Makefile.am
linux/src/utils/Makefile.in
linux/src/utils/MultiProc_app.c [new file with mode: 0644]

index a93f36ec1ba5e5b2a5a434e1a484d2fee0ddbc11..4d3a031b5782f6f7f6be244a1a3a197b88b5854a 100644 (file)
@@ -87,6 +87,17 @@ typedef struct MultiProc_Config_tag {
  */
 Void MultiProc_getConfig (MultiProc_Config * cfg);
 
+/*!
+ *  @brief     Initialize the configuration for the MultiProc module.
+ *
+ *             This function is called to initialize the configuration for
+ *              MultiProc.
+ *
+ *  @param     cfg        Pointer to a populated MultiProc configuration
+ *                        structure.
+ */
+Void _MultiProc_initCfg(MultiProc_Config * cfg);
+
 /* This exported from daemon/MultiProcCfg_<PLATFORM>.c: */
 extern MultiProc_Config _MultiProc_cfg;
 
index 46db4ae16507a9f3176753d6bba30e4b3a484979..214c6264612627943c5e500607488ba11093372d 100644 (file)
 
 /* IPC startup/shutdown stuff: */
 #include <ti/ipc/MultiProc.h>
+#include <_MultiProc.h>
 #include <_MessageQ.h>
 #include <_NameServer.h>
 
-MultiProc_Config _MultiProc_cfg;
-
 static LAD_ClientHandle ladHandle;
 
 static void cleanup(int arg);
@@ -88,9 +87,12 @@ Int Ipc_start (Void)
         goto exit;
     }
 
-    /* Setup and get MultiProc configuration from LAD */
+    /* 
+     * Get MultiProc configuration from LAD and initialize local MultiProc
+     * config structure.
+     */
     MultiProc_getConfig(&mpCfg);
-    _MultiProc_cfg = mpCfg;
+    _MultiProc_initCfg(&mpCfg);
 
     status = NameServer_setup();
     if (status >= 0) {
index c907b401f710d0bc762a0fd27874d142bcb733f0..32af0a0e528012d403b77e37e941f72ffceeea29 100644 (file)
@@ -97,8 +97,8 @@ lad_tci6614_SOURCES = $(common_sources) MultiProcCfg_tci6614.c
 lad_tci6636_SOURCES = $(common_sources) MultiProcCfg_tci6638.c
 lad_tci6638_SOURCES = $(common_sources) MultiProcCfg_tci6638.c
 
-common_libraries = -lpthread $(top_builddir)/linux/src/api/libtiipc.la \
-                $(top_builddir)/linux/src/utils/libtiipcutils.la
+common_libraries = -lpthread \
+                $(top_builddir)/linux/src/utils/libtiipcutils_lad.la
 
 # the additional libraries needed to link program
 lad_omap54xx_smp_LDADD = $(common_libraries) \
index 85051bd69e3a06e1024aaf247836306320b1be0d..169d63b95480fbd1ba74df359d324b0f677c1559 100644 (file)
@@ -73,8 +73,8 @@ am__objects_1 = lad.$(OBJEXT) MessageQ_daemon.$(OBJEXT) \
        MultiProc_daemon.$(OBJEXT) NameServer_daemon.$(OBJEXT)
 am_lad_dra7xx_OBJECTS = $(am__objects_1) MultiProcCfg_dra7xx.$(OBJEXT)
 lad_dra7xx_OBJECTS = $(am_lad_dra7xx_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/linux/src/api/libtiipc.la \
-       $(top_builddir)/linux/src/utils/libtiipcutils.la
+am__DEPENDENCIES_1 =  \
+       $(top_builddir)/linux/src/utils/libtiipcutils_lad.la
 am__DEPENDENCIES_2 =
 lad_dra7xx_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_lad_omap54xx_smp_OBJECTS = $(am__objects_1) \
@@ -272,8 +272,8 @@ lad_omapl138_SOURCES = $(common_sources) MultiProcCfg_omapl138.c
 lad_tci6614_SOURCES = $(common_sources) MultiProcCfg_tci6614.c
 lad_tci6636_SOURCES = $(common_sources) MultiProcCfg_tci6638.c
 lad_tci6638_SOURCES = $(common_sources) MultiProcCfg_tci6638.c
-common_libraries = -lpthread $(top_builddir)/linux/src/api/libtiipc.la \
-                $(top_builddir)/linux/src/utils/libtiipcutils.la
+common_libraries = -lpthread \
+                $(top_builddir)/linux/src/utils/libtiipcutils_lad.la
 
 
 # the additional libraries needed to link program
index 938c44ec4dfd16218044e47d095b26098437cef3..6fdf887f781a99867b44f03fa890e38689f79de3 100644 (file)
@@ -40,13 +40,15 @@ AM_CFLAGS = -I$(top_srcdir)/linux/include -I$(top_srcdir)/hlos_common/include \
 ###############################################################################
 
 # the library names to build (note we are building shared libs)
-lib_LTLIBRARIES = libtiipcutils.la
+lib_LTLIBRARIES = libtiipcutils.la libtiipcutils_lad.la
 
 # where to install the headers on the system
 libtiipcutils_ladir = $(includedir)
+libtiipcutils_lad_ladir = $(includedir)
 
 # the list of header files that belong to the library (to be installed later)
 libtiipcutils_la_HEADERS =
+libtiipcutils_lad_la_HEADERS =
 
 # the sources to add to the library and to add to the source distribution
 libtiipcutils_la_SOURCES =    \
@@ -59,9 +61,24 @@ libtiipcutils_la_SOURCES =    \
                         $(top_srcdir)/packages/ti/ipc/MultiProc.h \
                         LAD_client.c \
                         $(top_srcdir)/hlos_common/src/utils/MultiProc.c \
+                        MultiProc_app.c \
                         SocketFxns.c
 
+libtiipcutils_lad_la_SOURCES =    \
+                        $(libtiipcutils_la_HEADERS) \
+                        $(top_srcdir)/linux/include/ladclient.h \
+                        $(top_srcdir)/linux/include/_lad.h \
+                        $(top_srcdir)/linux/include/_MultiProc.h \
+                        $(top_srcdir)/linux/include/net/rpmsg.h \
+                        $(top_srcdir)/linux/include/ti/ipc/Std.h \
+                        $(top_srcdir)/packages/ti/ipc/MultiProc.h \
+                        LAD_client.c \
+                        $(top_srcdir)/hlos_common/src/utils/MultiProc.c \
+                        SocketFxns.c
+
+
 # Add version info to the shared library
 libtiipcutils_la_LDFLAGS = -version-info 1:0:0
+libtiipcutils_lad_la_LDFLAGS = -version-info 1:0:0
 
 ###############################################################################
index ef61564822f08b4402622bd37f2959db1061b8c7..575707aaa2c13e796906515e4b918459dc7a7935 100644 (file)
@@ -38,7 +38,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = linux/src/utils
-DIST_COMMON = $(libtiipcutils_la_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(libtiipcutils_la_HEADERS) \
+       $(libtiipcutils_lad_la_HEADERS) $(srcdir)/Makefile.am \
        $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -53,14 +54,19 @@ am__vpath_adj = case $$p in \
   esac;
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)" \
-       "$(DESTDIR)$(libtiipcutils_ladir)"
+       "$(DESTDIR)$(libtiipcutils_ladir)" \
+       "$(DESTDIR)$(libtiipcutils_lad_ladir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libtiipcutils_la_LIBADD =
 am__objects_1 =
 am_libtiipcutils_la_OBJECTS = $(am__objects_1) LAD_client.lo \
-       MultiProc.lo SocketFxns.lo
+       MultiProc.lo MultiProc_app.lo SocketFxns.lo
 libtiipcutils_la_OBJECTS = $(am_libtiipcutils_la_OBJECTS)
+libtiipcutils_lad_la_LIBADD =
+am_libtiipcutils_lad_la_OBJECTS = $(am__objects_1) LAD_client.lo \
+       MultiProc.lo SocketFxns.lo
+libtiipcutils_lad_la_OBJECTS = $(am_libtiipcutils_lad_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir)
 depcomp = $(SHELL) $(top_srcdir)/linux/build-aux/depcomp
 am__depfiles_maybe = depfiles
@@ -72,10 +78,12 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
 CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libtiipcutils_la_SOURCES)
-DIST_SOURCES = $(libtiipcutils_la_SOURCES)
+SOURCES = $(libtiipcutils_la_SOURCES) $(libtiipcutils_lad_la_SOURCES)
+DIST_SOURCES = $(libtiipcutils_la_SOURCES) \
+       $(libtiipcutils_lad_la_SOURCES)
 libtiipcutils_laHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(libtiipcutils_la_HEADERS)
+libtiipcutils_lad_laHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(libtiipcutils_la_HEADERS) $(libtiipcutils_lad_la_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -209,16 +217,31 @@ target_alias = @target_alias@
 ###############################################################################
 
 # the library names to build (note we are building shared libs)
-lib_LTLIBRARIES = libtiipcutils.la
+lib_LTLIBRARIES = libtiipcutils.la libtiipcutils_lad.la
 
 # where to install the headers on the system
 libtiipcutils_ladir = $(includedir)
+libtiipcutils_lad_ladir = $(includedir)
 
 # the list of header files that belong to the library (to be installed later)
 libtiipcutils_la_HEADERS = 
+libtiipcutils_lad_la_HEADERS = 
 
 # the sources to add to the library and to add to the source distribution
 libtiipcutils_la_SOURCES = \
+                        $(libtiipcutils_la_HEADERS) \
+                        $(top_srcdir)/linux/include/ladclient.h \
+                        $(top_srcdir)/linux/include/_lad.h \
+                        $(top_srcdir)/linux/include/_MultiProc.h \
+                        $(top_srcdir)/linux/include/net/rpmsg.h \
+                        $(top_srcdir)/linux/include/ti/ipc/Std.h \
+                        $(top_srcdir)/packages/ti/ipc/MultiProc.h \
+                        LAD_client.c \
+                        $(top_srcdir)/hlos_common/src/utils/MultiProc.c \
+                        MultiProc_app.c \
+                        SocketFxns.c
+
+libtiipcutils_lad_la_SOURCES = \
                         $(libtiipcutils_la_HEADERS) \
                         $(top_srcdir)/linux/include/ladclient.h \
                         $(top_srcdir)/linux/include/_lad.h \
@@ -233,6 +256,7 @@ libtiipcutils_la_SOURCES = \
 
 # Add version info to the shared library
 libtiipcutils_la_LDFLAGS = -version-info 1:0:0
+libtiipcutils_lad_la_LDFLAGS = -version-info 1:0:0
 all: all-am
 
 .SUFFIXES:
@@ -295,6 +319,8 @@ clean-libLTLIBRARIES:
        done
 libtiipcutils.la: $(libtiipcutils_la_OBJECTS) $(libtiipcutils_la_DEPENDENCIES) 
        $(LINK) -rpath $(libdir) $(libtiipcutils_la_LDFLAGS) $(libtiipcutils_la_OBJECTS) $(libtiipcutils_la_LIBADD) $(LIBS)
+libtiipcutils_lad.la: $(libtiipcutils_lad_la_OBJECTS) $(libtiipcutils_lad_la_DEPENDENCIES) 
+       $(LINK) -rpath $(libdir) $(libtiipcutils_lad_la_LDFLAGS) $(libtiipcutils_lad_la_OBJECTS) $(libtiipcutils_lad_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -304,6 +330,7 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LAD_client.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiProc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiProc_app.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SocketFxns.Plo@am__quote@
 
 .c.o:
@@ -360,6 +387,23 @@ uninstall-libtiipcutils_laHEADERS:
          echo " rm -f '$(DESTDIR)$(libtiipcutils_ladir)/$$f'"; \
          rm -f "$(DESTDIR)$(libtiipcutils_ladir)/$$f"; \
        done
+install-libtiipcutils_lad_laHEADERS: $(libtiipcutils_lad_la_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(libtiipcutils_lad_ladir)" || $(mkdir_p) "$(DESTDIR)$(libtiipcutils_lad_ladir)"
+       @list='$(libtiipcutils_lad_la_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(libtiipcutils_lad_laHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libtiipcutils_lad_ladir)/$$f'"; \
+         $(libtiipcutils_lad_laHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libtiipcutils_lad_ladir)/$$f"; \
+       done
+
+uninstall-libtiipcutils_lad_laHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libtiipcutils_lad_la_HEADERS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(libtiipcutils_lad_ladir)/$$f'"; \
+         rm -f "$(DESTDIR)$(libtiipcutils_lad_ladir)/$$f"; \
+       done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -440,7 +484,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libtiipcutils_ladir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libtiipcutils_ladir)" "$(DESTDIR)$(libtiipcutils_lad_ladir)"; do \
          test -z "$$dir" || $(mkdir_p) "$$dir"; \
        done
 install: install-am
@@ -488,7 +532,8 @@ info: info-am
 
 info-am:
 
-install-data-am: install-libtiipcutils_laHEADERS
+install-data-am: install-libtiipcutils_laHEADERS \
+       install-libtiipcutils_lad_laHEADERS
 
 install-exec-am: install-libLTLIBRARIES
 
@@ -517,7 +562,8 @@ ps: ps-am
 ps-am:
 
 uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
-       uninstall-libtiipcutils_laHEADERS
+       uninstall-libtiipcutils_laHEADERS \
+       uninstall-libtiipcutils_lad_laHEADERS
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
        clean-libLTLIBRARIES clean-libtool ctags distclean \
@@ -526,12 +572,13 @@ uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
        install install-am install-data install-data-am install-exec \
        install-exec-am install-info install-info-am \
        install-libLTLIBRARIES install-libtiipcutils_laHEADERS \
-       install-man install-strip installcheck installcheck-am \
-       installdirs maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \
-       uninstall-libtiipcutils_laHEADERS
+       install-libtiipcutils_lad_laHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-info-am \
+       uninstall-libLTLIBRARIES uninstall-libtiipcutils_laHEADERS \
+       uninstall-libtiipcutils_lad_laHEADERS
 
 
 ###############################################################################
diff --git a/linux/src/utils/MultiProc_app.c b/linux/src/utils/MultiProc_app.c
new file mode 100644 (file)
index 0000000..55a9e5d
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2013, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * *  Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * *  Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * *  Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ *  ======== MultiProc_app.c ========
+ *
+ *  Internal function to initialized the MultiProc configuration
+ */
+
+#include <ti/ipc/Std.h>
+
+#include <_MultiProc.h>
+
+MultiProc_Config _MultiProc_cfg;
+
+/*
+ *  ===== MultiProc_initCfg =====
+ */
+Void _MultiProc_initCfg(MultiProc_Config  * cfg)
+{
+    /* Initialize _MultiProc_cfg struct */
+    memcpy (&_MultiProc_cfg, cfg, sizeof(*cfg));
+}