PatchworkOS
Loading...
Searching...
No Matches
token.h File Reference
#include <kernel/acpi/aml/encoding/term.h>
#include <kernel/acpi/aml/state.h>
#include <errno.h>
#include <stdbool.h>
#include <stdint.h>
#include <sys/math.h>

Go to the source code of this file.

Data Structures

struct  aml_token_props_t
 Token Properties. More...
 
struct  aml_token_t
 Token. More...
 

Enumerations

enum  aml_token_num_t {
  AML_NULL_NAME = 0x00 ,
  AML_ZERO_OP = 0x00 ,
  AML_ONE_OP = 0x01 ,
  AML_ALIAS_OP = 0x06 ,
  AML_NAME_OP = 0x08 ,
  AML_BYTE_PREFIX = 0x0A ,
  AML_WORD_PREFIX = 0x0B ,
  AML_DWORD_PREFIX = 0x0C ,
  AML_STRING_PREFIX = 0x0D ,
  AML_QWORD_PREFIX = 0x0E ,
  AML_SCOPE_OP = 0x10 ,
  AML_BUFFER_OP = 0x11 ,
  AML_PACKAGE_OP = 0x12 ,
  AML_VAR_PACKAGE_OP = 0x13 ,
  AML_METHOD_OP = 0x14 ,
  AML_EXTERNAL_OP = 0x15 ,
  AML_DUAL_NAME_PREFIX = 0x2E ,
  AML_MULTI_NAME_PREFIX = 0x2F ,
  AML_DIGIT_CHAR_0 = 0x30 ,
  AML_DIGIT_CHAR_1 = 0x31 ,
  AML_DIGIT_CHAR_2 = 0x32 ,
  AML_DIGIT_CHAR_3 = 0x33 ,
  AML_DIGIT_CHAR_4 = 0x34 ,
  AML_DIGIT_CHAR_5 = 0x35 ,
  AML_DIGIT_CHAR_6 = 0x36 ,
  AML_DIGIT_CHAR_7 = 0x37 ,
  AML_DIGIT_CHAR_8 = 0x38 ,
  AML_DIGIT_CHAR_9 = 0x39 ,
  AML_NAME_CHAR_A = 0x41 ,
  AML_NAME_CHAR_B = 0x42 ,
  AML_NAME_CHAR_C = 0x43 ,
  AML_NAME_CHAR_D = 0x44 ,
  AML_NAME_CHAR_E = 0x45 ,
  AML_NAME_CHAR_F = 0x46 ,
  AML_NAME_CHAR_G = 0x47 ,
  AML_NAME_CHAR_H = 0x48 ,
  AML_NAME_CHAR_I = 0x49 ,
  AML_NAME_CHAR_J = 0x4A ,
  AML_NAME_CHAR_K = 0x4B ,
  AML_NAME_CHAR_L = 0x4C ,
  AML_NAME_CHAR_M = 0x4D ,
  AML_NAME_CHAR_N = 0x4E ,
  AML_NAME_CHAR_O = 0x4F ,
  AML_NAME_CHAR_P = 0x50 ,
  AML_NAME_CHAR_Q = 0x51 ,
  AML_NAME_CHAR_R = 0x52 ,
  AML_NAME_CHAR_S = 0x53 ,
  AML_NAME_CHAR_T = 0x54 ,
  AML_NAME_CHAR_U = 0x55 ,
  AML_NAME_CHAR_V = 0x56 ,
  AML_NAME_CHAR_W = 0x57 ,
  AML_NAME_CHAR_X = 0x58 ,
  AML_NAME_CHAR_Y = 0x59 ,
  AML_NAME_CHAR_Z = 0x5A ,
  AML_EXT_OP_PREFIX = 0x5B ,
  AML_ROOT_CHAR = 0x5C ,
  AML_PARENT_PREFIX_CHAR = 0x5E ,
  AML_NAME_CHAR = 0x5F ,
  AML_LOCAL0_OP = 0x60 ,
  AML_LOCAL1_OP = 0x61 ,
  AML_LOCAL2_OP = 0x62 ,
  AML_LOCAL3_OP = 0x63 ,
  AML_LOCAL4_OP = 0x64 ,
  AML_LOCAL5_OP = 0x65 ,
  AML_LOCAL6_OP = 0x66 ,
  AML_LOCAL7_OP = 0x67 ,
  AML_ARG0_OP = 0x68 ,
  AML_ARG1_OP = 0x69 ,
  AML_ARG2_OP = 0x6A ,
  AML_ARG3_OP = 0x6B ,
  AML_ARG4_OP = 0x6C ,
  AML_ARG5_OP = 0x6D ,
  AML_ARG6_OP = 0x6E ,
  AML_STORE_OP = 0x70 ,
  AML_REF_OF_OP = 0x71 ,
  AML_ADD_OP = 0x72 ,
  AML_CONCAT_OP = 0x73 ,
  AML_SUBTRACT_OP = 0x74 ,
  AML_INCREMENT_OP = 0x75 ,
  AML_DECREMENT_OP = 0x76 ,
  AML_MULTIPLY_OP = 0x77 ,
  AML_DIVIDE_OP = 0x78 ,
  AML_SHIFT_LEFT_OP = 0x79 ,
  AML_SHIFT_RIGHT_OP = 0x7A ,
  AML_AND_OP = 0x7B ,
  AML_NAND_OP = 0x7C ,
  AML_OR_OP = 0x7D ,
  AML_NOR_OP = 0x7E ,
  AML_XOR_OP = 0x7F ,
  AML_NOT_OP = 0x80 ,
  AML_FIND_SET_LEFT_BIT_OP = 0x81 ,
  AML_FIND_SET_RIGHT_BIT_OP = 0x82 ,
  AML_DEREF_OF_OP = 0x83 ,
  AML_CONCAT_RES_OP = 0x84 ,
  AML_MOD_OP = 0x85 ,
  AML_NOTIFY_OP = 0x86 ,
  AML_SIZE_OF_OP = 0x87 ,
  AML_INDEX_OP = 0x88 ,
  AML_MATCH_OP = 0x89 ,
  AML_CREATE_DWORD_FIELD_OP = 0x8A ,
  AML_CREATE_WORD_FIELD_OP = 0x8B ,
  AML_CREATE_BYTE_FIELD_OP = 0x8C ,
  AML_CREATE_BIT_FIELD_OP = 0x8D ,
  AML_OBJECT_TYPE_OP = 0x8E ,
  AML_CREATE_QWORD_FIELD_OP = 0x8F ,
  AML_LAND_OP = 0x90 ,
  AML_LOR_OP = 0x91 ,
  AML_LNOT_OP = 0x92 ,
  AML_LEQUAL_OP = 0x93 ,
  AML_LGREATER_OP = 0x94 ,
  AML_LLESS_OP = 0x95 ,
  AML_TO_BUFFER_OP = 0x96 ,
  AML_TO_DECIMAL_STRING_OP = 0x97 ,
  AML_TO_HEX_STRING_OP = 0x98 ,
  AML_TO_INTEGER_OP = 0x99 ,
  AML_TO_STRING_OP = 0x9C ,
  AML_COPY_OBJECT_OP = 0x9D ,
  AML_MID_OP = 0x9E ,
  AML_CONTINUE_OP = 0x9F ,
  AML_IF_OP = 0xA0 ,
  AML_ELSE_OP = 0xA1 ,
  AML_WHILE_OP = 0xA2 ,
  AML_NOOP_OP = 0xA3 ,
  AML_RETURN_OP = 0xA4 ,
  AML_BREAK_OP = 0xA5 ,
  AML_BREAK_POINT_OP = 0xCC ,
  AML_ONES_OP = 0xFF ,
  AML_EXT_OP_PREFIX_BASE = 0x100 ,
  AML_MUTEX_OP = AML_EXT_OP_PREFIX_BASE + 0x01 ,
  AML_EVENT_OP = AML_EXT_OP_PREFIX_BASE + 0x02 ,
  AML_COND_REF_OF_OP = AML_EXT_OP_PREFIX_BASE + 0x12 ,
  AML_CREATE_FIELD_OP = AML_EXT_OP_PREFIX_BASE + 0x13 ,
  AML_LOAD_TABLE_OP = AML_EXT_OP_PREFIX_BASE + 0x1F ,
  AML_LOAD_OP = AML_EXT_OP_PREFIX_BASE + 0x20 ,
  AML_STALL_OP = AML_EXT_OP_PREFIX_BASE + 0x21 ,
  AML_SLEEP_OP = AML_EXT_OP_PREFIX_BASE + 0x22 ,
  AML_ACQUIRE_OP = AML_EXT_OP_PREFIX_BASE + 0x23 ,
  AML_SIGNAL_OP = AML_EXT_OP_PREFIX_BASE + 0x24 ,
  AML_WAIT_OP = AML_EXT_OP_PREFIX_BASE + 0x25 ,
  AML_RESET_OP = AML_EXT_OP_PREFIX_BASE + 0x26 ,
  AML_RELEASE_OP = AML_EXT_OP_PREFIX_BASE + 0x27 ,
  AML_FROM_BCD_OP = AML_EXT_OP_PREFIX_BASE + 0x28 ,
  AML_TO_BCD_OP = AML_EXT_OP_PREFIX_BASE + 0x29 ,
  AML_RESERVED_OP = AML_EXT_OP_PREFIX_BASE + 0x2A ,
  AML_REVISION_OP = AML_EXT_OP_PREFIX_BASE + 0x30 ,
  AML_DEBUG_OP = AML_EXT_OP_PREFIX_BASE + 0x31 ,
  AML_FATAL_OP = AML_EXT_OP_PREFIX_BASE + 0x32 ,
  AML_TIMER_OP = AML_EXT_OP_PREFIX_BASE + 0x33 ,
  AML_OPREGION_OP = AML_EXT_OP_PREFIX_BASE + 0x80 ,
  AML_FIELD_OP = AML_EXT_OP_PREFIX_BASE + 0x81 ,
  AML_DEVICE_OP = AML_EXT_OP_PREFIX_BASE + 0x82 ,
  AML_DEPRECATED_PROCESSOR_OP = AML_EXT_OP_PREFIX_BASE + 0x83 ,
  AML_POWER_RES_OP = AML_EXT_OP_PREFIX_BASE + 0x84 ,
  AML_THERMAL_ZONE_OP = AML_EXT_OP_PREFIX_BASE + 0x85 ,
  AML_INDEX_FIELD_OP = AML_EXT_OP_PREFIX_BASE + 0x86 ,
  AML_BANK_FIELD_OP = AML_EXT_OP_PREFIX_BASE + 0x87 ,
  AML_DATA_REGION_OP = AML_EXT_OP_PREFIX_BASE + 0x88 ,
  AML_LNOT_OP_BASE = 0x200 ,
  AML_LNOT_EQUAL_OP = AML_LNOT_OP_BASE + 0x93 ,
  AML_LLESS_EQUAL_OP = AML_LNOT_OP_BASE + 0x94 ,
  AML_LGREATER_EQUAL_OP = AML_LNOT_OP_BASE + 0x95 ,
  AML_UNKNOWN_TOKEN = 0x2FE ,
  AML_MAX_TOKEN = 0x2FF
}
 Token numbers. More...
 
