summaryrefslogtreecommitdiff
path: root/fs/intermezzo/kml_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/intermezzo/kml_utils.c')
-rw-r--r--fs/intermezzo/kml_utils.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/fs/intermezzo/kml_utils.c b/fs/intermezzo/kml_utils.c
new file mode 100644
index 000000000000..b1c60f90deab
--- /dev/null
+++ b/fs/intermezzo/kml_utils.c
@@ -0,0 +1,44 @@
+#include <linux/list.h>
+#include <linux/mm.h>
+#include <linux/smp_lock.h>
+#include <linux/slab.h>
+#include <linux/vmalloc.h>
+
+#include <linux/intermezzo_fs.h>
+#include <linux/intermezzo_kml.h>
+
+
+// dlogit -- oppsite to logit ()
+// return the sbuf + size;
+char *dlogit (void *tbuf, const void *sbuf, int size)
+{
+ char *ptr = (char *)sbuf;
+ memcpy(tbuf, ptr, size);
+ ptr += size;
+ return ptr;
+}
+
+static spinlock_t kml_lock = SPIN_LOCK_UNLOCKED;
+static char buf[1024];
+char * bdup_printf (char *format, ...)
+{
+ va_list args;
+ int i;
+ char *path;
+ long flags;
+
+ spin_lock_irqsave(&kml_lock, flags);
+ va_start(args, format);
+ i = vsprintf(buf, format, args); /* hopefully i < sizeof(buf) */
+ va_end(args);
+
+ PRESTO_ALLOC (path, char *, i + 1);
+ if (path == NULL)
+ return NULL;
+ strcpy (path, buf);
+
+ spin_unlock_irqrestore(&kml_lock, flags);
+ return path;
+}
+
+