We have an eBPF program that shares a 64-bits integer with userspace using an array map. The eBPF program only reads the integer while the user-space application only writes it.
We know this is possible that under some conditions, for example the integer is not aligned to cache line size in x86_64, the reader can see a partially updated value. We wonder if eBPF have some guarantees about atomicity of the load operation in this case, or if this is totally dependent on the target architecture.
Is there a way to implement this without using bpf_spin_lock?