2008-08-21 05:48:23

by Jared Hulbert

[permalink] [raw]
Subject: [PATCH 09/10] AXFS: axfs_uml.c

UML specific code for working with iomem 'devices'. UML is handy for testing.

Signed-off-by: Jared Hulbert <[email protected]>
---
diff --git a/fs/axfs/axfs_uml.c b/fs/axfs/axfs_uml.c
new file mode 100644
index 0000000..7d479a0
--- /dev/null
+++ b/fs/axfs/axfs_uml.c
@@ -0,0 +1,47 @@
+/*
+ * Advanced XIP File System for Linux - AXFS
+ * Readonly, compressed, and XIP filesystem for Linux systems big and small
+ *
+ * Copyright(c) 2008 Numonyx
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * Authors:
+ * Jared Hulbert <[email protected]>
+ *
+ * Project url: http://axfs.sourceforge.net
+ *
+ * axfs_uml.c -
+ * Allows axfs to a UML kernels find_iomem() interface as an XIP device or
+ * dummy functions if this is not a UML build.
+ */
+
+#include <linux/axfs.h>
+#ifdef CONFIG_UML
+#include <mem_user.h>
+int axfs_get_uml_address(char *iomem, unsigned long *address,
+ unsigned long *length)
+{
+ *address = find_iomem(iomem, length);
+ if (!(*address)) {
+ printk(KERN_DEBUG "axfs: find_iomem() failed\n");
+ return -EINVAL;
+ }
+
+ if (*length < PAGE_SIZE) {
+ printk(KERN_DEBUG
+ "axfs: iomem() too small, must be at least %li Bytes\n",
+ PAGE_SIZE);
+ return -EINVAL;
+ }
+ return 0;
+}
+#else
+int axfs_get_uml_address(char *iomem, unsigned long *address,
+ unsigned long *length)
+{
+ return 0;
+}
+#endif /* CONFIG_UML */