Thread
Commits
-
Fix fallback implementation for pg_atomic_test_set_flag().
- c23677844c96 12.18 landed
- 231a445ea31d 13.14 landed
- a54129e8b696 14.11 landed
- 18f47989ecb0 15.6 landed
- 2927b1dca7ae 16.2 landed
- 69c32b8b3535 17.0 landed
-
Add a basic atomic ops API abstracting away platform/architecture details.
- b64d92f1a560 9.5.0 cited
-
typo in fallback implementation for pg_atomic_test_set_flag()
Nathan Bossart <nathandbossart@gmail.com> — 2023-11-14T03:54:39Z
I noticed that the fallback pg_atomic_test_set_flag_impl() implementation that uses atomic-exchange is giving pg_atomic_exchange_u32_impl() an extra argument. This appears to be copy/pasted from the atomic-compare-exchange version a few lines down. It looks like it's been this way since this code was introduced in commit b64d92f (2014). Patch attached. I'd ordinarily suggest removing this section of code since it doesn't seem to have gotten much coverage, but I'm actually looking into adding some faster atomic-exchange implementations that may activate this code for certain compiler/architecture combinations. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com
-
Re: typo in fallback implementation for pg_atomic_test_set_flag()
Andres Freund <andres@anarazel.de> — 2023-11-15T03:17:32Z
Hi, On 2023-11-13 21:54:39 -0600, Nathan Bossart wrote: > I noticed that the fallback pg_atomic_test_set_flag_impl() implementation > that uses atomic-exchange is giving pg_atomic_exchange_u32_impl() an extra > argument. This appears to be copy/pasted from the atomic-compare-exchange > version a few lines down. It looks like it's been this way since this code > was introduced in commit b64d92f (2014). Patch attached. Oops. I guess it's not too surprising this wasn't required - if the compiler has any atomic intrinsics it's going to have support for the flag stuff. And there's practically no compiler that Are you planning to apply the fix? > I'd ordinarily suggest removing this section of code since it doesn't seem > to have gotten much coverage Which section precisely? > but I'm actually looking into adding some faster atomic-exchange > implementations that may activate this code for certain > compiler/architecture combinations. Hm. I don't really see how adding a faster atomic-exchange implementation could trigger this implementation being used? Greetings, Andres Freund
-
Re: typo in fallback implementation for pg_atomic_test_set_flag()
Nathan Bossart <nathandbossart@gmail.com> — 2023-11-15T15:52:34Z
On Tue, Nov 14, 2023 at 07:17:32PM -0800, Andres Freund wrote: > Are you planning to apply the fix? Yes, I'll take care of it. >> I'd ordinarily suggest removing this section of code since it doesn't seem >> to have gotten much coverage > > Which section precisely? The lines below this: /* * provide fallback for test_and_set using atomic_exchange if available */ #if !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_EXCHANGE_U32) but above this: /* * provide fallback for test_and_set using atomic_compare_exchange if * available. */ #elif !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) >> but I'm actually looking into adding some faster atomic-exchange >> implementations that may activate this code for certain >> compiler/architecture combinations. > > Hm. I don't really see how adding a faster atomic-exchange implementation > could trigger this implementation being used? That'd define PG_HAVE_ATOMIC_EXCHANGE_U32, so this fallback might be used if PG_HAVE_ATOMIC_TEST_SET_FLAG is not defined. I haven't traced through all the #ifdefs that lead to this point exhaustively, though, so perhaps this is still unlikely. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com
-
Re: typo in fallback implementation for pg_atomic_test_set_flag()
Nathan Bossart <nathandbossart@gmail.com> — 2023-11-15T21:13:29Z
On Wed, Nov 15, 2023 at 09:52:34AM -0600, Nathan Bossart wrote: > On Tue, Nov 14, 2023 at 07:17:32PM -0800, Andres Freund wrote: >> Are you planning to apply the fix? > > Yes, I'll take care of it. Committed and back-patched. I probably could've skipped back-patching this one since it doesn't seem to be causing any problems yet, but I didn't see any reason not to back-patch, either. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com