IPC API  3.40.00.06
MultiProc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012-2015 Texas Instruments Incorporated - https://www.ti.com
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
69 #ifndef ti_ipc_MultiProc__include
70 #define ti_ipc_MultiProc__include
71 
72 #if defined (__cplusplus)
73 extern "C" {
74 #endif
75 
76 /* =============================================================================
77  * All success and failure codes for the module
78  * =============================================================================
79  */
80 
84 #define MultiProc_S_BUSY (2)
85 
89 #define MultiProc_S_ALREADYSETUP (1)
90 
94 #define MultiProc_S_SUCCESS (0)
95 
99 #define MultiProc_E_FAIL (-1)
100 
104 #define MultiProc_E_INVALIDARG (-2)
105 
109 #define MultiProc_E_MEMORY (-3)
110 
114 #define MultiProc_E_ALREADYEXISTS (-4)
115 
119 #define MultiProc_E_NOTFOUND (-5)
120 
124 #define MultiProc_E_TIMEOUT (-6)
125 
129 #define MultiProc_E_INVALIDSTATE (-7)
130 
134 #define MultiProc_E_OSFAILURE (-8)
135 
139 #define MultiProc_E_RESOURCE (-9)
140 
144 #define MultiProc_E_RESTART (-10)
145 
146 /* =============================================================================
147  * Macros
148  * =============================================================================
149  */
150 
154 #define MultiProc_INVALIDID (0xFFFF)
155 
156 /* =============================================================================
157  * MultiProc Module-wide Functions
158  * =============================================================================
159  */
160 
170 UInt16 MultiProc_getBaseIdOfCluster(Void);
171 
183 UInt16 *MultiProc_getClusterProcList(Void);
184 
197 UInt16 MultiProc_getId(String name);
198 
210 String MultiProc_getName(UInt16 id);
211 
217 UInt16 MultiProc_getNumProcessors(Void);
218 
224 UInt16 MultiProc_getNumProcsInCluster(Void);
225 
233 UInt16 MultiProc_self(Void);
234 
253 Int MultiProc_setLocalId(UInt16 id);
254 
273 Int MultiProc_setBaseIdOfCluster(UInt16 id);
274 
275 /*
276  * ======== MultiProc_rprocSetId ========
277  * Update processor ID mapping at run-time
278  *
279  * Internal use only. This function is temporary and will be
280  * removed in a future build.
281  *
282  * When using remoteproc to load a DSP processor, the VirtIO channel
283  * ID is non-deterministic. This function is part of a larger hack to
284  * update the mapping from ProcID to VirtIO Channel ID each time a DSP
285  * is loaded.
286  */
287 Int MultiProc_rprocSetId(UInt16 procId, UInt rprocId);
288 
289 #if defined (__cplusplus)
290 }
291 #endif /* defined (__cplusplus) */
292 
293 #endif /* ti_ipc_MultiProc__include */
UInt16 MultiProc_getNumProcsInCluster(Void)
Gets the number of processors in the cluster.
String MultiProc_getName(UInt16 id)
Gets the name of a processor.
UInt16 MultiProc_getId(String name)
Gets the MultiProc id.
Int MultiProc_setBaseIdOfCluster(UInt16 id)
Sets executing processor's MultiProc cluster base id.
UInt16 MultiProc_getNumProcessors(Void)
Gets the number of processors.
UInt16 MultiProc_self(Void)
Gets executing processor's MultiProc id.
UInt16 MultiProc_getBaseIdOfCluster(Void)
Gets the base MultiProc id of the cluster.
UInt16 * MultiProc_getClusterProcList(Void)
Return the list of processors in the cluster.
Int MultiProc_rprocSetId(UInt16 procId, UInt rprocId)
Int MultiProc_setLocalId(UInt16 id)
Sets executing processor's MultiProc id.
Copyright 2015, Texas Instruments Incorporated