#pragma once #include "core/types.h" #define T_DIR 1 // Directory #define T_FILE 2 // File #define T_DEV 3 // Device #define T_SYMLINK 4 // Divesymlink #define T_EXTENT 5 // bmap & itrunc // A bound AF_UNIX socket. The node is a *marker*: it is what makes a socket // findable by path, stat()able and unlink()able, and it holds no data. The // live binding lives in kernel/net/unix.c and is matched by (dev, inum), not // by this node's contents -- so a socket file left behind by a crash is // exactly what Linux leaves behind, a dead file that connect() refuses until // something binds to it again. #define T_SOCK 6 struct stat { int32 type; // File type (T_DIR, T_FILE, or T_DEV) int32 dev; // File system's disk device ID uint64 ino; // Inode number int32 nlink; // Number of hard links to file uint32 pad; // Padding for 64-bit alignment uint64 size; // Size of file in bytes uint rwmode; // Permissions uint supermode; // Mode uint showmode; // Visiblity uint atime; // Last access time uint mtime; // Last modification time uint ctime; // Last metadata-change time uint addrs[12+3]; // Block Addresses };