Home | History | Annotate | Line # | Download | only in acpihelp
ahaslops.c revision 1.1.1.2
      1 /******************************************************************************
      2  *
      3  * Module Name: ahaslops - Table of all known ASL operators
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2013, Intel Corp.
      9  * All rights reserved.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions, and the following disclaimer,
     16  *    without modification.
     17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  *    including a substantially similar Disclaimer requirement for further
     21  *    binary redistribution.
     22  * 3. Neither the names of the above-listed copyright holders nor the names
     23  *    of any contributors may be used to endorse or promote products derived
     24  *    from this software without specific prior written permission.
     25  *
     26  * Alternatively, this software may be distributed under the terms of the
     27  * GNU General Public License ("GPL") version 2 as published by the Free
     28  * Software Foundation.
     29  *
     30  * NO WARRANTY
     31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  * POSSIBILITY OF SUCH DAMAGES.
     42  */
     43 
     44 #include "acpihelp.h"
     45 
     46 /*
     47  * ASL operators with syntax (directly from ACPI specification).
     48  * Note: All tokens require a space separator.
     49  * Long lines are automatically split during output.
     50  */
     51 const AH_ASL_OPERATOR       AslOperatorInfo[] =
     52 {
     53     {"AccessAs",                "(AccessType, AccessAttribKeyword | "
     54                                 "ExtendedAttribKeyword (AccessLength))",
     55                                 "ChangeFieldUnitAccess"},
     56     {"Acquire",                 "(SyncObject, TimeoutValue) => Boolean",
     57                                 "Acquire a mutex"},
     58     {"Add",                     "(Addend1, Addend2, Result) => Integer",
     59                                 "Integer Add"},
     60     {"Alias",                   "(SourceObject, AliasObject)",
     61                                 "Define a name alias"},
     62     {"And",                     "(Source1, Source2, Result) => Integer",
     63                                 "Integer Bitwise And"},
     64     {"Arg",                     "Arg0 - Arg6",
     65                                 "Method argument data objects"},
     66     {"BankField",               "(RegionName, BankName, BankValue, "
     67                                 "AccessTypeKeyword, LockRuleKeyword, "
     68                                 "UpdateRuleKeyword) {FieldUnitList}",
     69                                 "Declare fields in a banked configuration object"},
     70     {"Break",                   "No parameters",
     71                                 "Continue following the innermost enclosing While"},
     72     {"BreakPoint",              "No parameters",
     73                                 "Used for debugging, stops execution in the debugger"},
     74     {"Buffer",                  "(BufferSize) {String or ByteList} => Buffer",
     75                                 "Declare Buffer object"},
     76     {"Case",                    "(Value) {TermList}",
     77                                 "Expression for conditional execution"},
     78     {"Concatenate",             "(Source1, Source2, Result) => ComputationalData",
     79                                 "Concatenate two strings, integers or buffers"},
     80     {"ConcatenateResTemplate",  "(Source1, Source2, Result) => Buffer",
     81                                 "Concatenate two resource templates"},
     82     {"CondRefOf",               "(Source, Result) => Boolean",
     83                                 "Conditional reference to an object"},
     84     {"Connection",              "(ResourceMacro)",
     85                                 "Associate connection with FieldUnits within a Field object"},
     86     {"Continue",                "No parameters",
     87                                 "Continue innermost enclosing While loop"},
     88     {"CopyObject",              "(Source, Destination) => DataRefObject",
     89                                 "Copy and existing object"},
     90     {"CreateBitField",          "(SourceBuffer, BitIndex, BitFieldName)",
     91                                 "Declare a bit field object of a buffer object"},
     92     {"CreateByteField",         "(SourceBuffer, ByteIndex, ByteFieldName)",
     93                                 "Declare a byte field object of a buffer object"},
     94     {"CreateDWordField",        "(SourceBuffer, ByteIndex, DWordFieldName)",
     95                                 "Declare a DWord field object of a buffer object"},
     96     {"CreateField",             "(SourceBuffer, BitIndex, NumBits, FieldName)",
     97                                 "Declare an arbitrary length bit field of a buffer object"},
     98     {"CreateQWordField",        "(SourceBuffer, ByteIndex, QWordFieldName)",
     99                                 "Declare a QWord field object of a buffer object"},
    100     {"CreateWordField",         "(SourceBuffer, ByteIndex, WordFieldName)",
    101                                 "Declare a Word field object of a buffer object"},
    102     {"DataTableRegion",         "(RegionName, SignatureString, OemIDString, OemTableIDString)",
    103                                 "Declare a Data Table Region"},
    104     {"Debug",                   "No parameters",
    105                                 "Debugger output"},
    106     {"Decrement",               "(Minuend) => Integer",
    107                                 "Decrement an Integer"},
    108     {"Default",                 "{TermList}",
    109                                 "Default execution path in Switch()"},
    110     {"DefinitionBlock",         "(AmlFileName, TableSignature, ComplianceRevision, "
    111                                 "OemId, TableId, OemRevision) {TermList}",
    112                                 "Declare a Definition Block"},
    113     {"DerefOf",                 "(Source) => Object",
    114                                 "Dereference an object reference"},
    115     {"Device",                  "(DeviceName) {ObjectList}",
    116                                 "Declare a bus/device object"},
    117     {"Divide",                  "(Dividend, Divisor, Remainder, Result) => Integer",
    118                                 "Integer Divide"},
    119     {"DMA",                     "(DmaTypeKeyword, BusMasterKeyword, XferTypeKeyword, "
    120                                 "DescriptorName) {DmaChannelList} => Buffer",
    121                                 "DMA Resource Descriptor macro"},
    122     {"DWordIO",                 "(ResourceTypeKeyword, MinKeyword, MaxKeyword, "
    123                                 "DecodeKeyword, RangeTypeKeyword, AddressGranularity, "
    124                                 "AddressMinimum, AddressMaximum, AddressTranslation, "
    125                                 "RangeLength, ResourceSourceIndex, "
    126                                 "ResourceSource, DescriptorName, TypeKeyword, TranslationKeyword)",
    127                                 "DWord IO Resource Descriptor macro"},
    128     {"DWordMemory",             "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, "
    129                                 "MaxKeyword, MemTypeKeyword, ReadWriteKeyword, "
    130                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    131                                 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName, AddressKeyword, "
    132                                 "TypeKeyword)",
    133                                 "DWord Memory Resource Descriptor macro"},
    134     {"DWordSpace",              "(ResourceType, ResourceTypeKeyword, DecodeKeyword, "
    135                                 "MinKeyword, MaxKeyword, TypeSpecificFlags, "
    136                                 "AddressGranularity, AddressMinimum, AddressMaximum, "
    137                                 "AddressTranslation, RangeLength, "
    138                                 "ResourceSourceIndex, ResourceSource, DescriptorName)",
    139                                 "DWord Space Resource Descriptor macro"},
    140     {"EISAID",                  "(EisaIdString) => DWordConst",
    141                                 "EISA ID String to Integer conversion macro"},
    142     {"Else",                    "{TermList}",
    143                                 "Alternate conditional execution"},
    144     {"ElseIf",                  "(Predicate)",
    145                                 "Conditional execution"},
    146     {"EndDependentFn",          "() => Buffer",
    147                                 "End Dependent Function Resource Descriptor macro"},
    148     {"Event",                   "(EventName)",
    149                                 "Declare an event synchronization object"},
    150     {"ExtendedIO",              "(ResourceTypeKeyword, MinKeyword, MaxKeyword, "
    151                                 "DecodeKeyword, RangeTypeKeyword, AddressGranularity, "
    152                                 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, "
    153                                 "TypeSpecificAttributes, DescriptorName, TypeKeyword, TranslationKeyword)",
    154                                 "Extended IO Resource Descriptor macro"},
    155     {"ExtendedMemory",          "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, "
    156                                 "MaxKeyword, MemTypeKeyword, ReadWriteKeyword, "
    157                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    158                                 "RangeLength, TypeSpecificAttributes, DescriptorName, "
    159                                 "AddressKeyword, TypeKeyword)",
    160                                 "Extended Memory Resource Descriptor macro"},
    161     {"ExtendedSpace",           "(ResourceType, ResourceTypeKeyword, DecodeKeyword, "
    162                                 "MinKeyword, MaxKeyword, TypeSpecificFlags, "
    163                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    164                                 "RangeLength, TypeSpecificAttributes, DescriptorName)",
    165                                 "Extended Space Resource Descriptor macro"},
    166     {"External",                "(ObjectName, ObjectTypeKeyword, ReturnType, ParameterTypes)",
    167                                 "Declare external objects"},
    168     {"Fatal",                   "(Type, Code, Arg)",
    169                                 "Fatal error check"},
    170     {"Field",                   "(RegionName, AccessTypeKeyword, LockRuleKeyword, "
    171                                 "UpdateRuleKeyword) {FieldUnitList}",
    172                                 "Declare fields of an operation region object"},
    173     {"FindSetLeftBit",          "(Source, Result) => Integer",
    174                                 "Index of first least significant bit set"},
    175     {"FindSetRightBit",         "(Source, Result) => Integer",
    176                                 "Index of first most significant bit set"},
    177     {"FixedDMA",                "(DmaRequestLine, Channel, TransferWidthKeyword, DescriptorName) => Buffer",
    178                                 "Fixed DMA Resource Descriptor macro"},
    179     {"FixedIO",                 "(AddressBase, RangeLength, DescriptorName) => Buffer",
    180                                 "Fixed I/O Resource Descriptor macro"},
    181     {"FromBCD",                 "(BCDValue, Result) => Integer",
    182                                 "Convert from BCD to numeric"},
    183     {"Function",                "(FunctionName, ReturnType, ParameterTypes) {TermList}",
    184                                 "Declare control method"},
    185     {"GpioInt",                 "(InterruptTypeKeyword, InterruptLevelKeyword, "
    186                                 "ShareTypeKeyword, PinConfigKeyword, "
    187                                 "DebounceTimeout, ResourceSource, "
    188                                 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, "
    189                                 "RawDataBuffer() {VendorData}) {Pin}",
    190                                 "GPIO Interrupt Connection Resource Descriptor Macro"},
    191     {"GpioIo",                  "(ShareTypeKeyword, PinConfigKeyword, DebounceTimeout, DriveStrength, "
    192                                 "IoRestrictionKeyword, ResourceSource, "
    193                                 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, "
    194                                 "RawDataBuffer() {VendorData}) {PinList}",
    195                                 "GPIO I/O Connection Resource Descriptor Macro"},
    196     {"I2cSerialBus",            "(SlaveAddress, SlaveModeKeyword, ConnectionSpeed, "
    197                                 "AddressingModeKeyword, ResourceSource, "
    198                                 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, "
    199                                 "RawDataBuffer() {VendorData})",
    200                                 "I2C Serial Bus Connection Resource Descriptor Macro"},
    201     {"If",                      "(Predicate) {TermList}",
    202                                 "Conditional execution"},
    203     {"Include",                 "(FilePathName)",
    204                                 "Include another ASL file"},
    205     {"Increment",               "(Addend) => Integer",
    206                                 "Increment a Integer"},
    207     {"Index",                   "(Source, Index, Destination) => ObjectReference",
    208                                 "Indexed Reference to member object"},
    209     {"IndexField",              "(IndexName, DataName, AccessTypeKeyword, LockRuleKeyword, "
    210                                 "UpdateRuleKeyword) {FieldUnitList}",
    211                                 "Declare Index/Data Fields"},
    212     {"Interrupt",               "(ResourceTypeKeyword, InterruptTypeKeyword, InterruptLevelKeyword, "
    213                                 "ShareTypeKeyword, ResourceSourceIndex, "
    214                                 "ResourceSource, DescriptorName) {InterruptList} => Buffer",
    215                                 "Interrupt Resource Descriptor macro"},
    216     {"IO",                      "(IoDecodeKeyword, AddressMin, AddressMax, AddressAlignment, "
    217                                 "RangeLength, DescriptorName) => Buffer",
    218                                 "IO Resource Descriptor macro"},
    219     {"IRQ",                     "(InterruptTypeKeyword, InterruptLevelKeyword, ShareTypeKeyword, "
    220                                 "DescriptorName) {InterruptList} => Buffer",
    221                                 "Interrupt Resource Descriptor macro"},
    222     {"IRQNoFlags",              "(DescriptorName) {InterruptList} => Buffer",
    223                                 "Short Interrupt Resource Descriptor macro"},
    224     {"LAnd",                    "(Source1, Source2) => Boolean",
    225                                 "Logical And"},
    226     {"LEqual",                  "(Source1, Source2) => Boolean",
    227                                 "Logical Equal"},
    228     {"LGreater",                "(Source1, Source2) => Boolean",
    229                                 "Logical Greater"},
    230     {"LGreaterEqual",           "(Source1, Source2) => Boolean",
    231                                 "Logical Not less"},
    232     {"LLess",                   "(Source1, Source2) => Boolean",
    233                                 "Logical Less"},
    234     {"LLessEqual",              "(Source1, Source2) => Boolean",
    235                                 "Logical Not greater"},
    236     {"LNot",                    "(Source) => Boolean",
    237                                 "Logical Not"},
    238     {"LNotEqual",               "(Source1, Source2) => Boolean",
    239                                 "Logical Not equal"},
    240     {"Load",                    "(Object, DDBHandle)",
    241                                 "Load differentiating definition block"},
    242     {"LoadTable",               "(SignatureString, OemIdString, OemTableIdString, RootPathString, "
    243                                 "ParameterPathString, ParameterData) => DDBHandle",
    244                                 "Load Table from RSDT/XSDT"},
    245     {"Local",                   "Local0 - Local7",
    246                                 "Method local data objects"},
    247     {"LOr",                     "(Source1, Source2) => Boolean",
    248                                 "Logical Or"},
    249     {"Match",                   "(SearchPackage, MatchOpKeyword, MatchObject1, MatchOpKeyword, "
    250                                 "MatchObject2, StartIndex) => Ones | Integer",
    251                                 "Search for match in package array"},
    252     {"Memory24",                "(ReadWriteKeyword, AddressMinimum, AddressMaximum, AddressAlignment, "
    253                                 "RangeLength, DescriptorName)",
    254                                 "Memory Resource Descriptor macro"},
    255     {"Memory32",                "(ReadWriteKeyword, AddressMinimum, AddressMaximum, AddressAlignment, "
    256                                 "RangeLength, DescriptorName)",
    257                                 "Memory Resource Descriptor macro"},
    258     {"Memory32Fixed",           "(ReadWriteKeyword, AddressBase, RangeLength, DescriptorName)",
    259                                 "Memory Resource Descriptor macro"},
    260     {"Method",                  "(MethodName, NumArgs, SerializeRuleKeyword, "
    261                                 "SyncLevel, ReturnType, ParameterTypes) "
    262                                 "{TermList}",
    263                                 "Declare a control method"},
    264     {"Mid",                     "(Source, Index, Length, Result) => Buffer or String",
    265                                 "Return a portion of buffer or string"},
    266     {"Mod",                     "(Dividend, Divisor, Result) => Integer",
    267                                 "Integer Modulo"},
    268     {"Multiply",                "(Multiplicand, Multiplier, Result) => Integer",
    269                                 "Integer Multiply"},
    270     {"Mutex",                   "(MutexName, SyncLevel)",
    271                                 "Declare a mutex synchronization object"},
    272     {"Name",                    "(ObjectName, Object)",
    273                                 "Declare a Named object"},
    274     {"NAnd",                    "(Source1, Source2, Result) => Integer",
    275                                 "Integer Bitwise Nand"},
    276     {"NoOp",                    "No parameters",
    277                                 "No operation"},
    278     {"NOr",                     "(Source1, Source2, Result) => Integer",
    279                                 "Integer Bitwise Nor"},
    280     {"Not",                     "(Source, Result) => Integer",
    281                                 "Integer Bitwise Not"},
    282     {"Notify",                  "(Object, NotificationValue)",
    283                                 "Notify Object of event"},
    284     {"ObjectType",              "(Object) => Integer",
    285                                 "Type of object"},
    286     {"Offset",                  "(ByteOffset)",
    287                                 "Change Current Field Unit Offset"},
    288     {"One",                     "=> Integer",
    289                                 "Constant One Object (1)"},
    290     {"Ones",                    "=> Integer",
    291                                 "Constant Ones Object (0xFFFFFFFF or 0xFFFFFFFFFFFFFFFF)"},
    292     {"OperationRegion",         "(RegionName, RegionSpaceKeyword, Offset, Length)",
    293                                 "Declare an operational region"},
    294     {"Or",                      "(Source1, Source2, Result) => Integer",
    295                                 "Integer Bitwise Or"},
    296     {"Package",                 "(NumElements) {PackageList} => Package",
    297                                 "Declare a package object"},
    298     {"PowerResource",           "(ResourceName, SystemLevel, ResourceOrder) {ObjectList}",
    299                                 "Declare a power resource object"},
    300     {"Processor",               "(ProcessorName, ProcessorID, PBlockAddress, PblockLength) {ObjectList}",
    301                                 "Declare a processor package"},
    302     {"QWordIO",                 "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, "
    303                                 "RangeTypeKeyword, AddressGranularity, "
    304                                 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, "
    305                                 "ResourceSourceIndex, ResourceSource, DescriptorName, TypeKeyword, "
    306                                 "TranslationKeyword)",
    307                                 "QWord IO Resource Descriptor macro"},
    308     {"QWordMemory",             "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, MaxKeyword, "
    309                                 "MemTypeKeyword, ReadWriteKeyword, "
    310                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    311                                 "RangeLength, ResourceSourceIndex, ResourceSource, "
    312                                 "DescriptorName, AddressKeyword, "
    313                                 "TypeKeyword)",
    314                                 "QWord Memory Resource Descriptor macro"},
    315     {"QWordSpace",              "(ResourceType, ResourceTypeKeyword, DecodeKeyword, "
    316                                 "MinKeyword, MaxKeyword, TypeSpecificFlags, "
    317                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    318                                 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName)",
    319                                 "Qword Space Resource Descriptor macro"},
    320     {"RawDataBuffer",           "(BufferSize) {ByteList} => RawDataBuffer",
    321                                 "Create a raw data buffer (does not use Buffer AML opcode)"},
    322     {"RefOf",                   "(Object) => ObjectReference",
    323                                 "Create Reference to an object"},
    324     {"Register",                "(AddressSpaceKeyword, RegisterBitWidth, "
    325                                 "RegisterBitOffset, RegisterAddress, "
    326                                 "AccessSize, DescriptorName)",
    327                                 "Generic register Resource Descriptor macro"},
    328     {"Release",                 "(SyncObject)",
    329                                 "Release a synchronization object"},
    330     {"Reset",                   "(SyncObject)",
    331                                 "Reset a synchronization object"},
    332     {"ResourceTemplate",        "() {ResourceMacroList} => Buffer",
    333                                 "Resource to buffer conversion macro"},
    334     {"Return",                  "None | () | (ReturnArg)",
    335                                 "Return from method execution"},
    336     {"Revision",                "=> Integer",
    337                                 "Constant revision object"},
    338     {"Scope",                   "(Location) {ObjectList}",
    339                                 "Open named scope "},
    340     {"ShiftLeft",               "(Source, ShiftCount, Result) => Integer",
    341                                 "Integer shift value left"},
    342     {"ShiftRight",              "(Source, ShiftCount, Result) => Integer",
    343                                 "Integer shift value right"},
    344     {"Signal",                  "(SyncObject)",
    345                                 "Signal a synchronization object"},
    346     {"SizeOf",                  "(ObjectName) => Integer",
    347                                 "Get the size of a buffer}, string}, or package"},
    348     {"Sleep",                   "(Milliseconds)",
    349                                 "Sleep n milliseconds (yields the processor)"},
    350     {"SpiSerialBus",            "(DeviceSelection, PolarityKeyword, WireModeKeyword, "
    351                                 "DataBitLength, SlaveModeKeyword, "
    352                                 "ConnectionSpeed, ClockPolarityKeyword, ClockPhaseKeyword, "
    353                                 "ResourceSource, ResourceSourceIndex, "
    354                                 "ResourceTypeKeyword, DescriptorName, RawDataBuffer() {VendorData})",
    355                                 "SPI Serial Bus Connection Resource Descriptor Macro"},
    356     {"Stall",                   "(Microseconds)",
    357                                 "Delay n microseconds (does not yield the processor)"},
    358     {"StartDependentFn",        "(CompatibilityPriority, PerformancePriority) {ResourceList}",
    359                                 "Start Dependent Function Resource Descriptor macro"},
    360     {"StartDependentFnNoPri",   "() {ResourceList}",
    361                                 "Start Dependent Function Resource Descriptor macro"},
    362     {"Store",                   "(Source, Destination) => DataRefObject",
    363                                 "Store object"},
    364     {"Subtract",                "(Minuend, Subtrahend, Result) => Integer",
    365                                 "Integer Subtract"},
    366     {"Switch",                  "(Expression) {CaseTermList}",
    367                                 "Select code to execute based on expression value"},
    368     {"ThermalZone",             "(ThermalZoneName) {ObjectList}",
    369                                 "Declare a thermal zone package"},
    370     {"Timer",                   "=> Integer",
    371                                 "Get 64-bit timer value"},
    372     {"ToBCD",                   "(Value, Result) => Integer",
    373                                 "Convert Integer to BCD"},
    374     {"ToBuffer",                "(Data, Result) => Buffer",
    375                                 "Convert data type to buffer"},
    376     {"ToDecimalString",         "(Data, Result) => String",
    377                                 "Convert data type to decimal string"},
    378     {"ToHexString",             "(Data, Result) => String",
    379                                 "Convert data type to hexadecimal string"},
    380     {"ToInteger",               "(Data, Result) => Integer",
    381                                 "Convert data type to integer"},
    382     {"ToString",                "(Source, Length, Result) => String",
    383                                 "Copy ASCII string from buffer"},
    384     {"ToUUID",                  "(AsciiString) => Buffer",
    385                                 "Convert Ascii string to UUID"},
    386     {"UartSerialBus",           "(ConnectionSpeed, ByteLengthKeyword, StopBitsKeyword, "
    387                                 "LinesInUse, EndianKeyword, ParityKeyword, "
    388                                 "FlowControlKeyword, ReceiveBufferSize, TransmitBufferSize, ResourceSource, "
    389                                 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, "
    390                                 "RawDataBuffer() {VendorData})",
    391                                 "UART Serial Bus Connection Resource Descriptor Macro"},
    392     {"Unicode",                 "(String) => Buffer",
    393                                 "String to Unicode conversion macro"},
    394     {"Unload",                  "(Handle)",
    395                                 "Unload definition block"},
    396     {"VendorLong",              "(DescriptorName) {VendorByteList}",
    397                                 "Vendor Resource Descriptor"},
    398     {"VendorShort",             "(DescriptorName) {VendorByteList}",
    399                                 "Vendor Resource Descriptor"},
    400     {"Wait",                    "(SyncObject, TimeoutValue) => Boolean",
    401                                 "Wait on an Event"},
    402     {"While",                   "(Predicate) {TermList}",
    403                                 "Conditional loop"},
    404     {"WordBusNumber",           "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, "
    405                                 "AddressGranularity, AddressMinimum, "
    406                                 "AddressMaximum, AddressTranslation, RangeLength, ResourceSourceIndex, "
    407                                 "ResourceSource, DescriptorName)",
    408                                 "Word Bus number Resource Descriptor macro"},
    409     {"WordIO",                  "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, "
    410                                 "RangeTypeKeyword, AddressGranularity, "
    411                                 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, "
    412                                 "ResourceSourceIndex, ResourceSource, DescriptorName, TypeKeyword, "
    413                                 "TranslationKeyword)",
    414                                 "Word IO Resource Descriptor macro"},
    415     {"WordSpace",               "(ResourceType, ResourceTypeKeyword, DecodeKeyword, MinKeyword, "
    416                                 "MaxKeyword, TypeSpecificFlags, "
    417                                 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, "
    418                                 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName)",
    419                                 "Word Space Resource Descriptor macro"},
    420     {"XOr",                     "(Source1, Source2, Result) => Integer",
    421                                 "Integer Bitwise Xor"},
    422     {"Zero",                    "=> Integer",
    423                                 "Constant Zero object (0)"},
    424     {NULL, NULL, NULL}
    425 };
    426