+ /*
+ * If the file is empty, *size is zero and mmap() would return EINVAL
+ * (Invalid argument). This error is common enough to spend an extra
+ * error code which explicitly states the problem.
+ */
+ ret = -E_EMPTY;
+ if (*size == 0)
+ goto out;
+ /*
+ * If fd refers to a directory, mmap() returns ENODEV (No such device),
+ * at least on Linux. "Is a directory" seems to be more to the point.
+ */
+ ret = -ERRNO_TO_PARA_ERROR(EISDIR);
+ if (S_ISDIR(file_status.st_mode))
+ goto out;
+