+static int (*hash_table_comparator)(struct user_info *a, struct user_info *b);
+
+static int comp_wrapper(const void *a, const void *b)
+{
+ struct user_info *x = uid_hash_table + *(unsigned *)a;
+ struct user_info *y = uid_hash_table + *(unsigned *)b;
+ return hash_table_comparator(x, y);
+}
+
+/**
+ * Sort the hash table according to a given comparator.
+ *
+ * \param comp The comparator.
+ *
+ * The comparator is a user-defined function which must return 1, 0, or -1.
+ *
+ * \sa qsort(3).
+ */
+void sort_hash_table(int (*comp)(struct user_info *, struct user_info *))
+{
+ hash_table_comparator = comp;
+ qsort(uid_hash_table_sort_idx, uid_hash_table_size,
+ sizeof(*uid_hash_table_sort_idx), comp_wrapper);
+}
+
+/**
+ * Open the osl tables for all admissible uids.
+ *
+ * \param admissible_uids Determines which uids are considered admissible.
+ *
+ * Each slot in the hash table contains, among other information, a bit which
+ * specifies whether the uid of the slot is admissible in the current context.
+ *
+ * This function iterates over all entries in the hash table and checks for
+ * each used slot whether the corresponding uid is admissible with respect to
+ * \a admissible_uids. If so, it sets the admissible bit for this slot and
+ * opens the osl table of the uid.
+ *
+ * \return Stamdard.
+ */
+int open_admissible_user_tables(struct uid_range *admissible_uids)