Exemple #1
0
void
_thr_rtld_init(void)
{
	struct RtldLockInfo li;

	li.lock_create  = _thr_rtld_lock_create;
	li.lock_destroy = _thr_rtld_lock_destroy;
	li.rlock_acquire = _thr_rtld_rlock_acquire;
	li.wlock_acquire = _thr_rtld_wlock_acquire;
	li.lock_release  = _thr_rtld_lock_release;
	li.thread_set_flag = _thr_rtld_set_flag;
	li.thread_clr_flag = _thr_rtld_clr_flag;
	li.at_fork = NULL;
	_rtld_thread_init(&li);
}
Exemple #2
0
void
lockdflt_init()
{
    int i;

    deflockinfo.rtli_version  = RTLI_VERSION;
    deflockinfo.lock_create   = def_lock_create;
    deflockinfo.lock_destroy  = def_lock_destroy;
    deflockinfo.rlock_acquire = def_rlock_acquire;
    deflockinfo.wlock_acquire = def_wlock_acquire;
    deflockinfo.lock_release  = def_lock_release;
    deflockinfo.thread_set_flag = def_thread_set_flag;
    deflockinfo.thread_clr_flag = def_thread_clr_flag;
    deflockinfo.at_fork = NULL;

    for (i = 0; i < RTLD_LOCK_CNT; i++) {
	    rtld_locks[i].mask   = (1 << i);
	    rtld_locks[i].handle = NULL;
    }

    memcpy(&lockinfo, &deflockinfo, sizeof(lockinfo));
    _rtld_thread_init(NULL);
    /*
     * Construct a mask to block all signals except traps which might
     * conceivably be generated within the dynamic linker itself.
     */
    sigfillset(&fullsigmask);
    sigdelset(&fullsigmask, SIGILL);
    sigdelset(&fullsigmask, SIGTRAP);
    sigdelset(&fullsigmask, SIGABRT);
    sigdelset(&fullsigmask, SIGEMT);
    sigdelset(&fullsigmask, SIGFPE);
    sigdelset(&fullsigmask, SIGBUS);
    sigdelset(&fullsigmask, SIGSEGV);
    sigdelset(&fullsigmask, SIGSYS);
}
Exemple #3
0
void
_thr_rtld_fini(void)
{
	_rtld_thread_init(NULL);
}