diff --git a/kernel-src/include/kernel/abi.h b/kernel-src/include/kernel/abi.h index dabd9ba4..17ac8561 100644 --- a/kernel-src/include/kernel/abi.h +++ b/kernel-src/include/kernel/abi.h @@ -74,4 +74,8 @@ typedef struct { #define GETTYPE(m) (((m) >> 12) & 0xF) #define MAKETYPE(m) (((m) & 0xF) << 12) +#define TODEV(major,minor) (((major & 0xFFF) << 8) + (minor & 0xFF)) +#define MAJORDEV(dev) ((dev >> 8) & 0xFFF) +#define MINORDEV(dev) (dev & 0xFF) + #endif diff --git a/kernel-src/sys/syscalls/stat.c b/kernel-src/sys/syscalls/stat.c index 556f6209..fa78ddb4 100644 --- a/kernel-src/sys/syscalls/stat.c +++ b/kernel-src/sys/syscalls/stat.c @@ -12,8 +12,8 @@ static int dostat(vnode_t *vnode, stat_t *stat) { if (e) return e; - - // TODO dev rdev + stat->dev = 0; // TODO properly return this + stat->rdev = TODEV(attr.rdevmajor, attr.rdevminor); stat->ino = attr.inode; stat->nlink = attr.nlinks; stat->mode = attr.mode | MAKETYPE(vfs_getposixtype(attr.type));