Generalize futex observers for the compare_exchanges in lockless_queue

This is necessary to get lockless_queue_death_test running on aarch64.

Change-Id: I621fe55fac4d43a8e40d053d4f069d618e738f7d
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/ipc_lib/BUILD b/aos/ipc_lib/BUILD
index c24fcee..c124fe0 100644
--- a/aos/ipc_lib/BUILD
+++ b/aos/ipc_lib/BUILD
@@ -12,6 +12,7 @@
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
+        ":shm_observers",
         "//aos:macros",
         "//aos:thread_local",
         "//aos/util:compiler_memory_barrier",
@@ -146,6 +147,7 @@
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
+        ":shm_observers",
         "@com_github_google_glog//:glog",
     ],
 )
@@ -225,6 +227,7 @@
         ":event",
         ":lockless_queue",
         ":queue_racer",
+        ":shm_observers",
         ":signalfd",
         "//aos/events:epoll",
         "//aos/libc:aos_strsignal",
@@ -359,3 +362,13 @@
         "//aos/time",
     ],
 )
+
+cc_library(
+    name = "shm_observers",
+    srcs = [
+        "shm_observers.cc",
+    ],
+    hdrs = [
+        "shm_observers.h",
+    ],
+)