Re: LW_SHARED_MASK macro

Поиск
Список
Период
Сортировка
От Alexander Korotkov
Тема Re: LW_SHARED_MASK macro
Дата
Msg-id CAPpHfduF600zdV_O_ySsNVWtY9P-LGocnUM00DVf53AtAAgZog@mail.gmail.com
обсуждение исходный текст
Ответ на Re: LW_SHARED_MASK macro  (Andres Freund <andres@anarazel.de>)
Ответы Re: LW_SHARED_MASK macro  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
On Thu, Sep 17, 2015 at 5:38 PM, Andres Freund <andres@anarazel.de> wrote:
On 2015-09-17 14:35:20 +0300, Alexander Korotkov wrote:
> while exploring lwlock.c I found following macro to be strange.
>
> #define LW_SHARED_MASK ((uint32)(1 << 23))
>
> This is macro is used to extract number of shared locks from state.
>
> ereport(LOG,
> (errhidestmt(true),
> errhidecontext(true),
> errmsg("%d: %s(%s): excl %u shared %u haswaiters %u waiters %u rOK %d",
> MyProcPid,
> where, MainLWLockNames[id],
> !!(state & LW_VAL_EXCLUSIVE),
> state & LW_SHARED_MASK,
> !!(state & LW_FLAG_HAS_WAITERS),
> pg_atomic_read_u32(&lock->nwaiters),
> !!(state & LW_FLAG_RELEASE_OK))));
>
>
> Should it be ((uint32) ((1 << 24)-1)) instead?

Argh, that's somewhat embarassing. You're absolutely right. Luckily it's
only used for LOCK_DEBUG, but still...

Great. BTW, are you going to commit this?

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

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

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: COPY planning
Следующее
От: Andres Freund
Дата:
Сообщение: Re: LW_SHARED_MASK macro