enum  aml_encoding_group_t {
  AML_ENCODING_GROUP_NONE ,
  AML_ENCODING_GROUP_DATA ,
  AML_ENCODING_GROUP_TERM ,
  AML_ENCODING_GROUP_NAME ,
  AML_ENCODING_GROUP_LOCAL ,
  AML_ENCODING_GROUP_ARG ,
  AML_ENCODING_GROUP_DEBUG
}
 
enum  aml_token_type_t {
  AML_TOKEN_TYPE_NONE = 0 ,
  AML_TOKEN_TYPE_NAME ,
  AML_TOKEN_TYPE_NAMESPACE_MODIFIER ,
  AML_TOKEN_TYPE_NAMED ,
  AML_TOKEN_TYPE_STATEMENT ,
  AML_TOKEN_TYPE_EXPRESSION ,
  AML_TOKEN_TYPE_ARG ,
  AML_TOKEN_TYPE_LOCAL ,
  AML_TOKEN_TYPE_COMPUTATIONAL ,
  AML_TOKEN_TYPE_DEBUG
}
 Token Type. More...
 

Functions

const char * aml_token_type_to_string (aml_token_type_t type)
 Convert a token type to a string.
 
static const aml_token_props_taml_token_lookup (aml_token_num_t num)
 Lookup token properties.
 
static void aml_token_peek (aml_term_list_ctx_t *ctx, aml_token_t *out)
 Attempt to read a token from the AML stream, without advancing the instruction pointer.
 
static void aml_token_read (aml_term_list_ctx_t *ctx, aml_token_t *out)
 Attempt to read a token from the AML stream.
 
static uint64_t aml_token_expect (aml_term_list_ctx_t *ctx, aml_token_num_t expected)
 Reads a token from the AML stream and verifies it matches the expected token.
 

Variables

const aml_token_props_t amlTokenProps [AML_MAX_TOKEN]
 Token properties array indexed by aml_token_num_t.