< prev index next >

src/os/posix/vm/os_posix.hpp

Print this page
rev 10257 : 8149036: Add tracing for thread related events at os level
Reviewed-by: coleenp


  59 
  60   // Returns one-line short description of a signal set in a user provided buffer.
  61   static const char* describe_signal_set_short(const sigset_t* set, char* buffer, size_t size);
  62 
  63   // Prints a short one-line description of a signal set.
  64   static void print_signal_set_short(outputStream* st, const sigset_t* set);
  65 
  66   // unblocks the signal masks for current thread
  67   static int unblock_thread_signal_mask(const sigset_t *set);
  68 
  69   // Writes a one-line description of a combination of sigaction.sa_flags
  70   // into a user provided buffer. Returns that buffer.
  71   static const char* describe_sa_flags(int flags, char* buffer, size_t size);
  72 
  73   // Prints a one-line description of a combination of sigaction.sa_flags.
  74   static void print_sa_flags(outputStream* st, int flags);
  75 
  76   static address ucontext_get_pc(const ucontext_t* ctx);
  77   // Set PC into context. Needed for continuation after signal.
  78   static void ucontext_set_pc(ucontext_t* ctx, address pc);





  79 };
  80 
  81 /*
  82  * Crash protection for the watcher thread. Wrap the callback
  83  * with a sigsetjmp and in case of a SIGSEGV/SIGBUS we siglongjmp
  84  * back.
  85  * To be able to use this - don't take locks, don't rely on destructors,
  86  * don't make OS library calls, don't allocate memory, don't print,
  87  * don't call code that could leave the heap / memory in an inconsistent state,
  88  * or anything else where we are not in control if we suddenly jump out.
  89  */
  90 class WatcherThreadCrashProtection : public StackObj {
  91 public:
  92   WatcherThreadCrashProtection();
  93   bool call(os::CrashProtectionCallback& cb);
  94 
  95   static void check_crash_protection(int signal, Thread* thread);
  96 private:
  97   void restore();
  98   sigjmp_buf _jmpbuf;


  59 
  60   // Returns one-line short description of a signal set in a user provided buffer.
  61   static const char* describe_signal_set_short(const sigset_t* set, char* buffer, size_t size);
  62 
  63   // Prints a short one-line description of a signal set.
  64   static void print_signal_set_short(outputStream* st, const sigset_t* set);
  65 
  66   // unblocks the signal masks for current thread
  67   static int unblock_thread_signal_mask(const sigset_t *set);
  68 
  69   // Writes a one-line description of a combination of sigaction.sa_flags
  70   // into a user provided buffer. Returns that buffer.
  71   static const char* describe_sa_flags(int flags, char* buffer, size_t size);
  72 
  73   // Prints a one-line description of a combination of sigaction.sa_flags.
  74   static void print_sa_flags(outputStream* st, int flags);
  75 
  76   static address ucontext_get_pc(const ucontext_t* ctx);
  77   // Set PC into context. Needed for continuation after signal.
  78   static void ucontext_set_pc(ucontext_t* ctx, address pc);
  79 
  80   // Helper function; describes pthread attributes as short string. String is written
  81   // to buf with len buflen; buf is returned.
  82   static char* describe_pthread_attr(char* buf, size_t buflen, const pthread_attr_t* attr);
  83 
  84 };
  85 
  86 /*
  87  * Crash protection for the watcher thread. Wrap the callback
  88  * with a sigsetjmp and in case of a SIGSEGV/SIGBUS we siglongjmp
  89  * back.
  90  * To be able to use this - don't take locks, don't rely on destructors,
  91  * don't make OS library calls, don't allocate memory, don't print,
  92  * don't call code that could leave the heap / memory in an inconsistent state,
  93  * or anything else where we are not in control if we suddenly jump out.
  94  */
  95 class WatcherThreadCrashProtection : public StackObj {
  96 public:
  97   WatcherThreadCrashProtection();
  98   bool call(os::CrashProtectionCallback& cb);
  99 
 100   static void check_crash_protection(int signal, Thread* thread);
 101 private:
 102   void restore();
 103   sigjmp_buf _jmpbuf;
< prev index next >