Deleted Added
full compact
dswstate.c (80062) dswstate.c (82367)
1/******************************************************************************
2 *
3 * Module Name: dswstate - Dispatcher parse tree walk management routines
1/******************************************************************************
2 *
3 * Module Name: dswstate - Dispatcher parse tree walk management routines
4 * $Revision: 46 $
4 * $Revision: 48 $
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.

--- 138 unchanged lines hidden (view full) ---

151
152
153 PROC_NAME ("DsResultInsert");
154
155
156 State = WalkState->Results;
157 if (!State)
158 {
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.

--- 138 unchanged lines hidden (view full) ---

151
152
153 PROC_NAME ("DsResultInsert");
154
155
156 State = WalkState->Results;
157 if (!State)
158 {
159 DEBUG_PRINTP (ACPI_ERROR, ("No result object pushed! State=%p\n",
159 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No result object pushed! State=%p\n",
160 WalkState));
161 return (AE_NOT_EXIST);
162 }
163
164 if (Index >= OBJ_NUM_OPERANDS)
165 {
160 WalkState));
161 return (AE_NOT_EXIST);
162 }
163
164 if (Index >= OBJ_NUM_OPERANDS)
165 {
166 DEBUG_PRINTP (ACPI_ERROR,
167 ("Index out of range: %X Obj=%p State=%p Num=%X\n",
166 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
167 "Index out of range: %X Obj=%p State=%p Num=%X\n",
168 Index, Object, WalkState, State->Results.NumResults));
169 return (AE_BAD_PARAMETER);
170 }
171
172 if (!Object)
173 {
168 Index, Object, WalkState, State->Results.NumResults));
169 return (AE_BAD_PARAMETER);
170 }
171
172 if (!Object)
173 {
174 DEBUG_PRINTP (ACPI_ERROR,
175 ("Null Object! Index=%X Obj=%p State=%p Num=%X\n",
174 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
175 "Null Object! Index=%X Obj=%p State=%p Num=%X\n",
176 Index, Object, WalkState, State->Results.NumResults));
177 return (AE_BAD_PARAMETER);
178 }
179
180 State->Results.ObjDesc [Index] = Object;
181 State->Results.NumResults++;
182
176 Index, Object, WalkState, State->Results.NumResults));
177 return (AE_BAD_PARAMETER);
178 }
179
180 State->Results.ObjDesc [Index] = Object;
181 State->Results.NumResults++;
182
183 DEBUG_PRINTP (TRACE_EXEC,
184 ("Obj=%p [%s] State=%p Num=%X Cur=%X\n",
183 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
184 "Obj=%p [%s] State=%p Num=%X Cur=%X\n",
185 Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL",
186 WalkState, State->Results.NumResults, WalkState->CurrentResult));
187
188 return (AE_OK);
189}
190
191
192/*******************************************************************************

--- 20 unchanged lines hidden (view full) ---

213
214
215 PROC_NAME ("DsResultRemove");
216
217
218 State = WalkState->Results;
219 if (!State)
220 {
185 Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL",
186 WalkState, State->Results.NumResults, WalkState->CurrentResult));
187
188 return (AE_OK);
189}
190
191
192/*******************************************************************************

--- 20 unchanged lines hidden (view full) ---

213
214
215 PROC_NAME ("DsResultRemove");
216
217
218 State = WalkState->Results;
219 if (!State)
220 {
221 DEBUG_PRINTP (ACPI_ERROR, ("No result object pushed! State=%p\n",
221 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No result object pushed! State=%p\n",
222 WalkState));
223 return (AE_NOT_EXIST);
224 }
225
226 if (Index >= OBJ_NUM_OPERANDS)
227 {
222 WalkState));
223 return (AE_NOT_EXIST);
224 }
225
226 if (Index >= OBJ_NUM_OPERANDS)
227 {
228 DEBUG_PRINTP (ACPI_ERROR,
229 ("Index out of range: %X State=%p Num=%X\n",
228 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
229 "Index out of range: %X State=%p Num=%X\n",
230 Index, WalkState, State->Results.NumResults));
231 }
232
233
234 /* Check for a valid result object */
235
236 if (!State->Results.ObjDesc [Index])
237 {
230 Index, WalkState, State->Results.NumResults));
231 }
232
233
234 /* Check for a valid result object */
235
236 if (!State->Results.ObjDesc [Index])
237 {
238 DEBUG_PRINTP (ACPI_ERROR,
239 ("Null operand! State=%p #Ops=%X, Index=%X\n",
238 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
239 "Null operand! State=%p #Ops=%X, Index=%X\n",
240 WalkState, State->Results.NumResults, Index));
241 return (AE_AML_NO_RETURN_VALUE);
242 }
243
244 /* Remove the object */
245
246 State->Results.NumResults--;
247
248 *Object = State->Results.ObjDesc [Index];
249 State->Results.ObjDesc [Index] = NULL;
250
240 WalkState, State->Results.NumResults, Index));
241 return (AE_AML_NO_RETURN_VALUE);
242 }
243
244 /* Remove the object */
245
246 State->Results.NumResults--;
247
248 *Object = State->Results.ObjDesc [Index];
249 State->Results.ObjDesc [Index] = NULL;
250
251 DEBUG_PRINTP (TRACE_EXEC,
252 ("Obj=%p [%s] Index=%X State=%p Num=%X\n",
251 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
252 "Obj=%p [%s] Index=%X State=%p Num=%X\n",
253 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
254 Index, WalkState, State->Results.NumResults));
255
256 return (AE_OK);
257}
258
259
260/*******************************************************************************

--- 26 unchanged lines hidden (view full) ---

287 if (!State)
288 {
289 return (AE_OK);
290 }
291
292
293 if (!State->Results.NumResults)
294 {
253 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
254 Index, WalkState, State->Results.NumResults));
255
256 return (AE_OK);
257}
258
259
260/*******************************************************************************

--- 26 unchanged lines hidden (view full) ---

287 if (!State)
288 {
289 return (AE_OK);
290 }
291
292
293 if (!State->Results.NumResults)
294 {
295 DEBUG_PRINTP (ACPI_ERROR, ("Result stack is empty! State=%p\n",
295 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Result stack is empty! State=%p\n",
296 WalkState));
297 return (AE_AML_NO_RETURN_VALUE);
298 }
299
300 /* Remove top element */
301
302 State->Results.NumResults--;
303
304 for (Index = OBJ_NUM_OPERANDS; Index; Index--)
305 {
306 /* Check for a valid result object */
307
308 if (State->Results.ObjDesc [Index -1])
309 {
310 *Object = State->Results.ObjDesc [Index -1];
311 State->Results.ObjDesc [Index -1] = NULL;
312
296 WalkState));
297 return (AE_AML_NO_RETURN_VALUE);
298 }
299
300 /* Remove top element */
301
302 State->Results.NumResults--;
303
304 for (Index = OBJ_NUM_OPERANDS; Index; Index--)
305 {
306 /* Check for a valid result object */
307
308 if (State->Results.ObjDesc [Index -1])
309 {
310 *Object = State->Results.ObjDesc [Index -1];
311 State->Results.ObjDesc [Index -1] = NULL;
312
313 DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s] Index=%X State=%p Num=%X\n",
313 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Index=%X State=%p Num=%X\n",
314 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
315 Index -1, WalkState, State->Results.NumResults));
316
317 return (AE_OK);
318 }
319 }
320
321
314 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
315 Index -1, WalkState, State->Results.NumResults));
316
317 return (AE_OK);
318 }
319 }
320
321
322 DEBUG_PRINTP (ACPI_ERROR, ("No result objects! State=%p\n", WalkState));
322 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No result objects! State=%p\n", WalkState));
323 return (AE_AML_NO_RETURN_VALUE);
324}
325
326/*******************************************************************************
327 *
328 * FUNCTION: AcpiDsResultPopFromBottom
329 *
330 * PARAMETERS: Object - Where to return the popped object

--- 16 unchanged lines hidden (view full) ---

347
348
349 PROC_NAME ("DsResultPopFromBottom");
350
351
352 State = WalkState->Results;
353 if (!State)
354 {
323 return (AE_AML_NO_RETURN_VALUE);
324}
325
326/*******************************************************************************
327 *
328 * FUNCTION: AcpiDsResultPopFromBottom
329 *
330 * PARAMETERS: Object - Where to return the popped object

--- 16 unchanged lines hidden (view full) ---

347
348
349 PROC_NAME ("DsResultPopFromBottom");
350
351
352 State = WalkState->Results;
353 if (!State)
354 {
355 DEBUG_PRINTP (ACPI_ERROR,
356 ("Warning: No result object pushed! State=%p\n", WalkState));
355 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
356 "Warning: No result object pushed! State=%p\n", WalkState));
357 return (AE_NOT_EXIST);
358 }
359
360
361 if (!State->Results.NumResults)
362 {
357 return (AE_NOT_EXIST);
358 }
359
360
361 if (!State->Results.NumResults)
362 {
363 DEBUG_PRINTP (ACPI_ERROR, ("No result objects! State=%p\n", WalkState));
363 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No result objects! State=%p\n", WalkState));
364 return (AE_AML_NO_RETURN_VALUE);
365 }
366
367 /* Remove Bottom element */
368
369 *Object = State->Results.ObjDesc [0];
370
371

--- 5 unchanged lines hidden (view full) ---

377 }
378
379 State->Results.NumResults--;
380
381 /* Check for a valid result object */
382
383 if (!*Object)
384 {
364 return (AE_AML_NO_RETURN_VALUE);
365 }
366
367 /* Remove Bottom element */
368
369 *Object = State->Results.ObjDesc [0];
370
371

--- 5 unchanged lines hidden (view full) ---

377 }
378
379 State->Results.NumResults--;
380
381 /* Check for a valid result object */
382
383 if (!*Object)
384 {
385 DEBUG_PRINTP (ACPI_ERROR, ("Null operand! State=%p #Ops=%X, Index=%X\n",
385 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null operand! State=%p #Ops=%X, Index=%X\n",
386 WalkState, State->Results.NumResults, Index));
387 return (AE_AML_NO_RETURN_VALUE);
388 }
389
386 WalkState, State->Results.NumResults, Index));
387 return (AE_AML_NO_RETURN_VALUE);
388 }
389
390 DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s], Results=%p State=%p\n",
390 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s], Results=%p State=%p\n",
391 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
392 State, WalkState));
393
394
395 return (AE_OK);
396}
397
398

--- 19 unchanged lines hidden (view full) ---

418
419
420 PROC_NAME ("DsResultPush");
421
422
423 State = WalkState->Results;
424 if (!State)
425 {
391 *Object, (*Object) ? AcpiUtGetTypeName ((*Object)->Common.Type) : "NULL",
392 State, WalkState));
393
394
395 return (AE_OK);
396}
397
398

