]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ipc/ipcdev.git/blob - packages/ti/ipc/namesrv/NameServerRemoteRpmsg.xdc
Change NameServer_get to ignore 'remote get' timeouts in BIOS
[ipc/ipcdev.git] / packages / ti / ipc / namesrv / NameServerRemoteRpmsg.xdc
1 /*
2  * Copyright (c) 2012-2013, Texas Instruments Incorporated
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  */
32 /*
33  *  ======== NameServerRemoteRpmsg.xdc ========
34  */
36 import xdc.runtime.Assert;
38 import ti.sysbios.knl.Semaphore;
39 import ti.sysbios.gates.GateMutex;
40 import ti.sdo.utils.INameServerRemote;
42 /*
43  *  Used by NameServer to communicate to remote processors.
44  *
45  *  This module is used by {@link ti.sdo.utils.NameServer} to communicate
46  *  to remote processors using {@link ti.sdo.ipc.MessageQ}.
47  *  There needs to be one instance between each two cores in the system.
48  *  Interrupts must be enabled before using this module.
49  *
50  *  This NameServerRemote is tied to the TransportRpmsg transport, mainly
51  *  used beteen a Linux host and a BIOS core acting as slave.
52  */
54 @InstanceFinalize
56 module NameServerRemoteRpmsg inherits ti.sdo.utils.INameServerRemote
57 {
59     /*!
60      *  ======== timeoutInMicroSecs ========
61      *  The timeout value in terms of microseconds
62      *
63      *  A NameServer request will return after this amout of time
64      *  without a response. The default timeout value is 1 s.
65      *  To not wait, use the value of '0'.  To wait forever, use '~(0)'.
66      */
67     config UInt timeoutInMicroSecs = 1000000;
69     /*!
70      *  Assert raised if too many characters in the name
71      */
72     config Assert.Id A_nameIsTooLong = {
73         msg: "Too many characters in name"
74     };
76 internal:
78     /*
79      *  ======== timeout ========
80      *  The timeout value to pass into Semaphore_pend
81      *
82      *  This value is calculated based on timeoutInMicroSecs and the
83      *  SYSBIOS clock.tickPeriod.
84      */
85     config UInt timeout;
87     /*!
88      *  ======== Type ========
89      *  The type of the message
90      */
91     enum Type {
92         REQUEST =  0,
93         RESPONSE = 1
94     };
96     struct Instance_State {
97         UInt16              remoteProcId; /* remote MultiProc id            */
98     };
100     /* Module state */
101     struct Module_State {
102         Semaphore.Handle    semRemoteWait;  /* sem to wait on remote proc    */
103         GateMutex.Handle    gateMutex;      /* gate to protect critical code */
104         Ptr                 nsMsg;          /* pointer to NameServer msg     */
105         Int                 nsPort;         /* Name Server port rpmsg addr   */
106     };