util: Add stub unit tests for the call types in the m5 utility.
[gem5.git] / util / m5 / src / m5_mmap.c
index 79de59baabd54aeaf7a63b4414dec1f078029889..d3413031d4aa431b6f2a3431afca180458dab497 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 
 void *m5_mem = NULL;
 
+#ifndef M5OP_ADDR
+#define M5OP_ADDR 0
+#endif
+uint64_t m5op_addr = M5OP_ADDR;
+
+const char *m5_mmap_dev = "/dev/mem";
+
 void
 map_m5_mem()
 {
-#ifdef M5OP_ADDR
     int fd;
 
-    fd = open("/dev/mem", O_RDWR | O_SYNC);
+    fd = open(m5_mmap_dev, O_RDWR | O_SYNC);
     if (fd == -1) {
-        perror("Can't open /dev/mem");
+        fprintf(stderr, "Can't open %s: %s\n", m5_mmap_dev, strerror(errno));
         exit(1);
     }
 
     m5_mem = mmap(NULL, 0x10000, PROT_READ | PROT_WRITE, MAP_SHARED, fd,
-                  M5OP_ADDR);
+                  m5op_addr);
     if (!m5_mem) {
-        perror("Can't mmap /dev/mem");
+        fprintf(stderr, "Can't map %s: %s\n", m5_mmap_dev, strerror(errno));
         exit(1);
     }
-#endif
 }