Lines Matching refs:walk_state

55 acpi_ds_result_stack_push(struct acpi_walk_state *walk_state);
56 static acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state);
73 struct acpi_walk_state *walk_state) in acpi_ds_result_pop() argument
81 state = walk_state->results; in acpi_ds_result_pop()
85 if (state && !walk_state->result_count) { in acpi_ds_result_pop()
90 if (!state && walk_state->result_count) { in acpi_ds_result_pop()
99 walk_state)); in acpi_ds_result_pop()
105 walk_state->result_count--; in acpi_ds_result_pop()
106 index = (u32)walk_state->result_count % ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_pop()
112 walk_state)); in acpi_ds_result_pop()
118 status = acpi_ds_result_stack_pop(walk_state); in acpi_ds_result_pop()
127 index, walk_state, walk_state->result_count)); in acpi_ds_result_pop()
147 struct acpi_walk_state * walk_state) in acpi_ds_result_push() argument
155 if (walk_state->result_count > walk_state->result_size) { in acpi_ds_result_push()
158 } else if (walk_state->result_count == walk_state->result_size) { in acpi_ds_result_push()
162 status = acpi_ds_result_stack_push(walk_state); in acpi_ds_result_push()
170 if (!(walk_state->result_count < walk_state->result_size)) { in acpi_ds_result_push()
175 state = walk_state->results; in acpi_ds_result_push()
184 object, walk_state, walk_state->result_count)); in acpi_ds_result_push()
190 index = (u32)walk_state->result_count % ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_push()
192 walk_state->result_count++; in acpi_ds_result_push()
198 object), walk_state, in acpi_ds_result_push()
199 walk_state->result_count, in acpi_ds_result_push()
200 walk_state->current_result)); in acpi_ds_result_push()
217 static acpi_status acpi_ds_result_stack_push(struct acpi_walk_state *walk_state) in acpi_ds_result_stack_push() argument
225 if (((u32) walk_state->result_size + ACPI_RESULTS_FRAME_OBJ_NUM) > in acpi_ds_result_stack_push()
228 walk_state, walk_state->result_size)); in acpi_ds_result_stack_push()
238 acpi_ut_push_generic_state(&walk_state->results, state); in acpi_ds_result_stack_push()
242 walk_state->result_size += ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_stack_push()
245 state, walk_state)); in acpi_ds_result_stack_push()
262 static acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state) in acpi_ds_result_stack_pop() argument
270 if (walk_state->results == NULL) { in acpi_ds_result_stack_pop()
273 walk_state)); in acpi_ds_result_stack_pop()
277 if (walk_state->result_size < ACPI_RESULTS_FRAME_OBJ_NUM) { in acpi_ds_result_stack_pop()
282 state = acpi_ut_pop_generic_state(&walk_state->results); in acpi_ds_result_stack_pop()
287 walk_state->result_size -= ACPI_RESULTS_FRAME_OBJ_NUM; in acpi_ds_result_stack_pop()
291 state, walk_state->result_count, walk_state)); in acpi_ds_result_stack_pop()
310 acpi_ds_obj_stack_push(void *object, struct acpi_walk_state * walk_state) in acpi_ds_obj_stack_push() argument
316 if (walk_state->num_operands >= ACPI_OBJ_NUM_OPERANDS) { in acpi_ds_obj_stack_push()
319 object, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_push()
325 walk_state->operands[walk_state->operand_index] = object; in acpi_ds_obj_stack_push()
326 walk_state->num_operands++; in acpi_ds_obj_stack_push()
330 walk_state->operand_index++; in acpi_ds_obj_stack_push()
336 object), walk_state, in acpi_ds_obj_stack_push()
337 walk_state->num_operands)); in acpi_ds_obj_stack_push()
357 acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state * walk_state) in acpi_ds_obj_stack_pop() argument
367 if (walk_state->num_operands == 0) { in acpi_ds_obj_stack_pop()
370 pop_count, walk_state, in acpi_ds_obj_stack_pop()
371 walk_state->num_operands)); in acpi_ds_obj_stack_pop()
377 walk_state->num_operands--; in acpi_ds_obj_stack_pop()
378 walk_state->operands[walk_state->num_operands] = NULL; in acpi_ds_obj_stack_pop()
382 pop_count, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_pop()
403 struct acpi_walk_state *walk_state) in acpi_ds_obj_stack_pop_and_delete() argument
415 if (walk_state->num_operands == 0) { in acpi_ds_obj_stack_pop_and_delete()
421 walk_state->num_operands--; in acpi_ds_obj_stack_pop_and_delete()
422 obj_desc = walk_state->operands[i]; in acpi_ds_obj_stack_pop_and_delete()
424 acpi_ut_remove_reference(walk_state->operands[i]); in acpi_ds_obj_stack_pop_and_delete()
425 walk_state->operands[i] = NULL; in acpi_ds_obj_stack_pop_and_delete()
430 pop_count, walk_state, walk_state->num_operands)); in acpi_ds_obj_stack_pop_and_delete()
475 acpi_ds_push_walk_state(struct acpi_walk_state *walk_state, in acpi_ds_push_walk_state() argument
480 walk_state->next = thread->walk_state_list; in acpi_ds_push_walk_state()
481 thread->walk_state_list = walk_state; in acpi_ds_push_walk_state()
502 struct acpi_walk_state *walk_state; in acpi_ds_pop_walk_state() local
506 walk_state = thread->walk_state_list; in acpi_ds_pop_walk_state()
508 if (walk_state) { in acpi_ds_pop_walk_state()
512 thread->walk_state_list = walk_state->next; in acpi_ds_pop_walk_state()
521 return_PTR(walk_state); in acpi_ds_pop_walk_state()
548 struct acpi_walk_state *walk_state; in acpi_ds_create_walk_state() local
552 walk_state = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_walk_state)); in acpi_ds_create_walk_state()
553 if (!walk_state) { in acpi_ds_create_walk_state()
557 walk_state->descriptor_type = ACPI_DESC_TYPE_WALK; in acpi_ds_create_walk_state()
558 walk_state->method_desc = method_desc; in acpi_ds_create_walk_state()
559 walk_state->owner_id = owner_id; in acpi_ds_create_walk_state()
560 walk_state->origin = origin; in acpi_ds_create_walk_state()
561 walk_state->thread = thread; in acpi_ds_create_walk_state()
563 walk_state->parser_state.start_op = origin; in acpi_ds_create_walk_state()
568 acpi_ds_method_data_init(walk_state); in acpi_ds_create_walk_state()
574 acpi_ds_push_walk_state(walk_state, thread); in acpi_ds_create_walk_state()
577 return_PTR(walk_state); in acpi_ds_create_walk_state()
599 acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state, in acpi_ds_init_aml_walk() argument
607 struct acpi_parse_state *parser_state = &walk_state->parser_state; in acpi_ds_init_aml_walk()
612 walk_state->parser_state.aml = in acpi_ds_init_aml_walk()
613 walk_state->parser_state.aml_start = aml_start; in acpi_ds_init_aml_walk()
614 walk_state->parser_state.aml_end = in acpi_ds_init_aml_walk()
615 walk_state->parser_state.pkg_end = aml_start + aml_length; in acpi_ds_init_aml_walk()
619 walk_state->next_op = NULL; in acpi_ds_init_aml_walk()
620 walk_state->pass_number = pass_number; in acpi_ds_init_aml_walk()
623 walk_state->params = info->parameters; in acpi_ds_init_aml_walk()
624 walk_state->caller_return_desc = &info->return_object; in acpi_ds_init_aml_walk()
627 status = acpi_ps_init_scope(&walk_state->parser_state, op); in acpi_ds_init_aml_walk()
633 walk_state->parser_state.start_node = method_node; in acpi_ds_init_aml_walk()
634 walk_state->walk_type = ACPI_WALK_METHOD; in acpi_ds_init_aml_walk()
635 walk_state->method_node = method_node; in acpi_ds_init_aml_walk()
636 walk_state->method_desc = in acpi_ds_init_aml_walk()
643 walk_state); in acpi_ds_init_aml_walk()
650 status = acpi_ds_method_data_init_args(walk_state->params, in acpi_ds_init_aml_walk()
652 walk_state); in acpi_ds_init_aml_walk()
681 type, walk_state); in acpi_ds_init_aml_walk()
688 status = acpi_ds_init_callbacks(walk_state, pass_number); in acpi_ds_init_aml_walk()
704 void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state) in acpi_ds_delete_walk_state() argument
708 ACPI_FUNCTION_TRACE_PTR(ds_delete_walk_state, walk_state); in acpi_ds_delete_walk_state()
710 if (!walk_state) { in acpi_ds_delete_walk_state()
714 if (walk_state->descriptor_type != ACPI_DESC_TYPE_WALK) { in acpi_ds_delete_walk_state()
716 walk_state)); in acpi_ds_delete_walk_state()
722 if (walk_state->parser_state.scope) { in acpi_ds_delete_walk_state()
724 walk_state)); in acpi_ds_delete_walk_state()
725 acpi_ps_cleanup_scope(&walk_state->parser_state); in acpi_ds_delete_walk_state()
730 while (walk_state->control_state) { in acpi_ds_delete_walk_state()
731 state = walk_state->control_state; in acpi_ds_delete_walk_state()
732 walk_state->control_state = state->common.next; in acpi_ds_delete_walk_state()
739 while (walk_state->scope_info) { in acpi_ds_delete_walk_state()
740 state = walk_state->scope_info; in acpi_ds_delete_walk_state()
741 walk_state->scope_info = state->common.next; in acpi_ds_delete_walk_state()
748 while (walk_state->results) { in acpi_ds_delete_walk_state()
749 state = walk_state->results; in acpi_ds_delete_walk_state()
750 walk_state->results = state->common.next; in acpi_ds_delete_walk_state()
755 ACPI_FREE(walk_state); in acpi_ds_delete_walk_state()