1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35
36
37 import xdc.rov.ViewInfo;
38 import xdc.runtime.Assert;
39
40 import ti.sysbios.knl.Swi;
41
42 /*!
43 * ======== SyncSwi ========
44 * Implements ISync using Swis
45 *
46 * Module that implements {@link xdc.runtime.knl.ISync} using
47 * {@link ti.sysbios.knl.Swi}
48 *
49 * This module uses {@link ti.sysbios.knl.Swi#post} to implement
50 * {@link xdc.runtime.knl.ISync#signal}
51 * The implementation of {@link xdc.runtime.knl.ISync#wait} is empty and
52 * returns
53 * FALSE for timeout, since Swis are asynchronous in nature.
54 *
55 * Modules like {@link ti.sdo.io.Stream} use an ISync.Handle for
56 * selecting the synchronization mechanism. This allows Stream to be
57 * independent of the synchronization mechanism.
58 *
59 * An instance of SyncSwi requires an Swi.Handle. When given a null
60 * Swi.Handle, SynSwi will assert.
61 */
62
63 module SyncSwi inherits xdc.runtime.knl.ISync
64 {
65
66 /*!
67 * ======== BasicView ========
68 * @_nodoc
69 */
70 metaonly struct BasicView {
71 String label;
72 String SwiHandle;
73 String fxn[];
74 }
75
76 /*!
77 * ======== rovViewInfo ========
78 * @_nodoc
79 */
80 @Facet
81 metaonly config ViewInfo.Instance rovViewInfo =
82 ViewInfo.create({
83 viewMap: [
84 [
85 'Basic',
86 {
87 type: ViewInfo.INSTANCE,
88 viewInitFxn: 'viewInitBasic',
89 structName: 'BasicView'
90 }
91 ],
92 ]
93 });
94
95 /*!
96 * Assert when baseHandle is null
97 */
98 config Assert.Id A_nullHandle = {
99 msg: "A_nullHandle: Null handle passed to create"
100 };
101
102 instance:
103
104 /*!
105 * Swi handle to be used.
106 */
107 config Swi.Handle swi = null;
108
109 internal:
110
111
112 struct Instance_State {
113 Swi.Handle swi;
114 };
115
116 }