Lines 76-90
static u32 acpi_ex_digits_needed(acpi_integer value, u32 base);
Link Here
|
76 |
* |
76 |
* |
77 |
* PARAMETERS: None |
77 |
* PARAMETERS: None |
78 |
* |
78 |
* |
79 |
* RETURN: None |
79 |
* RETURN: Status |
80 |
* |
80 |
* |
81 |
* DESCRIPTION: Enter the interpreter execution region. Failure to enter |
81 |
* DESCRIPTION: Enter the interpreter execution region. Failure to enter |
82 |
* the interpreter region is a fatal system error. Used in |
82 |
* the interpreter region is a fatal system error |
83 |
* conjunction with exit_interpreter. |
|
|
84 |
* |
83 |
* |
85 |
******************************************************************************/ |
84 |
******************************************************************************/ |
86 |
|
85 |
|
87 |
void acpi_ex_enter_interpreter(void) |
86 |
acpi_status acpi_ex_enter_interpreter(void) |
88 |
{ |
87 |
{ |
89 |
acpi_status status; |
88 |
acpi_status status; |
90 |
|
89 |
|
Lines 92-133
void acpi_ex_enter_interpreter(void)
Link Here
|
92 |
|
91 |
|
93 |
status = acpi_ut_acquire_mutex(ACPI_MTX_INTERPRETER); |
92 |
status = acpi_ut_acquire_mutex(ACPI_MTX_INTERPRETER); |
94 |
if (ACPI_FAILURE(status)) { |
93 |
if (ACPI_FAILURE(status)) { |
95 |
ACPI_ERROR((AE_INFO, |
94 |
ACPI_ERROR((AE_INFO, "Could not acquire interpreter mutex")); |
96 |
"Could not acquire AML Interpreter mutex")); |
|
|
97 |
} |
95 |
} |
98 |
|
96 |
|
99 |
return_VOID; |
97 |
return_ACPI_STATUS(status); |
100 |
} |
|
|
101 |
|
102 |
/******************************************************************************* |
103 |
* |
104 |
* FUNCTION: acpi_ex_reacquire_interpreter |
105 |
* |
106 |
* PARAMETERS: None |
107 |
* |
108 |
* RETURN: None |
109 |
* |
110 |
* DESCRIPTION: Reacquire the interpreter execution region from within the |
111 |
* interpreter code. Failure to enter the interpreter region is a |
112 |
* fatal system error. Used in conjuction with |
113 |
* relinquish_interpreter |
114 |
* |
115 |
******************************************************************************/ |
116 |
|
117 |
void acpi_ex_reacquire_interpreter(void) |
118 |
{ |
119 |
ACPI_FUNCTION_TRACE(ex_reacquire_interpreter); |
120 |
|
121 |
/* |
122 |
* If the global serialized flag is set, do not release the interpreter, |
123 |
* since it was not actually released by acpi_ex_relinquish_interpreter. |
124 |
* This forces the interpreter to be single threaded. |
125 |
*/ |
126 |
if (!acpi_gbl_all_methods_serialized) { |
127 |
acpi_ex_enter_interpreter(); |
128 |
} |
129 |
|
130 |
return_VOID; |
131 |
} |
98 |
} |
132 |
|
99 |
|
133 |
/******************************************************************************* |
100 |
/******************************************************************************* |
Lines 138-146
void acpi_ex_reacquire_interpreter(void)
Link Here
|
138 |
* |
105 |
* |
139 |
* RETURN: None |
106 |
* RETURN: None |
140 |
* |
107 |
* |
141 |
* DESCRIPTION: Exit the interpreter execution region. This is the top level |
108 |
* DESCRIPTION: Exit the interpreter execution region |
142 |
* routine used to exit the interpreter when all processing has |
109 |
* |
143 |
* been completed. |
110 |
* Cases where the interpreter is unlocked: |
|
|
111 |
* 1) Completion of the execution of a control method |
112 |
* 2) Method blocked on a Sleep() AML opcode |
113 |
* 3) Method blocked on an Acquire() AML opcode |
114 |
* 4) Method blocked on a Wait() AML opcode |
115 |
* 5) Method blocked to acquire the global lock |
116 |
* 6) Method blocked to execute a serialized control method that is |
117 |
* already executing |
118 |
* 7) About to invoke a user-installed opregion handler |
144 |
* |
119 |
* |
145 |
******************************************************************************/ |
120 |
******************************************************************************/ |
146 |
|
121 |
|
Lines 152-197
void acpi_ex_exit_interpreter(void)
Link Here
|
152 |
|
127 |
|
153 |
status = acpi_ut_release_mutex(ACPI_MTX_INTERPRETER); |
128 |
status = acpi_ut_release_mutex(ACPI_MTX_INTERPRETER); |
154 |
if (ACPI_FAILURE(status)) { |
129 |
if (ACPI_FAILURE(status)) { |
155 |
ACPI_ERROR((AE_INFO, |
130 |
ACPI_ERROR((AE_INFO, "Could not release interpreter mutex")); |
156 |
"Could not release AML Interpreter mutex")); |
|
|
157 |
} |
158 |
|
159 |
return_VOID; |
160 |
} |
161 |
|
162 |
/******************************************************************************* |
163 |
* |
164 |
* FUNCTION: acpi_ex_relinquish_interpreter |
165 |
* |
166 |
* PARAMETERS: None |
167 |
* |
168 |
* RETURN: None |
169 |
* |
170 |
* DESCRIPTION: Exit the interpreter execution region, from within the |
171 |
* interpreter - before attempting an operation that will possibly |
172 |
* block the running thread. |
173 |
* |
174 |
* Cases where the interpreter is unlocked internally |
175 |
* 1) Method to be blocked on a Sleep() AML opcode |
176 |
* 2) Method to be blocked on an Acquire() AML opcode |
177 |
* 3) Method to be blocked on a Wait() AML opcode |
178 |
* 4) Method to be blocked to acquire the global lock |
179 |
* 5) Method to be blocked waiting to execute a serialized control method |
180 |
* that is currently executing |
181 |
* 6) About to invoke a user-installed opregion handler |
182 |
* |
183 |
******************************************************************************/ |
184 |
|
185 |
void acpi_ex_relinquish_interpreter(void) |
186 |
{ |
187 |
ACPI_FUNCTION_TRACE(ex_relinquish_interpreter); |
188 |
|
189 |
/* |
190 |
* If the global serialized flag is set, do not release the interpreter. |
191 |
* This forces the interpreter to be single threaded. |
192 |
*/ |
193 |
if (!acpi_gbl_all_methods_serialized) { |
194 |
acpi_ex_exit_interpreter(); |
195 |
} |
131 |
} |
196 |
|
132 |
|
197 |
return_VOID; |
133 |
return_VOID; |
Lines 205-212
void acpi_ex_relinquish_interpreter(void)
Link Here
|
205 |
* |
141 |
* |
206 |
* RETURN: none |
142 |
* RETURN: none |
207 |
* |
143 |
* |
208 |
* DESCRIPTION: Truncate an ACPI Integer to 32 bits if the execution mode is |
144 |
* DESCRIPTION: Truncate a number to 32-bits if the currently executing method |
209 |
* 32-bit, as determined by the revision of the DSDT. |
145 |
* belongs to a 32-bit ACPI table. |
210 |
* |
146 |
* |
211 |
******************************************************************************/ |
147 |
******************************************************************************/ |
212 |
|
148 |
|