OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_SIGNAL_HANDLER_H_ | 5 #ifndef VM_SIGNAL_HANDLER_H_ |
6 #define VM_SIGNAL_HANDLER_H_ | 6 #define VM_SIGNAL_HANDLER_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 | 10 |
(...skipping 25 matching lines...) Expand all Loading... |
36 }; | 36 }; |
37 #endif | 37 #endif |
38 | 38 |
39 namespace dart { | 39 namespace dart { |
40 | 40 |
41 typedef void (*SignalAction)(int signal, siginfo_t* info, | 41 typedef void (*SignalAction)(int signal, siginfo_t* info, |
42 void* context); | 42 void* context); |
43 | 43 |
44 class SignalHandler : public AllStatic { | 44 class SignalHandler : public AllStatic { |
45 public: | 45 public: |
| 46 // Note: older linux kernels on ARM might require a trampoline to |
| 47 // work around incorrect Thumb -> ARM transitions. See SignalHandlerTrampoline |
| 48 // in thread_interrupter_android.cc for more details. |
46 static void Install(SignalAction action); | 49 static void Install(SignalAction action); |
47 static void Remove(); | 50 static void Remove(); |
48 static uintptr_t GetProgramCounter(const mcontext_t& mcontext); | 51 static uintptr_t GetProgramCounter(const mcontext_t& mcontext); |
49 static uintptr_t GetFramePointer(const mcontext_t& mcontext); | 52 static uintptr_t GetFramePointer(const mcontext_t& mcontext); |
50 static uintptr_t GetCStackPointer(const mcontext_t& mcontext); | 53 static uintptr_t GetCStackPointer(const mcontext_t& mcontext); |
51 static uintptr_t GetDartStackPointer(const mcontext_t& mcontext); | 54 static uintptr_t GetDartStackPointer(const mcontext_t& mcontext); |
52 static uintptr_t GetLinkRegister(const mcontext_t& mcontext); | 55 static uintptr_t GetLinkRegister(const mcontext_t& mcontext); |
53 private: | 56 private: |
54 }; | 57 }; |
55 | 58 |
56 | 59 |
57 } // namespace dart | 60 } // namespace dart |
58 | 61 |
59 #endif // VM_SIGNAL_HANDLER_H_ | 62 #endif // VM_SIGNAL_HANDLER_H_ |
OLD | NEW |