+
+/*
+ * physmem_map returns ptr on success, (void *)-1 on error and sets errno compatible with POSIX mmap():
+ * - EBADF - invalid physmem argument
+ * - EINVAL - invalid or unaligned addr argument
+ * - EACCES - write access requested but physmem was opened without write access
+ * - ENOSYS - physmem argument does not support physical address mapping at all
+ * - ENXIO - addr/length range was rejected by system (e.g. range not accessible or not available)
+ * - EOVERFLOW - addr/length range is out of the physical address space (e.g. does not fit into signed 32-bit off_t type on 32-bit systems)
+ * - EACCES - generic unknown error for djgpp and windows
+ */