The Pedigree Project 0.1
DevFs-block.h
1/* Copyright (c) 2026, Pedigree Developers. */
2#ifndef POSIX_DEVFS_BLOCK_H
3#define POSIX_DEVFS_BLOCK_H
4#include "pedigree/kernel/processor/types.h"
5class DevFs;
6class File;
7namespace PosixBlock {
8constexpr uint32_t MountedMajor = 240;
9constexpr uint32_t PhysicalMajor = 241;
10constexpr uint32_t MaximumMinor = 0xfffff;
11constexpr uint64_t encode(uint32_t major, uint32_t minor) {
12 return (minor & 0xffULL) | (static_cast<uint64_t>(major & 0xfff) << 8) |
13 (static_cast<uint64_t>(minor & ~0xffU) << 12);
14}
15constexpr uint32_t major(uint64_t device) {
16 return (device >> 8) & 0xfff;
17}
18constexpr uint32_t minor(uint64_t device) {
19 return (device & 0xff) | ((device >> 12) & 0xffffff00);
20}
21constexpr bool valid(uint64_t device, uint32_t expectedMajor) {
22 return major(device) == expectedMajor && minor(device) && minor(device) <= MaximumMinor &&
23 encode(expectedMajor, minor(device)) == device;
24}
25} // namespace PosixBlock
26File* posix_make_block_directory(DevFs& filesystem, File* parent);
27File* posix_make_disk_directory(DevFs& filesystem, File* parent);
28#endif
Definition DevFs.h:269
Definition File.h:75