HIDDEN void tdep_init (void) { intrmask_t saved_mask; Debug(1, "called\n"); sigfillset (&unwi_full_mask); lock_acquire (&x86_64_lock, saved_mask); { if (tdep_init_done) /* another thread else beat us to it... */ goto out; mi_init (); dwarf_init (); tdep_init_mem_validate (); x86_64_local_addr_space_init (); tdep_init_done = 1; /* signal that we're initialized... */ } out: lock_release (&x86_64_lock, saved_mask); Debug(1, "done\n"); }
HIDDEN void tdep_init (void) { intrmask_t saved_mask; sigfillset (&unwi_full_mask); lock_acquire (&x86_64_lock, saved_mask); { if (tdep_init_done) /* another thread else beat us to it... */ goto out; mi_init (); dwarf_init (); tdep_init_mem_validate (); #ifndef UNW_REMOTE_ONLY x86_64_local_addr_space_init (); #endif tdep_init_done = 1; /* signal that we're initialized... */ } out: lock_release (&x86_64_lock, saved_mask); }
HIDDEN void tdep_init (void) { lock_init (&x86_64_lock, "tdep_init"); lock_acquire (&x86_64_lock); { if (tdep_init_done) /* another thread else beat us to it... */ goto out; mi_init (); dwarf_init (); tdep_init_mem_validate (); x86_64_local_addr_space_init (); tdep_init_done = 1; /* signal that we're initialized... */ } out: lock_release (&x86_64_lock); }