acdispat.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:10k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /******************************************************************************
  2.  *
  3.  * Name: acdispat.h - dispatcher (parser to interpreter interface)
  4.  *       $Revision: 45 $
  5.  *
  6.  *****************************************************************************/
  7. /*
  8.  *  Copyright (C) 2000, 2001 R. Byron Moore
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  */
  24. #ifndef _ACDISPAT_H_
  25. #define _ACDISPAT_H_
  26. #define NAMEOF_LOCAL_NTE    "__L0"
  27. #define NAMEOF_ARG_NTE      "__A0"
  28. /* Common interfaces */
  29. acpi_status
  30. acpi_ds_obj_stack_push (
  31. void                    *object,
  32. acpi_walk_state         *walk_state);
  33. acpi_status
  34. acpi_ds_obj_stack_pop (
  35. u32                     pop_count,
  36. acpi_walk_state         *walk_state);
  37. void *
  38. acpi_ds_obj_stack_get_value (
  39. u32                     index,
  40. acpi_walk_state         *walk_state);
  41. acpi_status
  42. acpi_ds_obj_stack_pop_object (
  43. acpi_operand_object     **object,
  44. acpi_walk_state         *walk_state);
  45. /* dsopcode - support for late evaluation */
  46. acpi_status
  47. acpi_ds_get_buffer_field_arguments (
  48. acpi_operand_object     *obj_desc);
  49. acpi_status
  50. acpi_ds_get_region_arguments (
  51. acpi_operand_object     *rgn_desc);
  52. /* dsctrl - Parser/Interpreter interface, control stack routines */
  53. acpi_status
  54. acpi_ds_exec_begin_control_op (
  55. acpi_walk_state         *walk_state,
  56. acpi_parse_object       *op);
  57. acpi_status
  58. acpi_ds_exec_end_control_op (
  59. acpi_walk_state         *walk_state,
  60. acpi_parse_object       *op);
  61. /* dsexec - Parser/Interpreter interface, method execution callbacks */
  62. acpi_status
  63. acpi_ds_get_predicate_value (
  64. acpi_walk_state         *walk_state,
  65. u32                     has_result_obj);
  66. acpi_status
  67. acpi_ds_exec_begin_op (
  68. acpi_walk_state         *walk_state,
  69. acpi_parse_object       **out_op);
  70. acpi_status
  71. acpi_ds_exec_end_op (
  72. acpi_walk_state         *state);
  73. /* dsfield - Parser/Interpreter interface for AML fields */
  74. acpi_status
  75. acpi_ds_create_field (
  76. acpi_parse_object       *op,
  77. acpi_namespace_node     *region_node,
  78. acpi_walk_state         *walk_state);
  79. acpi_status
  80. acpi_ds_create_bank_field (
  81. acpi_parse_object       *op,
  82. acpi_namespace_node     *region_node,
  83. acpi_walk_state         *walk_state);
  84. acpi_status
  85. acpi_ds_create_index_field (
  86. acpi_parse_object       *op,
  87. acpi_namespace_node     *region_node,
  88. acpi_walk_state         *walk_state);
  89. acpi_status
  90. acpi_ds_create_buffer_field (
  91. acpi_parse_object       *op,
  92. acpi_walk_state         *walk_state);
  93. /* dsload - Parser/Interpreter interface, namespace load callbacks */
  94. acpi_status
  95. acpi_ds_load1_begin_op (
  96. acpi_walk_state         *walk_state,
  97. acpi_parse_object       **out_op);
  98. acpi_status
  99. acpi_ds_load1_end_op (
  100. acpi_walk_state         *walk_state);
  101. acpi_status
  102. acpi_ds_load2_begin_op (
  103. acpi_walk_state         *walk_state,
  104. acpi_parse_object       **out_op);
  105. acpi_status
  106. acpi_ds_load2_end_op (
  107. acpi_walk_state         *walk_state);
  108. acpi_status
  109. acpi_ds_init_callbacks (
  110. acpi_walk_state         *walk_state,
  111. u32                     pass_number);
  112. /* dsmthdat - method data (locals/args) */
  113. acpi_status
  114. acpi_ds_store_object_to_local (
  115. u16                     opcode,
  116. u32                     index,
  117. acpi_operand_object     *src_desc,
  118. acpi_walk_state         *walk_state);
  119. acpi_status
  120. acpi_ds_method_data_get_entry (
  121. u16                     opcode,
  122. u32                     index,
  123. acpi_walk_state         *walk_state,
  124. acpi_operand_object     ***node);
  125. acpi_status
  126. acpi_ds_method_data_delete_all (
  127. acpi_walk_state         *walk_state);
  128. u8
  129. acpi_ds_is_method_value (
  130. acpi_operand_object     *obj_desc);
  131. acpi_object_type8
  132. acpi_ds_method_data_get_type (
  133. u16                     opcode,
  134. u32                     index,
  135. acpi_walk_state         *walk_state);
  136. acpi_status
  137. acpi_ds_method_data_get_value (
  138. u16                     opcode,
  139. u32                     index,
  140. acpi_walk_state         *walk_state,
  141. acpi_operand_object     **dest_desc);
  142. acpi_status
  143. acpi_ds_method_data_delete_value (
  144. u16                     opcode,
  145. u32                     index,
  146. acpi_walk_state         *walk_state);
  147. acpi_status
  148. acpi_ds_method_data_init_args (
  149. acpi_operand_object     **params,
  150. u32                     max_param_count,
  151. acpi_walk_state         *walk_state);
  152. acpi_namespace_node *
  153. acpi_ds_method_data_get_node (
  154. u16                     opcode,
  155. u32                     index,
  156. acpi_walk_state         *walk_state);
  157. acpi_status
  158. acpi_ds_method_data_init (
  159. acpi_walk_state         *walk_state);
  160. acpi_status
  161. acpi_ds_method_data_set_entry (
  162. u16                     opcode,
  163. u32                     index,
  164. acpi_operand_object     *object,
  165. acpi_walk_state         *walk_state);
  166. /* dsmethod - Parser/Interpreter interface - control method parsing */
  167. acpi_status
  168. acpi_ds_parse_method (
  169. acpi_handle             obj_handle);
  170. acpi_status
  171. acpi_ds_call_control_method (
  172. acpi_walk_list          *walk_list,
  173. acpi_walk_state         *walk_state,
  174. acpi_parse_object       *op);
  175. acpi_status
  176. acpi_ds_restart_control_method (
  177. acpi_walk_state         *walk_state,
  178. acpi_operand_object     *return_desc);
  179. acpi_status
  180. acpi_ds_terminate_control_method (
  181. acpi_walk_state         *walk_state);
  182. acpi_status
  183. acpi_ds_begin_method_execution (
  184. acpi_namespace_node     *method_node,
  185. acpi_operand_object     *obj_desc,
  186. acpi_namespace_node     *calling_method_node);
  187. /* dsobj - Parser/Interpreter interface - object initialization and conversion */
  188. acpi_status
  189. acpi_ds_init_one_object (
  190. acpi_handle             obj_handle,
  191. u32                     level,
  192. void                    *context,
  193. void                    **return_value);
  194. acpi_status
  195. acpi_ds_initialize_objects (
  196. acpi_table_desc         *table_desc,
  197. acpi_namespace_node     *start_node);
  198. acpi_status
  199. acpi_ds_build_internal_package_obj (
  200. acpi_walk_state         *walk_state,
  201. acpi_parse_object       *op,
  202. acpi_operand_object     **obj_desc);
  203. acpi_status
  204. acpi_ds_build_internal_object (
  205. acpi_walk_state         *walk_state,
  206. acpi_parse_object       *op,
  207. acpi_operand_object     **obj_desc_ptr);
  208. acpi_status
  209. acpi_ds_init_object_from_op (
  210. acpi_walk_state         *walk_state,
  211. acpi_parse_object       *op,
  212. u16                     opcode,
  213. acpi_operand_object     **obj_desc);
  214. acpi_status
  215. acpi_ds_create_node (
  216. acpi_walk_state         *walk_state,
  217. acpi_namespace_node     *node,
  218. acpi_parse_object       *op);
  219. /* dsregn - Parser/Interpreter interface - Op Region parsing */
  220. acpi_status
  221. acpi_ds_eval_buffer_field_operands (
  222. acpi_walk_state         *walk_state,
  223. acpi_parse_object       *op);
  224. acpi_status
  225. acpi_ds_eval_region_operands (
  226. acpi_walk_state         *walk_state,
  227. acpi_parse_object       *op);
  228. acpi_status
  229. acpi_ds_initialize_region (
  230. acpi_handle             obj_handle);
  231. /* dsutils - Parser/Interpreter interface utility routines */
  232. u8
  233. acpi_ds_is_result_used (
  234. acpi_parse_object       *op,
  235. acpi_walk_state         *walk_state);
  236. void
  237. acpi_ds_delete_result_if_not_used (
  238. acpi_parse_object       *op,
  239. acpi_operand_object     *result_obj,
  240. acpi_walk_state         *walk_state);
  241. acpi_status
  242. acpi_ds_create_operand (
  243. acpi_walk_state         *walk_state,
  244. acpi_parse_object       *arg,
  245. u32                     args_remaining);
  246. acpi_status
  247. acpi_ds_create_operands (
  248. acpi_walk_state         *walk_state,
  249. acpi_parse_object       *first_arg);
  250. acpi_status
  251. acpi_ds_resolve_operands (
  252. acpi_walk_state         *walk_state);
  253. acpi_object_type8
  254. acpi_ds_map_opcode_to_data_type (
  255. u16                     opcode,
  256. u32                     *out_flags);
  257. acpi_object_type8
  258. acpi_ds_map_named_opcode_to_data_type (
  259. u16                     opcode);
  260. /*
  261.  * dswscope - Scope Stack manipulation
  262.  */
  263. acpi_status
  264. acpi_ds_scope_stack_push (
  265. acpi_namespace_node     *node,
  266. acpi_object_type8       type,
  267. acpi_walk_state         *walk_state);
  268. acpi_status
  269. acpi_ds_scope_stack_pop (
  270. acpi_walk_state         *walk_state);
  271. void
  272. acpi_ds_scope_stack_clear (
  273. acpi_walk_state         *walk_state);
  274. /* dswstate - parser WALK_STATE management routines */
  275. acpi_walk_state *
  276. acpi_ds_create_walk_state (
  277. acpi_owner_id           owner_id,
  278. acpi_parse_object       *origin,
  279. acpi_operand_object     *mth_desc,
  280. acpi_walk_list          *walk_list);
  281. acpi_status
  282. acpi_ds_init_aml_walk (
  283. acpi_walk_state         *walk_state,
  284. acpi_parse_object       *op,
  285. acpi_namespace_node     *method_node,
  286. u8                      *aml_start,
  287. u32                     aml_length,
  288. acpi_operand_object     **params,
  289. acpi_operand_object     **return_obj_desc,
  290. u32                     pass_number);
  291. acpi_status
  292. acpi_ds_obj_stack_delete_all (
  293. acpi_walk_state         *walk_state);
  294. acpi_status
  295. acpi_ds_obj_stack_pop_and_delete (
  296. u32                     pop_count,
  297. acpi_walk_state         *walk_state);
  298. void
  299. acpi_ds_delete_walk_state (
  300. acpi_walk_state         *walk_state);
  301. acpi_walk_state *
  302. acpi_ds_pop_walk_state (
  303. acpi_walk_list          *walk_list);
  304. void
  305. acpi_ds_push_walk_state (
  306. acpi_walk_state         *walk_state,
  307. acpi_walk_list          *walk_list);
  308. acpi_status
  309. acpi_ds_result_stack_pop (
  310. acpi_walk_state         *walk_state);
  311. acpi_status
  312. acpi_ds_result_stack_push (
  313. acpi_walk_state         *walk_state);
  314. acpi_status
  315. acpi_ds_result_stack_clear (
  316. acpi_walk_state         *walk_state);
  317. acpi_walk_state *
  318. acpi_ds_get_current_walk_state (
  319. acpi_walk_list          *walk_list);
  320. void
  321. acpi_ds_delete_walk_state_cache (
  322. void);
  323. acpi_status
  324. acpi_ds_result_insert (
  325. void                    *object,
  326. u32                     index,
  327. acpi_walk_state         *walk_state);
  328. acpi_status
  329. acpi_ds_result_remove (
  330. acpi_operand_object     **object,
  331. u32                     index,
  332. acpi_walk_state         *walk_state);
  333. acpi_status
  334. acpi_ds_result_pop (
  335. acpi_operand_object     **object,
  336. acpi_walk_state         *walk_state);
  337. acpi_status
  338. acpi_ds_result_push (
  339. acpi_operand_object     *object,
  340. acpi_walk_state         *walk_state);
  341. acpi_status
  342. acpi_ds_result_pop_from_bottom (
  343. acpi_operand_object     **object,
  344. acpi_walk_state         *walk_state);
  345. #endif /* _ACDISPAT_H_ */