--- 19 unchanged lines hidden (view full) ---

418
419
420 PROC_NAME ("DsResultPush");
421
422
423 State = WalkState->Results;
424 if (!State)
425 {
426 DEBUG_PRINTP (ACPI_ERROR, ("No result stack frame\n"));
426 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No result stack frame\n"));
427 return (AE_AML_INTERNAL);
428 }
429
430 if (State->Results.NumResults == OBJ_NUM_OPERANDS)
431 {
427 return (AE_AML_INTERNAL);
428 }
429
430 if (State->Results.NumResults == OBJ_NUM_OPERANDS)
431 {
432 DEBUG_PRINTP (ACPI_ERROR,
433 ("Result stack overflow: Obj=%p State=%p Num=%X\n",
432 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
433 "Result stack overflow: Obj=%p State=%p Num=%X\n",
434 Object, WalkState, State->Results.NumResults));
435 return (AE_STACK_OVERFLOW);
436 }
437
438 if (!Object)
439 {
434 Object, WalkState, State->Results.NumResults));
435 return (AE_STACK_OVERFLOW);
436 }
437
438 if (!Object)
439 {
440 DEBUG_PRINTP (ACPI_ERROR, ("Null Object! Obj=%p State=%p Num=%X\n",
440 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Object! Obj=%p State=%p Num=%X\n",
441 Object, WalkState, State->Results.NumResults));
442 return (AE_BAD_PARAMETER);
443 }
444
445
446 State->Results.ObjDesc [State->Results.NumResults] = Object;
447 State->Results.NumResults++;
448
441 Object, WalkState, State->Results.NumResults));
442 return (AE_BAD_PARAMETER);
443 }
444
445
446 State->Results.ObjDesc [State->Results.NumResults] = Object;
447 State->Results.NumResults++;
448
449 DEBUG_PRINTP (TRACE_EXEC, ("Obj=%p [%s] State=%p Num=%X Cur=%X\n",
449 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p Num=%X Cur=%X\n",
450 Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL",
451 WalkState, State->Results.NumResults, WalkState->CurrentResult));
452
453 return (AE_OK);
454}
455
456
457/*******************************************************************************

--- 10 unchanged lines hidden (view full) ---

468 ******************************************************************************/
469
470ACPI_STATUS
471AcpiDsResultStackPush (
472 ACPI_WALK_STATE *WalkState)
473{
474 ACPI_GENERIC_STATE *State;
475
450 Object, Object ? AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL",
451 WalkState, State->Results.NumResults, WalkState->CurrentResult));
452
453 return (AE_OK);
454}
455
456
457/*******************************************************************************

--- 10 unchanged lines hidden (view full) ---

468 ******************************************************************************/
469
470ACPI_STATUS
471AcpiDsResultStackPush (
472 ACPI_WALK_STATE *WalkState)
473{
474 ACPI_GENERIC_STATE *State;
475
476 PROC_NAME ("DsResultStackPush");
476
477
478
477 State = AcpiUtCreateGenericState ();
478 if (!State)
479 {
480 return (AE_NO_MEMORY);
481 }
482
483 AcpiUtPushGenericState (&WalkState->Results, State);
484
479 State = AcpiUtCreateGenericState ();
480 if (!State)
481 {
482 return (AE_NO_MEMORY);
483 }
484
485 AcpiUtPushGenericState (&WalkState->Results, State);
486
485 DEBUG_PRINT (TRACE_EXEC, ("DsResultStackPush: Results=%p State=%p\n",
487 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Results=%p State=%p\n",
486 State, WalkState));
487
488 return (AE_OK);
489}
490
491
492/*******************************************************************************
493 *

--- 8 unchanged lines hidden (view full) ---

502 ******************************************************************************/
503
504ACPI_STATUS
505AcpiDsResultStackPop (
506 ACPI_WALK_STATE *WalkState)
507{
508 ACPI_GENERIC_STATE *State;
509
488 State, WalkState));
489
490 return (AE_OK);
491}
492
493
494/*******************************************************************************
495 *

--- 8 unchanged lines hidden (view full) ---

504 ******************************************************************************/
505
506ACPI_STATUS
507AcpiDsResultStackPop (
508 ACPI_WALK_STATE *WalkState)
509{
510 ACPI_GENERIC_STATE *State;
511
512 PROC_NAME ("DsResultStackPop");
510
513
514
511 /* Check for stack underflow */
512
513 if (WalkState->Results == NULL)
514 {
515 /* Check for stack underflow */
516
517 if (WalkState->Results == NULL)
518 {
515 DEBUG_PRINT (TRACE_EXEC, ("DsResultStackPop: Underflow - State=%p\n",
519 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Underflow - State=%p\n",
516 WalkState));
517 return (AE_AML_NO_OPERAND);
518 }
519
520
521 State = AcpiUtPopGenericState (&WalkState->Results);
522
520 WalkState));
521 return (AE_AML_NO_OPERAND);
522 }
523
524
525 State = AcpiUtPopGenericState (&WalkState->Results);
526
523 DEBUG_PRINT (TRACE_EXEC,
524 ("DsResultStackPop: Result=%p RemainingResults=%X State=%p\n",
527 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
528 "Result=%p RemainingResults=%X State=%p\n",
525 State, State->Results.NumResults, WalkState));
526
527 AcpiUtDeleteGenericState (State);
528
529 return (AE_OK);
530}
531
532

