1    /* 
     2     *  Copyright (c) 2008 Texas Instruments. All rights reserved. 
     3     *  This program and the accompanying materials are made available under the 
     4     *  terms of the Eclipse Public License v1.0 and Eclipse Distribution License
     5     *  v. 1.0 which accompanies this distribution. The Eclipse Public License is
     6     *  available at http://www.eclipse.org/legal/epl-v10.html and the Eclipse
     7     *  Distribution License is available at 
     8     *  http://www.eclipse.org/org/documents/edl-v10.php.
     9     *
    10     *  Contributors:
    11     *      Texas Instruments - initial implementation
    12     * */
    13    /*
    14     *  ======== GateH.xdc ========
    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     *  @(#) xdc.runtime.knl; 1, 0, 0,181; 2-10-2012 10:18:54; /db/ztree/library/trees/xdc/xdc-y21x/src/packages/
    66     */
    67