mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 13:48:12 +00:00
Add a way to initialize VFS globals.
This is needed since the kernel loader doesn't even zero out bss, much less call any static constructors.
This commit is contained in:
parent
97e0d75bcb
commit
2d1d01661b
4 changed files with 16 additions and 2 deletions
|
@ -2,16 +2,22 @@
|
||||||
#include <AK/HashMap.h>
|
#include <AK/HashMap.h>
|
||||||
#include "FileSystem.h"
|
#include "FileSystem.h"
|
||||||
|
|
||||||
static dword s_lastFileSystemID = 0;
|
static dword s_lastFileSystemID;
|
||||||
|
static HashMap<dword, FileSystem*>* map;
|
||||||
|
|
||||||
static HashMap<dword, FileSystem*>& fileSystems()
|
static HashMap<dword, FileSystem*>& fileSystems()
|
||||||
{
|
{
|
||||||
static HashMap<dword, FileSystem*>* map;
|
|
||||||
if (!map)
|
if (!map)
|
||||||
map = new HashMap<dword, FileSystem*>();
|
map = new HashMap<dword, FileSystem*>();
|
||||||
return *map;
|
return *map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileSystem::initializeGlobals()
|
||||||
|
{
|
||||||
|
s_lastFileSystemID = 0;
|
||||||
|
map = 0;
|
||||||
|
}
|
||||||
|
|
||||||
FileSystem::FileSystem()
|
FileSystem::FileSystem()
|
||||||
: m_id(++s_lastFileSystemID)
|
: m_id(++s_lastFileSystemID)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,7 @@ static const dword mepoch = 476763780;
|
||||||
|
|
||||||
class FileSystem : public Retainable<FileSystem> {
|
class FileSystem : public Retainable<FileSystem> {
|
||||||
public:
|
public:
|
||||||
|
static void initializeGlobals();
|
||||||
virtual ~FileSystem();
|
virtual ~FileSystem();
|
||||||
|
|
||||||
dword id() const { return m_id; }
|
dword id() const { return m_id; }
|
||||||
|
|
|
@ -7,6 +7,11 @@
|
||||||
|
|
||||||
//#define VFS_DEBUG
|
//#define VFS_DEBUG
|
||||||
|
|
||||||
|
void VirtualFileSystem::initializeGlobals()
|
||||||
|
{
|
||||||
|
FileSystem::initializeGlobals();
|
||||||
|
}
|
||||||
|
|
||||||
static dword encodedDevice(unsigned major, unsigned minor)
|
static dword encodedDevice(unsigned major, unsigned minor)
|
||||||
{
|
{
|
||||||
return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
|
return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
|
||||||
|
|
|
@ -14,6 +14,8 @@ class FileSystem;
|
||||||
|
|
||||||
class VirtualFileSystem {
|
class VirtualFileSystem {
|
||||||
public:
|
public:
|
||||||
|
static void initializeGlobals();
|
||||||
|
|
||||||
struct Node {
|
struct Node {
|
||||||
InodeIdentifier inode;
|
InodeIdentifier inode;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue