opr: Introduce opr_cache
[openafs.git] / src / opr / opr.h
index 5891a70..1130b33 100644 (file)
@@ -17,7 +17,6 @@ extern void opr_NTAbort(void);
 #endif
 
 extern void opr_AssertionFailed(const char *, int) AFS_NORETURN;
-extern void opr_AssertFailU(const char *, const char *, int) AFS_NORETURN;
 
 /* opr_Assert is designed to work in a similar way to the operating
  * system's assert function. This means that in future, it may compile
@@ -71,8 +70,38 @@ extern void opr_AssertFailU(const char *, const char *, int) AFS_NORETURN;
 
 extern char *opr_lcstring(char *d, const char *s, int n) AFS_NONNULL((1,2));
 extern char *opr_ucstring(char *d, const char *s, int n) AFS_NONNULL((1,2));
-extern void opr_stolower(char *s) AFS_NONNULL(());
-extern void opr_stoupper(char *s) AFS_NONNULL(());
+extern void opr_stolower(char *s) AFS_NONNULL((1));
+extern void opr_stoupper(char *s) AFS_NONNULL((1));
 extern char *opr_strcompose(char *buf, size_t len, ...) AFS_NONNULL((1));
 
+/* threadname.c */
+
+#if defined(AFS_PTHREAD_ENV) && !defined(AFS_NT40_ENV)
+extern void opr_threadname_set(const char *threadname);
+#else
+static_inline void
+opr_threadname_set(const char *threadname)
+{
+    /* noop */
+}
+#endif
+
+/* cache.c */
+
+struct opr_cache_opts {
+    afs_uint32 max_entries;
+    afs_uint32 n_buckets;
+};
+struct opr_cache;
+
+extern int opr_cache_init(struct opr_cache_opts *opts,
+                         struct opr_cache **a_cache) AFS_NONNULL();
+extern void opr_cache_free(struct opr_cache **a_cache) AFS_NONNULL();
+
+extern int opr_cache_get(struct opr_cache *cache, void *key_buf,
+                        size_t key_len, void *val_buf, size_t *a_val_len)
+                        AFS_NONNULL((4,5));
+extern void opr_cache_put(struct opr_cache *cache, void *key_buf,
+                         size_t key_len, void *val_buf, size_t val_len);
+
 #endif