--- 48 unchanged lines hidden (view full) ---

581 *
582 ******************************************************************************/
583
584ACPI_STATUS
585AcpiDsObjStackPush (
586 void *Object,
587 ACPI_WALK_STATE *WalkState)
588{
529 State, State->Results.NumResults, WalkState));
530
531 AcpiUtDeleteGenericState (State);
532
533 return (AE_OK);
534}
535
536

--- 48 unchanged lines hidden (view full) ---

585 *
586 ******************************************************************************/
587
588ACPI_STATUS
589AcpiDsObjStackPush (
590 void *Object,
591 ACPI_WALK_STATE *WalkState)
592{
593 PROC_NAME ("DsObjStackPush");
589
590
591 /* Check for stack overflow */
592
593 if (WalkState->NumOperands >= OBJ_NUM_OPERANDS)
594 {
594
595
596 /* Check for stack overflow */
597
598 if (WalkState->NumOperands >= OBJ_NUM_OPERANDS)
599 {
595 DEBUG_PRINT (ACPI_ERROR,
596 ("DsObjStackPush: overflow! Obj=%p State=%p #Ops=%X\n",
600 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
601 "overflow! Obj=%p State=%p #Ops=%X\n",
597 Object, WalkState, WalkState->NumOperands));
598 return (AE_STACK_OVERFLOW);
599 }
600
601 /* Put the object onto the stack */
602
603 WalkState->Operands [WalkState->NumOperands] = Object;
604 WalkState->NumOperands++;
605
602 Object, WalkState, WalkState->NumOperands));
603 return (AE_STACK_OVERFLOW);
604 }
605
606 /* Put the object onto the stack */
607
608 WalkState->Operands [WalkState->NumOperands] = Object;
609 WalkState->NumOperands++;
610
606 DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPush: Obj=%p [%s] State=%p #Ops=%X\n",
611 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p #Ops=%X\n",
607 Object, AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type),
608 WalkState, WalkState->NumOperands));
609
610 return (AE_OK);
611}
612
613
614/*******************************************************************************

--- 10 unchanged lines hidden (view full) ---

625 *
626 ******************************************************************************/
627
628ACPI_STATUS
629AcpiDsObjStackPopObject (
630 ACPI_OPERAND_OBJECT **Object,
631 ACPI_WALK_STATE *WalkState)
632{
612 Object, AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type),
613 WalkState, WalkState->NumOperands));
614
615 return (AE_OK);
616}
617
618
619/*******************************************************************************

--- 10 unchanged lines hidden (view full) ---

630 *
631 ******************************************************************************/
632
633ACPI_STATUS
634AcpiDsObjStackPopObject (
635 ACPI_OPERAND_OBJECT **Object,
636 ACPI_WALK_STATE *WalkState)
637{
638 PROC_NAME ("DsObjStackPopObject");
633
634
635 /* Check for stack underflow */
636
637 if (WalkState->NumOperands == 0)
638 {
639
640
641 /* Check for stack underflow */
642
643 if (WalkState->NumOperands == 0)
644 {
639 DEBUG_PRINT (ACPI_ERROR,
640 ("DsObjStackPop: Missing operand/stack empty! State=%p #Ops=%X\n",
645 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
646 "Missing operand/stack empty! State=%p #Ops=%X\n",
641 WalkState, WalkState->NumOperands));
642 *Object = NULL;
643 return (AE_AML_NO_OPERAND);
644 }
645
646 /* Pop the stack */
647
648 WalkState->NumOperands--;
649
650 /* Check for a valid operand */
651
652 if (!WalkState->Operands [WalkState->NumOperands])
653 {
647 WalkState, WalkState->NumOperands));
648 *Object = NULL;
649 return (AE_AML_NO_OPERAND);
650 }
651
652 /* Pop the stack */
653
654 WalkState->NumOperands--;
655
656 /* Check for a valid operand */
657
658 if (!WalkState->Operands [WalkState->NumOperands])
659 {
654 DEBUG_PRINT (ACPI_ERROR,
655 ("DsObjStackPop: Null operand! State=%p #Ops=%X\n",
660 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
661 "Null operand! State=%p #Ops=%X\n",
656 WalkState, WalkState->NumOperands));
657 *Object = NULL;
658 return (AE_AML_NO_OPERAND);
659 }
660
661 /* Get operand and set stack entry to null */
662
663 *Object = WalkState->Operands [WalkState->NumOperands];
664 WalkState->Operands [WalkState->NumOperands] = NULL;
665
662 WalkState, WalkState->NumOperands));
663 *Object = NULL;
664 return (AE_AML_NO_OPERAND);
665 }
666
667 /* Get operand and set stack entry to null */
668
669 *Object = WalkState->Operands [WalkState->NumOperands];
670 WalkState->Operands [WalkState->NumOperands] = NULL;
671
666 DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPopObject: Obj=%p [%s] State=%p #Ops=%X\n",
672 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p #Ops=%X\n",
667 *Object, AcpiUtGetTypeName ((*Object)->Common.Type),
668 WalkState, WalkState->NumOperands));
669
670 return (AE_OK);
671}
672
673
674/*******************************************************************************

--- 12 unchanged lines hidden (view full) ---

687
688ACPI_STATUS
689AcpiDsObjStackPop (
690 UINT32 PopCount,
691 ACPI_WALK_STATE *WalkState)
692{
693 UINT32 i;
694
673 *Object, AcpiUtGetTypeName ((*Object)->Common.Type),
674 WalkState, WalkState->NumOperands));
675
676 return (AE_OK);
677}
678
679
680/*******************************************************************************

--- 12 unchanged lines hidden (view full) ---

693
694ACPI_STATUS
695AcpiDsObjStackPop (
696 UINT32 PopCount,
697 ACPI_WALK_STATE *WalkState)
698{
699 UINT32 i;
700
701 PROC_NAME ("DsObjStackPop");
695
702
703
696 for (i = 0; i < PopCount; i++)
697 {
698 /* Check for stack underflow */
699
700 if (WalkState->NumOperands == 0)
701 {
704 for (i = 0; i < PopCount; i++)
705 {
706 /* Check for stack underflow */
707
708 if (WalkState->NumOperands == 0)
709 {
702 DEBUG_PRINT (ACPI_ERROR,
703 ("DsObjStackPop: Underflow! Count=%X State=%p #Ops=%X\n",
710 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
711 "Underflow! Count=%X State=%p #Ops=%X\n",
704 PopCount, WalkState, WalkState->NumOperands));
705 return (AE_STACK_UNDERFLOW);
706 }
707
708 /* Just set the stack entry to null */
709
710 WalkState->NumOperands--;
711 WalkState->Operands [WalkState->NumOperands] = NULL;
712 }
713
712 PopCount, WalkState, WalkState->NumOperands));
713 return (AE_STACK_UNDERFLOW);
714 }
715
716 /* Just set the stack entry to null */
717
718 WalkState->NumOperands--;
719 WalkState->Operands [WalkState->NumOperands] = NULL;
720 }
721
714 DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPop: Count=%X State=%p #Ops=%X\n",
722 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%X\n",
715 PopCount, WalkState, WalkState->NumOperands));
716
717 return (AE_OK);
718}
719
720
721/*******************************************************************************
722 *

--- 12 unchanged lines hidden (view full) ---

735ACPI_STATUS
736AcpiDsObjStackPopAndDelete (
737 UINT32 PopCount,
738 ACPI_WALK_STATE *WalkState)
739{
740 UINT32 i;
741 ACPI_OPERAND_OBJECT *ObjDesc;
742
723 PopCount, WalkState, WalkState->NumOperands));
724
725 return (AE_OK);
726}
727
728
729/*******************************************************************************
730 *

--- 12 unchanged lines hidden (view full) ---

743ACPI_STATUS
744AcpiDsObjStackPopAndDelete (
745 UINT32 PopCount,
746 ACPI_WALK_STATE *WalkState)
747{
748 UINT32 i;
749 ACPI_OPERAND_OBJECT *ObjDesc;
750
751 PROC_NAME ("DsObjStackPopAndDelete");
743
752
753
744 for (i = 0; i < PopCount; i++)
745 {
746 /* Check for stack underflow */
747
748 if (WalkState->NumOperands == 0)
749 {
754 for (i = 0; i < PopCount; i++)
755 {
756 /* Check for stack underflow */
757
758 if (WalkState->NumOperands == 0)
759 {
750 DEBUG_PRINT (ACPI_ERROR,
751 ("DsObjStackPop: Underflow! Count=%X State=%p #Ops=%X\n",
760 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
761 "Underflow! Count=%X State=%p #Ops=%X\n",
752 PopCount, WalkState, WalkState->NumOperands));
753 return (AE_STACK_UNDERFLOW);
754 }
755
756 /* Pop the stack and delete an object if present in this stack entry */
757
758 WalkState->NumOperands--;
759 ObjDesc = WalkState->Operands [WalkState->NumOperands];
760 if (ObjDesc)
761 {
762 AcpiUtRemoveReference (WalkState->Operands [WalkState->NumOperands]);
763 WalkState->Operands [WalkState->NumOperands] = NULL;
764 }
765 }
766
762 PopCount, WalkState, WalkState->NumOperands));
763 return (AE_STACK_UNDERFLOW);
764 }
765
766 /* Pop the stack and delete an object if present in this stack entry */
767
768 WalkState->NumOperands--;
769 ObjDesc = WalkState->Operands [WalkState->NumOperands];
770 if (ObjDesc)
771 {
772 AcpiUtRemoveReference (WalkState->Operands [WalkState->NumOperands]);
773 WalkState->Operands [WalkState->NumOperands] = NULL;
774 }
775 }
776
767 DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPop: Count=%X State=%p #Ops=%X\n",
777 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%X\n",
768 PopCount, WalkState, WalkState->NumOperands));
769
770 return (AE_OK);
771}
772
773
774/*******************************************************************************
775 *

--- 52 unchanged lines hidden (view full) ---

828 *
829 ******************************************************************************/
830
831ACPI_WALK_STATE *
832AcpiDsGetCurrentWalkState (
833 ACPI_WALK_LIST *WalkList)
834
835{
778 PopCount, WalkState, WalkState->NumOperands));
779
780 return (AE_OK);
781}
782
783
784/*******************************************************************************
785 *

--- 52 unchanged lines hidden (view full) ---

838 *
839 ******************************************************************************/
840
841ACPI_WALK_STATE *
842AcpiDsGetCurrentWalkState (
843 ACPI_WALK_LIST *WalkList)
844
845{
846 PROC_NAME ("DsGetCurrentWalkState");
836
847
837 DEBUG_PRINT (TRACE_PARSE, ("DsGetCurrentWalkState, =%p\n",
848
849 ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "DsGetCurrentWalkState, =%p\n",
838 WalkList->WalkState));
839
840 if (!WalkList)
841 {
842 return (NULL);
843 }
844
845 return (WalkList->WalkState);

--- 96 unchanged lines hidden (view full) ---

942{
943 ACPI_WALK_STATE *WalkState;
944 ACPI_STATUS Status;
945
946
947 FUNCTION_TRACE ("DsCreateWalkState");
948
949
850 WalkList->WalkState));
851
852 if (!WalkList)
853 {
854 return (NULL);
855 }
856
857 return (WalkList->WalkState);

