Re: LWLock optimization for multicore Power machines

Поиск
Список
Период
Сортировка
От Alexander Korotkov
Тема Re: LWLock optimization for multicore Power machines
Дата
Msg-id CAPpHfdurZCPHPLw4z8PyhCSWKgex5pz+qud5xodfFJY4xBMWpw@mail.gmail.com
обсуждение исходный текст
Ответ на [HACKERS] LWLock optimization for multicore Power machines  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Ответы Re: LWLock optimization for multicore Power machines  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Список pgsql-hackers
On Sat, Mar 25, 2017 at 11:32 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Alexander Korotkov <a.korotkov@postgrespro.ru> writes:
> I moved PPC implementation of pg_atomic_fetch_mask_add_u32() into
> port/atomics/arch-ppc.h.  I also had to declare pg_atomic_uint32 there to
> satisfy usage of this type as argument
> of pg_atomic_fetch_mask_add_u32_impl().

Hm, you did something wrong there, because now I get a bunch of failures:

ccache gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -g -O2 -I../../../../src/include    -c -o brin.o brin.c
In file included from ../../../../src/include/port/atomics.h:123,
                 from ../../../../src/include/utils/dsa.h:17,
                 from ../../../../src/include/nodes/tidbitmap.h:26,
                 from ../../../../src/include/access/genam.h:19,
                 from ../../../../src/include/nodes/execnodes.h:17,
                 from ../../../../src/include/access/brin.h:14,
                 from brin.c:18:
../../../../src/include/port/atomics/generic.h:154:3: error: #error "No pg_atomic_test_and_set provided"
../../../../src/include/port/atomics.h: In function 'pg_atomic_init_flag':
../../../../src/include/port/atomics.h:178: warning: implicit declaration of function 'pg_atomic_init_flag_impl'
../../../../src/include/port/atomics.h: In function 'pg_atomic_test_set_flag':
../../../../src/include/port/atomics.h:193: warning: implicit declaration of function 'pg_atomic_test_set_flag_impl'
../../../../src/include/port/atomics.h: In function 'pg_atomic_unlocked_test_flag':
../../../../src/include/port/atomics.h:208: warning: implicit declaration of function 'pg_atomic_unlocked_test_flag_impl'
... and so on.

I'm not entirely sure what the intended structure of these header files
is.  Maybe Andres can comment.

It seems that on this platform definition of atomics should be provided by fallback.h.  But it doesn't because I already defined PG_HAVE_ATOMIC_U32_SUPPORT in arch-ppc.h.  I think in this case we shouldn't provide ppc-specific implementation of pg_atomic_fetch_mask_add_u32().  However, I don't know how to do this assuming arch-ppc.h is included before compiler-specific headers.  Thus, in arch-ppc.h we don't know yet if we would find implementation of atomics for this platform.  One possible solution is to provide assembly implementation for all atomics in arch-ppc.h.

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Valgrind failures caused by multivariate stats patch
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Valgrind failures caused by multivariate stats patch