if (__stat(filen, &aux) == 0) {
/* Get its minor and major numbers */
- dm_major = major(aux.st_rdev);
- dm_minor = minor(aux.st_rdev);
+ dm_major = __major(aux.st_rdev);
+ dm_minor = __minor(aux.st_rdev);
if ((dm_minor == minor) && (dm_major == major)) {
strncpy(name, dp->d_name, sizeof(name));
if (__stat(dfile, &statbuf) < 0)
return -1;
- *major = major(statbuf.st_rdev);
- *minor = minor(statbuf.st_rdev);
+ *major = __major(statbuf.st_rdev);
+ *minor = __minor(statbuf.st_rdev);
return 0;
}
int major, minor;
if (!strcmp(name, VIRTUALHD)) {
- statbuf->st_rdev = (253 << 8) + 2;
+ statbuf->st_rdev = (253 << MINORBITS) + 2;
return 0;
}
if (fgets(line, sizeof(line), fp) != NULL) {
sscanf(line, "%d %d", &major, &minor);
- statbuf->st_rdev = (major << 8) + minor;
+ statbuf->st_rdev = (major << MINORBITS) + minor;
}
fclose(fp);
#include <sys/statvfs.h>
#include <sys/stat.h>
+#ifndef MINORBITS
+#define MINORBITS 20
+#endif
+#define S_MAXMINOR ((1U << MINORBITS) - 1)
+#define S_MAXMAJOR ((1U << (32 - MINORBITS)) - 1)
+
/* Test mode: Use alternate files and syscalls */
#ifdef TEST
#define __gettimeofday(m,n) get_day_time(m)
#define __getpwuid(m) get_usrname(m)
#define __fork(m) get_known_pid(m)
+#define __major(m) (m >> MINORBITS)
+#define __minor(m) (m & S_MAXMINOR)
#define ROOTDIR "./tests/root"
#define ROOTFILE "root"
#define __gettimeofday(m,n) gettimeofday(m,n)
#define __getpwuid(m) getpwuid(m)
#define __fork(m) fork(m)
+#define __major(m) major(m)
+#define __minor(m) minor(m)
#endif