OLD | NEW |
---|---|
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
192 //! a state-carrying behavior. | 192 //! a state-carrying behavior. |
193 //! | 193 //! |
194 //! \return `KERN_SUCCESS` or `MACH_RCV_PORT_DIED`. `KERN_SUCCESS` is used when | 194 //! \return `KERN_SUCCESS` or `MACH_RCV_PORT_DIED`. `KERN_SUCCESS` is used when |
195 //! \a behavior is not a state-carrying behavior, or when it is a | 195 //! \a behavior is not a state-carrying behavior, or when it is a |
196 //! state-carrying behavior and \a set_thread_state is `true`. | 196 //! state-carrying behavior and \a set_thread_state is `true`. |
197 //! `MACH_RCV_PORT_DIED` is used when \a behavior is a state-carrying | 197 //! `MACH_RCV_PORT_DIED` is used when \a behavior is a state-carrying |
198 //! behavior and \a set_thread_state is `false`. | 198 //! behavior and \a set_thread_state is `false`. |
199 kern_return_t ExcServerSuccessfulReturnValue(exception_behavior_t behavior, | 199 kern_return_t ExcServerSuccessfulReturnValue(exception_behavior_t behavior, |
200 bool set_thread_state); | 200 bool set_thread_state); |
201 | 201 |
202 //! \brief Copies the old state to the new state for state-carrying exceptions. | |
203 //! | |
204 //! When the kernel sends a state-carrying exception request and the response is | |
205 //! successful (`MACH_MSG_SUCCESS`, a synonym for `KERN_SUCCESS`), it will set | |
206 //! a new thread state based on \a new_state and \a new_state_count. To ease | |
207 //! initialization of the new state, this function copies \a old_state and | |
208 //! \a old_state_count. This is only done if \a behavior indicates a | |
209 //! state-carrying exception. | |
210 //! | |
211 //! \param[in] behavior The behavior of the exception handler as invoked. This | |
212 //! may be taken directly from the \a behavior parameter of | |
213 //! internal::SimplifiedExcServer::Interface::CatchException(), for example. | |
214 //! \param[in] old_state The original state value. This may be taken directly | |
215 //! from the \a old_state parameter of | |
216 //! internal::SimplifiedExcServer::Interface::CatchException(), for example. | |
217 //! \param[in] old_state_count The number of significant `natural_t` words in \a | |
218 //! old_state. This may be taken directly from the \a old_state_count | |
219 //! parameter of internal::SimplifiedExcServer::Interface::CatchException(), | |
220 //! for example. | |
221 //! \param[out] new_state The state value to be set. This may be taken directly | |
222 //! from the \a new_state parameter of | |
223 //! internal::SimplifiedExcServer::Interface::CatchException(), for example. | |
224 //! This parameter is untouched if \a behavior is not state-carrying. | |
225 //! \param[inout] new_state_count On entry, the number of `natural_t` words | |
226 //! available to be written to in \a new_state. On return, the number of | |
227 //! significant `natural_t` words in \a new_state. This may be taken | |
228 //! directly from the \a new_state_count parameter of | |
229 //! internal::SimplifiedExcServer::Interface::CatchException(), for example. | |
230 //! This parameter is untouched if \a behavior is not state-carrying. If \a | |
231 //! \a behavior is state-carrying, this parameter should be at least as | |
232 //! large as \a old_state_count. | |
233 void ExcServerCopyState(exception_behavior_t behavior, | |
234 const natural_t* old_state, | |
Robert Sesek
2015/03/31 23:03:31
Why use natural_t here instead of thread_state_t ?
Mark Mentovai
2015/03/31 23:13:23
Robert Sesek wrote:
Robert Sesek
2015/04/01 16:07:00
It's a little subtle, but no I think it's fine.
| |
235 mach_msg_type_number_t old_state_count, | |
236 thread_state_t new_state, | |
237 mach_msg_type_number_t* new_state_count); | |
238 | |
202 } // namespace crashpad | 239 } // namespace crashpad |
203 | 240 |
204 #endif // CRASHPAD_UTIL_MACH_EXC_SERVER_VARIANTS_H_ | 241 #endif // CRASHPAD_UTIL_MACH_EXC_SERVER_VARIANTS_H_ |
OLD | NEW |