1 2 3 4 5 6 7 8 9 10 11 12
13 14 15
16
17 import xdc.runtime.IGateProvider;
18
19 /*!
20 * ======== GateH ========
21 * Provides APIs to protect critical sections when an IGate.Handle is
22 * available.
23 *
24 * An application can isolate itself from IGate implementations by using
25 * this module. The application must first obtain an IGate.Handle.
26 * It can get such a handle by directly calling {@link GateThread#create} or
27 * {@link GateProcess#create}. Then the application can use the generic
28 * APIs provided by this module.
29 *
30 * The underlying gates are nexting in nature and users have to leave
31 * the gate as many times as they entered it.
32 */
33
34 module GateH
35 {
36 /*!
37 * Proxy used for optimization.
38 *
39 * If ALL IGateProvider.Handles used by GateH are created using the same
40 * module (e.g GateProcess) then setting this Proxy to GateProcess and
41 * setting GateH.Proxy.abstractInstances$ = false, causes
42 * GateH APIs can have better performance.
43 */
44 proxy Proxy inherits IGateProvider;
45
46 /*!
47 * ======== enter ========
48 * Enter a gate
49 *
50 * @param(hdl) IGateProvider.Handle
51 * @a(returns) key
52 */
53 IArg enter(IGateProvider.Handle hdl);
54
55 /*!
56 * ======== leave ========
57 * Leave a gate
58 *
59 * @param(hdl) IGateProvider.Handle
60 * @param(key) key returned by enter();
61 */
62 Void leave(IGateProvider.Handle hdl, IArg key);
63 }
64 65 66
67