--- 96 unchanged lines hidden (view full) ---

954{
955 ACPI_WALK_STATE *WalkState;
956 ACPI_STATUS Status;
957
958
959 FUNCTION_TRACE ("DsCreateWalkState");
960
961
950 AcpiUtAcquireMutex (ACPI_MTX_CACHES);
951 AcpiGbl_WalkStateCacheRequests++;
952
953 /* Check the cache first */
954
955 if (AcpiGbl_WalkStateCache)
962 WalkState = AcpiUtAcquireFromCache (ACPI_MEM_LIST_WALK);
963 if (!WalkState)
956 {
964 {
957 /* There is an object available, use it */
958
959 WalkState = AcpiGbl_WalkStateCache;
960 AcpiGbl_WalkStateCache = WalkState->Next;
961
962 AcpiGbl_WalkStateCacheHits++;
963 AcpiGbl_WalkStateCacheDepth--;
964
965 DEBUG_PRINTP (TRACE_EXEC, ("State %p from cache\n", WalkState));
966
967 AcpiUtReleaseMutex (ACPI_MTX_CACHES);
965 return_PTR (NULL);
968 }
969
966 }
967
970 else
971 {
972 /* The cache is empty, create a new object */
973
974 /* Avoid deadlock with ACPI_MEM_CALLOCATE */
975
976 AcpiUtReleaseMutex (ACPI_MTX_CACHES);
977
978 WalkState = ACPI_MEM_CALLOCATE (sizeof (ACPI_WALK_STATE));
979 if (!WalkState)
980 {
981 return_PTR (NULL);
982 }
983 }
984
985 WalkState->DataType = ACPI_DESC_TYPE_WALK;
986 WalkState->OwnerId = OwnerId;
987 WalkState->Origin = Origin;
988 WalkState->MethodDesc = MthDesc;
989 WalkState->WalkList = WalkList;
990
991 /* Init the method args/local */
992

--- 42 unchanged lines hidden (view full) ---

1035
1036 if (!WalkState)
1037 {
1038 return;
1039 }
1040
1041 if (WalkState->DataType != ACPI_DESC_TYPE_WALK)
1042 {
968 WalkState->DataType = ACPI_DESC_TYPE_WALK;
969 WalkState->OwnerId = OwnerId;
970 WalkState->Origin = Origin;
971 WalkState->MethodDesc = MthDesc;
972 WalkState->WalkList = WalkList;
973
974 /* Init the method args/local */
975

--- 42 unchanged lines hidden (view full) ---

1018
1019 if (!WalkState)
1020 {
1021 return;
1022 }
1023
1024 if (WalkState->DataType != ACPI_DESC_TYPE_WALK)
1025 {
1043 DEBUG_PRINTP (ACPI_ERROR, ("%p is not a valid walk state\n", WalkState));
1026 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p is not a valid walk state\n", WalkState));
1044 return;
1045 }
1046
1047
1048 /* Always must free any linked control states */
1049
1050 while (WalkState->ControlState)
1051 {

--- 19 unchanged lines hidden (view full) ---

1071 {
1072 State = WalkState->Results;
1073 WalkState->Results = State->Common.Next;
1074
1075 AcpiUtDeleteGenericState (State);
1076 }
1077
1078
1027 return;
1028 }
1029
1030
1031 /* Always must free any linked control states */
1032
1033 while (WalkState->ControlState)
1034 {

--- 19 unchanged lines hidden (view full) ---

1054 {
1055 State = WalkState->Results;
1056 WalkState->Results = State->Common.Next;
1057
1058 AcpiUtDeleteGenericState (State);
1059 }
1060
1061
1079 /* If walk cache is full, just free this wallkstate object */
1080
1081 if (AcpiGbl_WalkStateCacheDepth >= MAX_WALK_CACHE_DEPTH)
1082 {
1083 ACPI_MEM_FREE (WalkState);
1084 }
1085
1086 /* Otherwise put this object back into the cache */
1087
1088 else
1089 {
1090 AcpiUtAcquireMutex (ACPI_MTX_CACHES);
1091
1092 /* Clear the state */
1093
1094 MEMSET (WalkState, 0, sizeof (ACPI_WALK_STATE));
1095 WalkState->DataType = ACPI_DESC_TYPE_WALK;
1096
1097 /* Put the object at the head of the global cache list */
1098
1099 WalkState->Next = AcpiGbl_WalkStateCache;
1100 AcpiGbl_WalkStateCache = WalkState;
1101 AcpiGbl_WalkStateCacheDepth++;
1102
1103
1104 AcpiUtReleaseMutex (ACPI_MTX_CACHES);
1105 }
1106
1062 AcpiUtReleaseToCache (ACPI_MEM_LIST_WALK, WalkState);
1107 return_VOID;
1108}
1109
1110
1111/******************************************************************************
1112 *
1113 * FUNCTION: AcpiDsDeleteWalkStateCache
1114 *

--- 5 unchanged lines hidden (view full) ---

1120 * termination.
1121 *
1122 ******************************************************************************/
1123
1124void
1125AcpiDsDeleteWalkStateCache (
1126 void)
1127{
1063 return_VOID;
1064}
1065
1066
1067/******************************************************************************
1068 *
1069 * FUNCTION: AcpiDsDeleteWalkStateCache
1070 *

--- 5 unchanged lines hidden (view full) ---

1076 * termination.
1077 *
1078 ******************************************************************************/
1079
1080void
1081AcpiDsDeleteWalkStateCache (
1082 void)
1083{
1128 ACPI_WALK_STATE *Next;
1129
1130
1131 FUNCTION_TRACE ("DsDeleteWalkStateCache");
1132
1133
1084 FUNCTION_TRACE ("DsDeleteWalkStateCache");
1085
1086
1134 /* Traverse the global cache list */
1135
1136 while (AcpiGbl_WalkStateCache)
1137 {
1138 /* Delete one cached state object */
1139
1140 Next = AcpiGbl_WalkStateCache->Next;
1141 ACPI_MEM_FREE (AcpiGbl_WalkStateCache);
1142
1143 AcpiGbl_WalkStateCache = Next;
1144 AcpiGbl_WalkStateCacheDepth--;
1145 }
1146
1087 AcpiUtDeleteGenericCache (ACPI_MEM_LIST_WALK);
1147 return_VOID;
1148}
1149
1150
1088 return_VOID;
1089}
1090
1091