This adds a "hash_ops" structure, which allows using PidRef structures
as keys in Hashmap and Set objects.
return -ESRCH;
}
+
+static void pidref_hash_func(const PidRef *pidref, struct siphash *state) {
+ siphash24_compress(&pidref->pid, sizeof(pidref->pid), state);
+}
+
+static int pidref_compare_func(const PidRef *a, const PidRef *b) {
+ return CMP(a->pid, b->pid);
+}
+
+DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR(
+ pidref_hash_ops,
+ PidRef,
+ pidref_hash_func,
+ pidref_compare_func,
+ pidref_free);
int pidref_sigqueue(PidRef *pidfref, int sig, int value);
#define TAKE_PIDREF(p) TAKE_GENERIC((p), PidRef, PIDREF_NULL)
+
+extern const struct hash_ops pidref_hash_ops; /* Has destructor call for pidref_free(), i.e. expects heap allocated PidRef as keys */