summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--compile_flags.txt2
-rw-r--r--dev/Kernel/ArchKit/ArchKit.h10
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/AHCI.cc14
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/DMA.cc12
-rw-r--r--dev/Kernel/KernelKit/HardwareThreadScheduler.h2
-rw-r--r--dev/Kernel/KernelKit/User.h12
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h4
-rw-r--r--dev/Kernel/SystemKit/SwapDisk.h12
-rw-r--r--dev/Kernel/src/HardwareThreadScheduler.cc6
-rw-r--r--dev/Kernel/src/IPEFDylibObject.cc6
-rw-r--r--dev/Kernel/src/KernelMain.cc12
-rw-r--r--dev/Kernel/src/System/SwapDisk.cc10
-rw-r--r--dev/Kernel/src/User.cc2
-rw-r--r--dev/LibSCI/GPU.h28
-rw-r--r--dev/LibSCI/SCI.h2
-rw-r--r--public/tools/make_app/src/CommandLine.cc16
16 files changed, 87 insertions, 63 deletions
diff --git a/compile_flags.txt b/compile_flags.txt
index 25c4f779..b93c0ea8 100644
--- a/compile_flags.txt
+++ b/compile_flags.txt
@@ -7,7 +7,7 @@
-Ipublic/tools/make_fs
-Ipublic/tools/open
-Idev/Boot/BootKit
--std=c++23
+-std=c++20
-D__NE_AMD64__
-D__NEOSKRNL__
-D__FSKIT_INCLUDES_NEFS__
diff --git a/dev/Kernel/ArchKit/ArchKit.h b/dev/Kernel/ArchKit/ArchKit.h
index 36dabeb3..d663cdc7 100644
--- a/dev/Kernel/ArchKit/ArchKit.h
+++ b/dev/Kernel/ArchKit/ArchKit.h
@@ -24,6 +24,8 @@
#error !!! unknown architecture !!!
#endif
+#define kKernelMaxSystemCalls (512U)
+
namespace NeOS
{
inline SSizeT rt_hash_seed(const Char* seed, int mul)
@@ -65,11 +67,9 @@ namespace NeOS
}
} // namespace NeOS
-#define kKernelMaxSystemCalls (256)
-
typedef NeOS::Void (*rt_syscall_proc)(NeOS::VoidPtr);
-struct HAL_SYSCALL_RECORD final
+struct HalSyscallEntry final
{
NeOS::Int64 fHash;
NeOS::Bool fHooked;
@@ -81,11 +81,11 @@ struct HAL_SYSCALL_RECORD final
}
};
-inline NeOS::Array<HAL_SYSCALL_RECORD,
+inline NeOS::Array<HalSyscallEntry,
kKernelMaxSystemCalls>
kSyscalls;
-inline NeOS::Array<HAL_SYSCALL_RECORD,
+inline NeOS::Array<HalSyscallEntry,
kKernelMaxSystemCalls>
kKerncalls;
diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
index 35d6ba66..a8e60e58 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
@@ -11,7 +11,7 @@
* @version 0.1
* @date 2024-02-02
*
- * @Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
+ * @copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
*
*/
@@ -58,9 +58,9 @@ STATIC Int32 drv_find_cmd_slot(HbaPort* port) noexcept;
STATIC Void drv_compute_disk_ahci() noexcept;
STATIC PCI::Device kPCIDevice;
-STATIC HbaMem* kSATA[kSATAPortCnt] = {};
-STATIC SizeT kSATAIndex = 0UL;
-STATIC Lba kHighestLBA = 0UL;
+STATIC HbaMem* kSATA[kSATAPortCnt] = {};
+STATIC SizeT kSATAIndex = 0UL;
+STATIC Lba kHighestLBA = 0UL;
STATIC UInt16 kSATAPortsImplemented = 0U;
@@ -139,7 +139,7 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz
if (Identify)
h2d_fis->Command = kAHCICmdIdentify;
- h2d_fis->Lba0 = (lba) & 0xFF;
+ h2d_fis->Lba0 = (lba)&0xFF;
h2d_fis->Lba1 = (lba >> 8) & 0xFF;
h2d_fis->Lba2 = (lba >> 16) & 0xFF;
@@ -149,7 +149,7 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz
h2d_fis->Lba4 = (lba >> 32) & 0xFF;
h2d_fis->Lba5 = (lba >> 40) & 0xFF;
- h2d_fis->CountLow = (size_buffer) & 0xFF;
+ h2d_fis->CountLow = (size_buffer)&0xFF;
h2d_fis->CountHigh = (size_buffer >> 8) & 0xFF;
while ((kSATA[kSATAIndex]->Ports[kSATAIndex].Tfd & (kSATASRBsy | kSATASRDrq)))
@@ -222,7 +222,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi)
{
kout << (atapi ? "Detect: /dev/atp" : "Detect: /dev/sat") << number(ahci_index) << endl;
- kSATAIndex = ahci_index;
+ kSATAIndex = ahci_index;
kSATA[ahci_index] = mem_ahci;
pi = ports_implemented;
diff --git a/dev/Kernel/HALKit/AMD64/Storage/DMA.cc b/dev/Kernel/HALKit/AMD64/Storage/DMA.cc
index 06203380..dfec0f76 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/DMA.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/DMA.cc
@@ -170,9 +170,9 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz
Details::PRDEntry* prd = (Details::PRDEntry*)(kATADevice.Bar(0x20) + 4); // The PRDEntry is not correct.
- prd->mAddress = (UInt32)(UIntPtr)kReadAddr;
- prd->mByteCount = Size - 1;
- prd->mFlags = 0x8000; // indicate the end of prd.
+ prd->mAddress = (UInt32)(UIntPtr)kReadAddr;
+ prd->mByteCount = Size - 1;
+ prd->mFlags = 0x8000; // indicate the end of prd.
rt_out32(kATADevice.Bar(0x20) + 0x04, (UInt32)(UIntPtr)prd);
@@ -212,9 +212,9 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorS
rt_out8(IO + ATA_REG_LBA3, (Lba) >> 24);
Details::PRDEntry* prd = (Details::PRDEntry*)(kATADevice.Bar(0x20) + 4);
- prd->mAddress = (UInt32)(UIntPtr)kWriteAddr;
- prd->mByteCount = Size - 1;
- prd->mFlags = 0x8000;
+ prd->mAddress = (UInt32)(UIntPtr)kWriteAddr;
+ prd->mByteCount = Size - 1;
+ prd->mFlags = 0x8000;
rt_out32(kATADevice.Bar(0x20) + 0x04, (UInt32)(UIntPtr)prd);
rt_out8(kATADevice.Bar(0x20) + ATA_REG_COMMAND, ATA_CMD_WRITE_DMA);
diff --git a/dev/Kernel/KernelKit/HardwareThreadScheduler.h b/dev/Kernel/KernelKit/HardwareThreadScheduler.h
index a0970d24..71026cdb 100644
--- a/dev/Kernel/KernelKit/HardwareThreadScheduler.h
+++ b/dev/Kernel/KernelKit/HardwareThreadScheduler.h
@@ -74,7 +74,7 @@ namespace NeOS
HAL::StackFramePtr fStack{nullptr};
ThreadKind fKind{ThreadKind::kAPStandard};
ThreadID fID{0};
- ThreadID fSourcePID{0};
+ ThreadID fPID{0};
Bool fWakeup{NO};
Bool fBusy{NO};
UInt64 fPTime{0};
diff --git a/dev/Kernel/KernelKit/User.h b/dev/Kernel/KernelKit/User.h
index 0ce27e62..f5aa1951 100644
--- a/dev/Kernel/KernelKit/User.h
+++ b/dev/Kernel/KernelKit/User.h
@@ -7,6 +7,14 @@
#ifndef INC_USER_H
#define INC_USER_H
+/* -------------------------------------------
+
+ Revision History:
+
+ 04/03/25: Set users directory as /user/ instead of /usr/
+
+ ------------------------------------------- */
+
#include <CompilerKit/CompilerKit.h>
#include <KernelKit/LPC.h>
#include <NewKit/KString.h>
@@ -18,7 +26,7 @@
#define kGuestUser "OS AUTHORITY/GUEST/%s"
#define kStdUser "OS AUTHORITY/STD/%s"
-#define kUsersDir "/usr/"
+#define kUsersDir "/user/"
#define kMaxUserNameLen (255U)
#define kMaxUserTokenLen (255U)
@@ -43,7 +51,7 @@ namespace NeOS
class User final
{
public:
- explicit User() = delete;
+ User() = delete;
User(const Int32& sel, const Char* username);
User(const UserRingKind& kind, const Char* username);
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h
index e02ad7de..10697fa3 100644
--- a/dev/Kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/Kernel/KernelKit/UserProcessScheduler.h
@@ -16,8 +16,8 @@
#define kSchedInvalidPID (-1)
#define kSchedProcessLimitPerTeam (32U)
-#define kSchedMaxMemoryLimit gib_cast(128)
-#define kSchedMaxStackSz mib_cast(8)
+#define kSchedMaxMemoryLimit gib_cast(128) /* max physical memory limit */
+#define kSchedMaxStackSz mib_cast(8) /* maximum stack size */
#define kProcessInvalidID (-1)
#define kProcessNameLen (128U)
diff --git a/dev/Kernel/SystemKit/SwapDisk.h b/dev/Kernel/SystemKit/SwapDisk.h
index 16413bf5..e46b57ea 100644
--- a/dev/Kernel/SystemKit/SwapDisk.h
+++ b/dev/Kernel/SystemKit/SwapDisk.h
@@ -18,7 +18,7 @@
namespace NeOS
{
- struct SWAP_DISK_HEADER;
+ struct SwapDiskHdr;
/// @brief This class is a disk swap delegate for any data. available as a syscall too.
class SwapDisk final
@@ -29,11 +29,11 @@ namespace NeOS
NE_COPY_DEFAULT(SwapDisk);
- BOOL Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER* data, const SizeT data_len);
- SWAP_DISK_HEADER* Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len);
+ BOOL Write(const Char* fork_name, const SizeT fork_name_len, SwapDiskHdr* data, const SizeT data_len);
+ SwapDiskHdr* Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len);
};
- typedef struct SWAP_DISK_HEADER
+ typedef struct SwapDiskHdr
{
UInt32 fMagic;
SizeT fHeaderSz;
@@ -42,7 +42,7 @@ namespace NeOS
UInt64 fVirtualAddress;
SizeT fBlobSz;
Char fBlob[];
- } PACKED SWAP_DISK_HEADER;
+ } PACKED SwapDiskHdr;
- typedef SWAP_DISK_HEADER* SWAP_DISK_HEADER_REF;
+ typedef SwapDiskHdr* SwapDiskHdrRef;
} // namespace NeOS
diff --git a/dev/Kernel/src/HardwareThreadScheduler.cc b/dev/Kernel/src/HardwareThreadScheduler.cc
index 0ca09ddf..70502d40 100644
--- a/dev/Kernel/src/HardwareThreadScheduler.cc
+++ b/dev/Kernel/src/HardwareThreadScheduler.cc
@@ -117,13 +117,13 @@ namespace NeOS
if (this->IsBusy())
return NO;
- this->fStack = frame;
- this->fSourcePID = pid;
+ this->fStack = frame;
+ this->fPID = pid;
this->fStack->BP = reinterpret_cast<UIntPtr>(image_ptr);
this->fStack->SP = reinterpret_cast<UIntPtr>(stack_ptr);
- Bool ret = mp_register_process(fStack, this->fSourcePID);
+ Bool ret = mp_register_process(fStack, this->fPID);
if (ret)
this->Busy(YES);
diff --git a/dev/Kernel/src/IPEFDylibObject.cc b/dev/Kernel/src/IPEFDylibObject.cc
index 6dc20084..4824cca1 100644
--- a/dev/Kernel/src/IPEFDylibObject.cc
+++ b/dev/Kernel/src/IPEFDylibObject.cc
@@ -18,8 +18,10 @@
Revision History:
- 01/02/24: Reworked dll ABI, expect a rtl_init_dylib and
- rtl_fini_dylib (amlel) 15/02/24: Breaking changes, changed the name of the
+ 01/02/24: Reworked dll ABI, expect a rtl_init_dylib and
+ rtl_fini_dylib (amlel)
+
+ 15/02/24: Breaking changes, changed the name of the
routines. (amlel)
07/28/24: Replace rt_library_free with rtl_fini_dylib
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index 88fd51df..53ebbcc0 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -24,6 +24,14 @@
#include <CFKit/Property.h>
#include <KernelKit/Timer.h>
+/* -------------------------------------------
+
+ Revision History:
+
+ 04/03/25: Add /user/ directory.
+
+ ------------------------------------------- */
+
#ifdef __NE_AUTO_FORMAT__
namespace NeOS::Detail
{
@@ -42,10 +50,10 @@ namespace NeOS::Detail
if (mNeFS)
{
- const SizeT kFolderCount = 13;
+ const SizeT kFolderCount = 14;
const Char* kFolderStr[kFolderCount] = {
"/", "/boot/", "/sys/", "/media/", "/etc/",
- "/usr/", "/lib/", "/mnt/", "/sbin/", "/n/", "/dev/", "/run/", "/root/"};
+ "/usr/", "/lib/", "/mnt/", "/sbin/", "/n/", "/dev/", "/run/", "/root/", "/user/"};
for (SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index)
{
diff --git a/dev/Kernel/src/System/SwapDisk.cc b/dev/Kernel/src/System/SwapDisk.cc
index 249b7172..1d2f1da4 100644
--- a/dev/Kernel/src/System/SwapDisk.cc
+++ b/dev/Kernel/src/System/SwapDisk.cc
@@ -9,7 +9,7 @@
namespace NeOS
{
- BOOL SwapDisk::Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER_REF data, const SizeT data_len)
+ BOOL SwapDisk::Write(const Char* fork_name, const SizeT fork_name_len, SwapDiskHdrRef data, const SizeT data_len)
{
if (!fork_name || !fork_name_len)
return NO;
@@ -22,7 +22,7 @@ namespace NeOS
FileStream file(kSwapPageFile, "wb");
- auto ret = file.Write(fork_name, data, sizeof(SWAP_DISK_HEADER) + data_len);
+ auto ret = file.Write(fork_name, data, sizeof(SwapDiskHdr) + data_len);
if (ret.Error())
return NO;
@@ -30,7 +30,7 @@ namespace NeOS
return YES;
}
- SWAP_DISK_HEADER_REF SwapDisk::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len)
+ SwapDiskHdrRef SwapDisk::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len)
{
if (!fork_name || !fork_name_len)
return nullptr;
@@ -40,8 +40,8 @@ namespace NeOS
FileStream file(kSwapPageFile, "rb");
- VoidPtr blob = file.Read(fork_name, sizeof(SWAP_DISK_HEADER) + data_len);
+ VoidPtr blob = file.Read(fork_name, sizeof(SwapDiskHdr) + data_len);
- return (SWAP_DISK_HEADER_REF)blob;
+ return (SwapDiskHdrRef)blob;
}
} // namespace NeOS
diff --git a/dev/Kernel/src/User.cc b/dev/Kernel/src/User.cc
index 33e2afa2..3c23c59e 100644
--- a/dev/Kernel/src/User.cc
+++ b/dev/Kernel/src/User.cc
@@ -20,7 +20,7 @@
#define kSuperUserType (0xEF)
/// @file User.cc
-/// @brief User support.
+/// @brief Multi-user support.
namespace NeOS
{
diff --git a/dev/LibSCI/GPU.h b/dev/LibSCI/GPU.h
index bbcd1300..a29eae00 100644
--- a/dev/LibSCI/GPU.h
+++ b/dev/LibSCI/GPU.h
@@ -13,10 +13,11 @@ Purpose: GPU/FB System Calls.
#include <LibSCI/SCI.h>
/// ------------------------------------------------------------------------------------------ //
-/// @brief GPU API.
+/// @brief Graphics Processor API.
/// ------------------------------------------------------------------------------------------ //
-struct GPUCmd;
+struct GPUCmdEntry;
+struct GPUCmdEntryTraits;
typedef VoidPtr GPUObject;
@@ -24,41 +25,46 @@ typedef VoidPtr GPUObject;
/// @brief Command structure type.
/// ------------------------------------------------------------------------------------------ //
-struct GPUCmd
+struct GPUCmdEntry
{
VoidPtr Data{nullptr};
SizeT DataSz{0};
- SizeT BufferLayer{0};
+ SizeT Layer{0};
BOOL IsGPGPUData{NO};
+};
+
+struct GPUCmdEntryTraits final
+{
+ GPUCmdEntry* Cmd{nullptr};
BOOL isGPGPUData()
{
- return this->isValid() && this->IsGPGPUData;
+ return this->isValid() && this->Cmd->IsGPGPUData;
}
BOOL isBackBuffer()
{
- return this->BufferLayer > 0;
+ return this->Cmd->Layer > 0;
}
BOOL isValid()
{
- return this->Data && (this->DataSz > 0) && (MmGetHeapFlags(this->Data) != -1);
+ return this->Cmd->Data && (this->Cmd->DataSz > 0) && (MmGetHeapFlags(this->Cmd->Data) != ~0);
}
};
IMPORT_C BOOL GPUListDevices(const Char** list, SizeT cnt);
-IMPORT_C GPUObject GPUGetFromDeviceName(_Input const Char* device_name);
+IMPORT_C GPUObject GPUFindByDeviceName(_Input const Char* device_name);
-IMPORT_C GPUObject GPUQueryInfo(_Input const GPUObject* device_name, VoidPtr* out, SizeT out_sz);
+IMPORT_C GPUObject GPUQueryInfo(_Input const GPUObject* gpu_handle, VoidPtr* out, SizeT out_sz);
IMPORT_C SInt32 GPUDisposeDevice(GPUObject gpu_handle, Bool cancel_all, Bool flush_all);
-IMPORT_C SInt32 GPUSendCmdBufferListWithCnt(GPUCmd** cmd_list, SizeT cmd_list_cnt);
+IMPORT_C SInt32 GPUSendCmdBufferListWithCnt(GPUObject gpu_handle, GPUCmdEntry** cmd_list, SizeT cmd_list_cnt);
// ------------------------------------------------------------------------------------------ //
-// @brief FB API.
+// @brief Framebuffer API.
// ------------------------------------------------------------------------------------------ //
IMPORT_C SInt32 FBAcquireBuffer(GPUObject* out, SInt32 width, SInt32 height);
diff --git a/dev/LibSCI/SCI.h b/dev/LibSCI/SCI.h
index a7d449d4..97af9ffc 100644
--- a/dev/LibSCI/SCI.h
+++ b/dev/LibSCI/SCI.h
@@ -347,6 +347,6 @@ IMPORT_C SInt32 MsgShow(VoidPtr handle);
IMPORT_C SInt32 MsgSend(VoidPtr handle, const Char* fmt, ...);
IMPORT_C SInt32 MsgAlloc(VoidPtr handle);
-IMPORT_C VoidPtr kAlertMsg, kInfoMsg, kErrorMsg;
+IMPORT_C VoidPtr kWarnMsg, kInfoMsg, kErrorMsg;
#endif // ifndef SCI_SCI_H
diff --git a/public/tools/make_app/src/CommandLine.cc b/public/tools/make_app/src/CommandLine.cc
index 1858303b..bf435962 100644
--- a/public/tools/make_app/src/CommandLine.cc
+++ b/public/tools/make_app/src/CommandLine.cc
@@ -21,17 +21,17 @@ int main(int argc, char* argv[])
{
if (MmStrCmp(argv[i], "-h") == 0)
{
- MsgAlloc(kAlertMsg);
+ MsgAlloc(kWarnMsg);
- MsgSend(kAlertMsg, "%s", "make_app: Framework/Application Creation Tool.\n");
- MsgSend(kAlertMsg, "%s", "make_app: © Amlal EL Mahrouss, All rights reserved.\n");
+ MsgSend(kWarnMsg, "%s", "make_app: Framework/Application Creation Tool.\n");
+ MsgSend(kWarnMsg, "%s", "make_app: © Amlal EL Mahrouss, All rights reserved.\n");
- MsgSend(kAlertMsg, "%s", "make_app: -a: Application format.\n");
- MsgSend(kAlertMsg, "%s", "make_app: -s: Steps (Setup pages) format.\n");
- MsgSend(kAlertMsg, "%s", "make_app: -f: Framework format.\n");
+ MsgSend(kWarnMsg, "%s", "make_app: -a: Application format.\n");
+ MsgSend(kWarnMsg, "%s", "make_app: -s: Steps (Setup pages) format.\n");
+ MsgSend(kWarnMsg, "%s", "make_app: -f: Framework format.\n");
- MsgShow(kAlertMsg);
- MsgFree(kAlertMsg);
+ MsgShow(kWarnMsg);
+ MsgFree(kWarnMsg);
return EXIT_SUCCESS;
}