Lines Matching refs:walk_state

21 acpi_ds_result_stack_push(struct acpi_walk_state *walk_state);
22 static acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state);
39 struct acpi_walk_state *walk_state) in acpi_ds_result_pop() argument
47 state = walk_state->results; in acpi_ds_result_pop()
51 if (state && !walk_state->result_count) { in acpi_ds_result_pop()
56 if (!state && walk_state->result_count) { in acpi_ds_result_pop()
65 walk_state)); in acpi_ds_result_pop()
71 walk_state->result_count--; in acpi_ds_result_pop()
72 index = (u32)walk_state->result_count % ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_pop()
78 walk_state)); in acpi_ds_result_pop()
84 status = acpi_ds_result_stack_pop(walk_state); in acpi_ds_result_pop()
93 index, walk_state, walk_state->result_count)); in acpi_ds_result_pop()
113 struct acpi_walk_state *walk_state) in acpi_ds_result_push() argument
121 if (walk_state->result_count > walk_state->result_size) { in acpi_ds_result_push()
124 } else if (walk_state->result_count == walk_state->result_size) { in acpi_ds_result_push()
128 status = acpi_ds_result_stack_push(walk_state); in acpi_ds_result_push()
136 if (!(walk_state->result_count < walk_state->result_size)) { in acpi_ds_result_push()
141 state = walk_state->results; in acpi_ds_result_push()
150 object, walk_state, walk_state->result_count)); in acpi_ds_result_push()
156 index = (u32)walk_state->result_count % ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_push()
158 walk_state->result_count++; in acpi_ds_result_push()
164 object), walk_state, in acpi_ds_result_push()
165 walk_state->result_count, in acpi_ds_result_push()
166 walk_state->current_result)); in acpi_ds_result_push()
183 static acpi_status acpi_ds_result_stack_push(struct acpi_walk_state *walk_state) in acpi_ds_result_stack_push() argument
191 if (((u32) walk_state->result_size + ACPI_RESULTS_FRAME_OBJ_NUM) > in acpi_ds_result_stack_push()
194 walk_state, walk_state->result_size)); in acpi_ds_result_stack_push()
204 acpi_ut_push_generic_state(&walk_state->results, state); in acpi_ds_result_stack_push()
208 walk_state->result_size += ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_stack_push()
211 state, walk_state)); in acpi_ds_result_stack_push()
228 static acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state) in acpi_ds_result_stack_pop() argument
236 if (walk_state->results == NULL) { in acpi_ds_result_stack_pop()
239 walk_state)); in acpi_ds_result_stack_pop()
243 if (walk_state->result_size < ACPI_RESULTS_FRAME_OBJ_NUM) { in acpi_ds_result_stack_pop()
248 state = acpi_ut_pop_generic_state(&walk_state->results); in acpi_ds_result_stack_pop()
253 walk_state->result_size -= ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_stack_pop()
257 state, walk_state->result_count, walk_state)); in acpi_ds_result_stack_pop()
276 acpi_ds_obj_stack_push(void *object, struct acpi_walk_state *walk_state) in acpi_ds_obj_stack_push() argument
282 if (walk_state->num_operands >= ACPI_OBJ_NUM_OPERANDS) { in acpi_ds_obj_stack_push()
285 object, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_push()
291 walk_state->operands[walk_state->operand_index] = object; in acpi_ds_obj_stack_push()
292 walk_state->num_operands++; in acpi_ds_obj_stack_push()
296 walk_state->operand_index++; in acpi_ds_obj_stack_push()
302 object), walk_state, in acpi_ds_obj_stack_push()
303 walk_state->num_operands)); in acpi_ds_obj_stack_push()
323 acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state *walk_state) in acpi_ds_obj_stack_pop() argument
333 if (walk_state->num_operands == 0) { in acpi_ds_obj_stack_pop()
336 pop_count, walk_state, in acpi_ds_obj_stack_pop()
337 walk_state->num_operands)); in acpi_ds_obj_stack_pop()
343 walk_state->num_operands--; in acpi_ds_obj_stack_pop()
344 walk_state->operands[walk_state->num_operands] = NULL; in acpi_ds_obj_stack_pop()
348 pop_count, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_pop()
369 struct acpi_walk_state *walk_state) in acpi_ds_obj_stack_pop_and_delete() argument
381 if (walk_state->num_operands == 0) { in acpi_ds_obj_stack_pop_and_delete()
387 walk_state->num_operands--; in acpi_ds_obj_stack_pop_and_delete()
388 obj_desc = walk_state->operands[i]; in acpi_ds_obj_stack_pop_and_delete()
390 acpi_ut_remove_reference(walk_state->operands[i]); in acpi_ds_obj_stack_pop_and_delete()
391 walk_state->operands[i] = NULL; in acpi_ds_obj_stack_pop_and_delete()
396 pop_count, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_pop_and_delete()
441 acpi_ds_push_walk_state(struct acpi_walk_state *walk_state, in acpi_ds_push_walk_state() argument
446 walk_state->next = thread->walk_state_list; in acpi_ds_push_walk_state()
447 thread->walk_state_list = walk_state; in acpi_ds_push_walk_state()
468 struct acpi_walk_state *walk_state; in acpi_ds_pop_walk_state() local
472 walk_state = thread->walk_state_list; in acpi_ds_pop_walk_state()
474 if (walk_state) { in acpi_ds_pop_walk_state()
478 thread->walk_state_list = walk_state->next; in acpi_ds_pop_walk_state()
487 return_PTR(walk_state); in acpi_ds_pop_walk_state()
514 struct acpi_walk_state *walk_state; in acpi_ds_create_walk_state() local
518 walk_state = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_walk_state)); in acpi_ds_create_walk_state()
519 if (!walk_state) { in acpi_ds_create_walk_state()
523 walk_state->descriptor_type = ACPI_DESC_TYPE_WALK; in acpi_ds_create_walk_state()
524 walk_state->method_desc = method_desc; in acpi_ds_create_walk_state()
525 walk_state->owner_id = owner_id; in acpi_ds_create_walk_state()
526 walk_state->origin = origin; in acpi_ds_create_walk_state()
527 walk_state->thread = thread; in acpi_ds_create_walk_state()
529 walk_state->parser_state.start_op = origin; in acpi_ds_create_walk_state()
534 acpi_ds_method_data_init(walk_state); in acpi_ds_create_walk_state()
540 acpi_ds_push_walk_state(walk_state, thread); in acpi_ds_create_walk_state()
543 return_PTR(walk_state); in acpi_ds_create_walk_state()
565 acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state, in acpi_ds_init_aml_walk() argument
573 struct acpi_parse_state *parser_state = &walk_state->parser_state; in acpi_ds_init_aml_walk()
578 walk_state->parser_state.aml = in acpi_ds_init_aml_walk()
579 walk_state->parser_state.aml_start = aml_start; in acpi_ds_init_aml_walk()
580 walk_state->parser_state.aml_end = in acpi_ds_init_aml_walk()
581 walk_state->parser_state.pkg_end = aml_start + aml_length; in acpi_ds_init_aml_walk()
585 walk_state->next_op = NULL; in acpi_ds_init_aml_walk()
586 walk_state->pass_number = pass_number; in acpi_ds_init_aml_walk()
589 walk_state->params = info->parameters; in acpi_ds_init_aml_walk()
590 walk_state->caller_return_desc = &info->return_object; in acpi_ds_init_aml_walk()
593 status = acpi_ps_init_scope(&walk_state->parser_state, op); in acpi_ds_init_aml_walk()
599 walk_state->parser_state.start_node = method_node; in acpi_ds_init_aml_walk()
600 walk_state->walk_type = ACPI_WALK_METHOD; in acpi_ds_init_aml_walk()
601 walk_state->method_node = method_node; in acpi_ds_init_aml_walk()
602 walk_state->method_desc = in acpi_ds_init_aml_walk()
609 walk_state); in acpi_ds_init_aml_walk()
616 status = acpi_ds_method_data_init_args(walk_state->params, in acpi_ds_init_aml_walk()
618 walk_state); in acpi_ds_init_aml_walk()
647 type, walk_state); in acpi_ds_init_aml_walk()
654 status = acpi_ds_init_callbacks(walk_state, pass_number); in acpi_ds_init_aml_walk()
670 void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state) in acpi_ds_delete_walk_state() argument
674 ACPI_FUNCTION_TRACE_PTR(ds_delete_walk_state, walk_state); in acpi_ds_delete_walk_state()
676 if (!walk_state) { in acpi_ds_delete_walk_state()
680 if (walk_state->descriptor_type != ACPI_DESC_TYPE_WALK) { in acpi_ds_delete_walk_state()
682 walk_state)); in acpi_ds_delete_walk_state()
688 if (walk_state->parser_state.scope) { in acpi_ds_delete_walk_state()
690 walk_state)); in acpi_ds_delete_walk_state()
691 acpi_ps_cleanup_scope(&walk_state->parser_state); in acpi_ds_delete_walk_state()
696 while (walk_state->control_state) { in acpi_ds_delete_walk_state()
697 state = walk_state->control_state; in acpi_ds_delete_walk_state()
698 walk_state->control_state = state->common.next; in acpi_ds_delete_walk_state()
705 while (walk_state->scope_info) { in acpi_ds_delete_walk_state()
706 state = walk_state->scope_info; in acpi_ds_delete_walk_state()
707 walk_state->scope_info = state->common.next; in acpi_ds_delete_walk_state()
714 while (walk_state->results) { in acpi_ds_delete_walk_state()
715 state = walk_state->results; in acpi_ds_delete_walk_state()
716 walk_state->results = state->common.next; in acpi_ds_delete_walk_state()
721 ACPI_FREE(walk_state); in acpi_ds_delete_walk_state()