view auto/threads @ 3755:76e3a93821b1

fix race condition if during reconfiguration two cache managers try to delete old inactive entries: one of them removes a entry just locked by other manager from the queue and the rbtree as long inactive entry, causes the latter manager to segfault leaving cache mutex locked, the bug has been introduced in r3727
author Igor Sysoev <igor@sysoev.ru>
date Thu, 02 Sep 2010 14:31:47 +0000
parents 458b6c3fea65
children
line wrap: on
line source


# Copyright (C) Igor Sysoev


case $USE_THREADS in
    rfork)
        have=NGX_THREADS . auto/have
        have=NGX_USE_RFORK . auto/have
        CORE_DEPS="$CORE_DEPS $FREEBSD_RFORK_DEPS"
        CORE_SRCS="$CORE_SRCS $FREEBSD_RFORK_SRCS"

        case "$NGX_PLATFORM" in
            *:i386)
                if [ \( $version -gt 500000 -a $version -lt 501000 \) \
                     -o $version -lt 491000 ]
                then
                    CORE_SRCS="$CORE_SRCS $FREEBSD_RFORK_THREAD_SRCS"
                fi
            ;;
        esac
    ;;

    pthreads)
        have=NGX_THREADS . auto/have
        CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
        CORE_LIBS="$CORE_LIBS -lpthread"
    ;;

    libthr)
        have=NGX_THREADS . auto/have
        CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
        CORE_LIBS="$CORE_LIBS -lthr"
    ;;

    linuxthreads)
        have=NGX_THREADS . auto/have
        have=NGX_LINUXTHREADS . auto/have
        CFLAGS="$CFLAGS -D_THREAD_SAFE"
        CFLAGS="$CFLAGS -I /usr/local/include/pthread/linuxthreads"
        CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
        CORE_LIBS="$CORE_LIBS -L /usr/local/lib -llthread -llgcc_r"
    ;;

    libc_r)
        case "$NGX_PLATFORM" in
            FreeBSD:[34]*)
                have=NGX_THREADS . auto/have
                CFLAGS="$CFLAGS -pthread"
                CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
                CORE_LIBS="$CORE_LIBS -pthread"
            ;;

            FreeBSD:[56]*)
                have=NGX_THREADS . auto/have
                CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
                CORE_LIBS="$CORE_LIBS -lc_r"
            ;;
        esac
    ;;

    NO)
    ;;

    *)
        have=NGX_THREADS . auto/have
        CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
        CORE_LIBS="$CORE_LIBS -l$USE_THREADS"
    ;;

esac