On Tue, Mar 29, 2016 at 10:43 PM, Andres Freund <[email protected]> wrote:
> My gut feeling is that we should do both 1) and 2).
>
> Dilip, could you test performance of reducing ppc's spinlock to 1 byte?
> Cross-compiling suggest that doing so "just works". I.e. replace the
> #if defined(__ppc__) typedef from an int to a char.
>
I set that, but after that it hangs, even Initdb hangs..
int
│164 s_lock(volatile slock_t *lock, const char *file, int line)
│165 {
│166 SpinDelayStatus delayStatus;
│167
│168 init_spin_delay(&delayStatus, (Pointer)lock, file,
line);
│169
* │170 while (TAS_SPIN(lock))
*
* │171 {
*
* >│172 make_spin_delay(&delayStatus);
*
* │173 } *
│174
I did not try to find the reason, but just built in debug mode and found it
never come out of this loop.
I clean build multiple times but problem persist,
Does it have dependency of some other variable of defined under PPC in some
other place ? I don't know..
/* PowerPC */
*#if* defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) ||
defined(__powerpc64__)
*#define* HAS_TEST_AND_SET
*typedef* *unsigned* *int* slock_t; --> changed like this
*#define* TAS(lock) tas(lock)
--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com