diff options
Diffstat (limited to 'dev')
21 files changed, 197 insertions, 151 deletions
diff --git a/dev/SCI/SCIErr.hxx b/dev/SCI/SCIErr.hxx deleted file mode 100644 index af5d54fd..00000000 --- a/dev/SCI/SCIErr.hxx +++ /dev/null @@ -1,49 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#pragma once - -#include <SCI/SCIBase.hxx> - -#define ErrLocalIsOk() (kLastError == kErrorSuccess) -#define ErrLocalFailed() (kLastError != kErrorSuccess) -#define ErrLocal() (kLastError) - -typedef SInt32 NEW_ERROR_TYPE; - -inline constexpr NEW_ERROR_TYPE kErrorSuccess = 0; -inline constexpr NEW_ERROR_TYPE kErrorExecutable = 33; -inline constexpr NEW_ERROR_TYPE kErrorExecutableLib = 34; -inline constexpr NEW_ERROR_TYPE kErrorFileNotFound = 35; -inline constexpr NEW_ERROR_TYPE kErrorDirectoryNotFound = 36; -inline constexpr NEW_ERROR_TYPE kErrorDiskReadOnly = 37; -inline constexpr NEW_ERROR_TYPE kErrorDiskIsFull = 38; -inline constexpr NEW_ERROR_TYPE kErrorProcessFault = 39; -inline constexpr NEW_ERROR_TYPE kErrorSocketHangUp = 40; -inline constexpr NEW_ERROR_TYPE kErrorThreadLocalStorage = 41; -inline constexpr NEW_ERROR_TYPE kErrorMath = 42; -inline constexpr NEW_ERROR_TYPE kErrorNoNetwork = 43; -inline constexpr NEW_ERROR_TYPE kErrorHeapOutOfMemory = 44; -inline constexpr NEW_ERROR_TYPE kErrorNoSuchDisk = 45; -inline constexpr NEW_ERROR_TYPE kErrorFileExists = 46; -inline constexpr NEW_ERROR_TYPE kErrorFormatFailed = 47; -inline constexpr NEW_ERROR_TYPE kErrorNetworkTimeout = 48; -inline constexpr NEW_ERROR_TYPE kErrorInternal = 49; -inline constexpr NEW_ERROR_TYPE kErrorForkAlreadyExists = 50; -inline constexpr NEW_ERROR_TYPE kErrorOutOfTeamSlot = 51; -inline constexpr NEW_ERROR_TYPE kErrorHeapNotPresent = 52; -inline constexpr NEW_ERROR_TYPE kErrorNoEntrypoint = 53; -inline constexpr NEW_ERROR_TYPE kErrorDiskIsCorrupted = 54; -inline constexpr NEW_ERROR_TYPE kErrorDisk = 55; -inline constexpr NEW_ERROR_TYPE kErrorInvalidData = 56; -inline constexpr NEW_ERROR_TYPE kErrorAsync = 57; -inline constexpr NEW_ERROR_TYPE kErrorNonBlocking = 58; -inline constexpr NEW_ERROR_TYPE kErrorIPC = 59; -inline constexpr NEW_ERROR_TYPE kErrorSign = 60; -inline constexpr NEW_ERROR_TYPE kErrorInvalidCreds = 61; -inline constexpr NEW_ERROR_TYPE kErrorUnimplemented = 0; - -IMPORT_C NEW_ERROR_TYPE kLastError; diff --git a/dev/SCI/Sources/SCIErr.cxx b/dev/SCI/Sources/SCIErr.cxx deleted file mode 100644 index 509ccd6d..00000000 --- a/dev/SCI/Sources/SCIErr.cxx +++ /dev/null @@ -1,9 +0,0 @@ -/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <SCI/SCIErr.hxx>
-
-NEW_ERROR_TYPE kLastError = 0;
diff --git a/dev/SCI/Sources/SCIBase.cxx b/dev/SCI/Sources/base.cxx index b103886c..6963a624 100644 --- a/dev/SCI/Sources/SCIBase.cxx +++ b/dev/SCI/Sources/base.cxx @@ -4,4 +4,4 @@ ------------------------------------------- */
-#include <SCI/SCIBase.hxx>
+#include <SCI/sci_base.hxx>
diff --git a/dev/SCI/SCIBase.hxx b/dev/SCI/sci_base.hxx index 982ca950..1d69a56b 100644 --- a/dev/SCI/SCIBase.hxx +++ b/dev/SCI/sci_base.hxx @@ -10,7 +10,7 @@ Purpose: SCI/M core header file (C++) #ifndef __SCI_BASE_HXX__
#define __SCI_BASE_HXX__
-#include <SCI/Hint.h>
+#include <SCI/sci_hint.hxx>
#define IMPORT_CXX extern "C++"
#define IMPORT_C extern "C"
@@ -34,6 +34,8 @@ typedef void* VoidPtr; typedef __UINTPTR_TYPE__ UIntPtr;
typedef char Char;
+#include <SCI/sci_err.hxx>
+
#ifdef __SCI_IMPL__
#include <SCI/scm.internal.inl>
#else
@@ -89,12 +91,13 @@ public: /// @note Handle types.
// ------------------------------------------------------------------------------------------ //
-typedef VoidPtr NEW_OBJECT;
+typedef VoidPtr ZKAObject;
-typedef NEW_OBJECT DLL_OBJECT;
-typedef NEW_OBJECT IO_OBJECT;
-typedef NEW_OBJECT COMP_OBJECT;
-typedef NEW_OBJECT SCM_OBJECT;
+typedef ZKAObject ZKADLLObject;
+typedef ZKAObject ZKAIOObject;
+typedef ZKAObject ZKASCMObject;
+typedef ZKAObject ZKAThreadObject;
+typedef ZKAObject ZKASocketObject;
// ------------------------------------------------------------------------------------------ //
@@ -106,18 +109,18 @@ typedef NEW_OBJECT SCM_OBJECT; /// @param symbol the symbol to look for
/// @param dll_handle the DLL handle.
/// @return the proc pointer.
-IMPORT_C NEW_OBJECT LdrGetDLLProc(_Input const Char* symbol, _Input NEW_OBJECT dll_handle);
+IMPORT_C ZKAObject LdrGetDLLProc(_Input const Char* symbol, _Input ZKAObject dll_handle);
/// @brief Open DLL handle.
/// @param path
/// @param drv
/// @return
-IMPORT_C NEW_OBJECT LdrOpenDLL(_Input const Char* path, _Input const Char* drive_letter);
+IMPORT_C ZKAObject LdrOpenDLL(_Input const Char* path, _Input const Char* drive_letter);
/// @brief Close DLL handle
/// @param dll_handle
/// @return
-IMPORT_C UInt0 LdrCloseDLL(_Input NEW_OBJECT dll_handle);
+IMPORT_C UInt0 LdrCloseDLL(_Input ZKAObject dll_handle);
// ------------------------------------------------------------------------------------------ //
// File API.
@@ -127,18 +130,28 @@ IMPORT_C UInt0 LdrCloseDLL(_Input NEW_OBJECT dll_handle); /// @param fs_path the filesystem path.
/// @param drive_letter drive name, use NULL to use default one.
/// @return the file descriptor of the file.
-IMPORT_C NEW_OBJECT RtlOpenFile(const Char* fs_path, const Char* drive_letter);
+IMPORT_C ZKAObject IoOpenFile(const Char* fs_path, const Char* drive_letter);
/// @brief Closes a file and flushes its content.
/// @param file_desc the file descriptor.
-/// @return
-IMPORT_C UInt0 RtlCloseFile(_Input NEW_OBJECT file_desc);
+/// @return void.
+IMPORT_C UInt0 IoCloseFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt32 IoWriteFile(_Input ZKAObject file_desc, _Output VoidPtr out_data, SizeT sz_data);
+
+IMPORT_C UInt32 IoReadFile(_Input ZKAObject file_desc, _Output VoidPtr* out_data, SizeT sz_data);
+
+IMPORT_C UInt64 IoRewindFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt64 IoTellFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt64 IoSeekFile(_Input ZKAObject file_desc, UInt64 file_offset);
// ------------------------------------------------------------------------
// TLS API.
// ------------------------------------------------------------------------
-/// @brief Installs the TIB and GIB inside the current process.
+/// @brief Installs the Thread Information Block and Global Information Block inside the current process.
/// @param void.
/// @return > 0 error ocurred or already present, = 0 success.
IMPORT_C UInt32 TlsInstallIB(UInt0);
@@ -165,11 +178,11 @@ SInt32 ScmReleaseClass(_Input TCLS* cls); /// @brief Creates an SCM instance in the process.
/// @param handle_instance the SCM handle.
/// @param flags the SCM flags.
-IMPORT_C SInt32 ScmCreateInstance(_Input UInt32 flags, _Output SCM_OBJECT* handle_instance);
+IMPORT_C SInt32 ScmCreateInstance(_Input UInt32 flags, _Output ZKAObject* handle_instance);
/// @brief Destroys an SCM instance of the process.
/// @param handle_instance the SCM handle.
-IMPORT_C UInt0 ScmDestroyInstance(_Input SCM_OBJECT handle_instance);
+IMPORT_C UInt0 ScmDestroyInstance(_Input ZKAObject handle_instance);
// ------------------------------------------------------------------------
// Memory Management API.
diff --git a/dev/SCI/sci_err.hxx b/dev/SCI/sci_err.hxx new file mode 100644 index 00000000..a1e56dfd --- /dev/null +++ b/dev/SCI/sci_err.hxx @@ -0,0 +1,47 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#pragma once + +#define ErrLocalIsOk() (kLastError == kErrorSuccess) +#define ErrLocalFailed() (kLastError != kErrorSuccess) +#define ErrLocal() (kLastError) + +typedef SInt32 ZKAErr; + +inline constexpr ZKAErr kErrorSuccess = 0; +inline constexpr ZKAErr kErrorExecutable = 33; +inline constexpr ZKAErr kErrorExecutableLib = 34; +inline constexpr ZKAErr kErrorFileNotFound = 35; +inline constexpr ZKAErr kErrorDirectoryNotFound = 36; +inline constexpr ZKAErr kErrorDiskReadOnly = 37; +inline constexpr ZKAErr kErrorDiskIsFull = 38; +inline constexpr ZKAErr kErrorProcessFault = 39; +inline constexpr ZKAErr kErrorSocketHangUp = 40; +inline constexpr ZKAErr kErrorThreadLocalStorage = 41; +inline constexpr ZKAErr kErrorMath = 42; +inline constexpr ZKAErr kErrorNoNetwork = 43; +inline constexpr ZKAErr kErrorHeapOutOfMemory = 44; +inline constexpr ZKAErr kErrorNoSuchDisk = 45; +inline constexpr ZKAErr kErrorFileExists = 46; +inline constexpr ZKAErr kErrorFormatFailed = 47; +inline constexpr ZKAErr kErrorNetworkTimeout = 48; +inline constexpr ZKAErr kErrorInternal = 49; +inline constexpr ZKAErr kErrorForkAlreadyExists = 50; +inline constexpr ZKAErr kErrorOutOfTeamSlot = 51; +inline constexpr ZKAErr kErrorHeapNotPresent = 52; +inline constexpr ZKAErr kErrorNoEntrypoint = 53; +inline constexpr ZKAErr kErrorDiskIsCorrupted = 54; +inline constexpr ZKAErr kErrorDisk = 55; +inline constexpr ZKAErr kErrorInvalidData = 56; +inline constexpr ZKAErr kErrorAsync = 57; +inline constexpr ZKAErr kErrorNonBlocking = 58; +inline constexpr ZKAErr kErrorIPC = 59; +inline constexpr ZKAErr kErrorSign = 60; +inline constexpr ZKAErr kErrorInvalidCreds = 61; +inline constexpr ZKAErr kErrorUnimplemented = 0; + +IMPORT_C ZKAErr kLastError; diff --git a/dev/SCI/Hint.h b/dev/SCI/sci_hint.hxx index c785f953..c785f953 100644 --- a/dev/SCI/Hint.h +++ b/dev/SCI/sci_hint.hxx diff --git a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx index 9cdaf603..cd18d34a 100644 --- a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx +++ b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx @@ -253,6 +253,9 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, // If we succeed in reading the blob, then execute it. // ------------------------------------------ // + handoverHdrPtr->f_HardwareTables.f_ImagePtr = readerKernel.Blob(); + handoverHdrPtr->f_HardwareTables.f_ImageSz = readerKernel.Size(); + if (readerKernel.Blob()) { loader = new Boot::BThread(readerKernel.Blob()); diff --git a/dev/ZKA/KernelKit/RLE.hxx b/dev/ZKA/CompressKit/RLE.hxx index 31e37619..647cf00b 100644 --- a/dev/ZKA/KernelKit/RLE.hxx +++ b/dev/ZKA/CompressKit/RLE.hxx @@ -9,7 +9,10 @@ #include <NewKit/Defines.hxx> -EXTERN_C void rle_compress(void* data, long sz, void* out, long out_sz); -EXTERN_C void rle_decompress(void* data, long sz, void* out, long out_sz); +namespace Kernel +{ + EXTERN_C Void rle_compress(VoidPtr data, Size sz, VoidPtr out, Size out_sz); + EXTERN_C Void rle_decompress(VoidPtr data, Size sz, VoidPtr out, Size out_sz); +} // namespace Kernel #endif // !ifndef __KERNELKIT_RLE_HXX__ diff --git a/dev/ZKA/FirmwareKit/Handover.hxx b/dev/ZKA/FirmwareKit/Handover.hxx index 5c09f79b..ba7b23b2 100644 --- a/dev/ZKA/FirmwareKit/Handover.hxx +++ b/dev/ZKA/FirmwareKit/Handover.hxx @@ -26,8 +26,8 @@ #define kHandoverMaxCmdLine 8 -#define kHandoverBetterEFI "ZKA_EFI" -#define kHandoverBetterEFI_U L"ZKA_EFI" +#define kHandoverBetterEFI "ZKA_EFI" +#define kHandoverBetterEFI_U L"ZKA_EFI" #define kHandoverHeapSz gib_cast(2) @@ -43,8 +43,8 @@ namespace Kernel::HEL kTypeKernel = 100, kTypeKernelDriver = 101, kTypeRsrc = 102, - kTypeInvalid = 103, - kTypeCount = 4, + kTypeInvalid = 103, + kTypeCount = 4, }; /** @@ -75,6 +75,11 @@ namespace Kernel::HEL { VoidPtr f_SmBios; VoidPtr f_VendorPtr; + struct + { + VoidPtr f_ImagePtr; + SizeT f_ImageSz; + }; VoidPtr f_MPPtr; } f_HardwareTables; @@ -89,7 +94,7 @@ namespace Kernel::HEL } f_GOP; UInt64 f_FirmwareSpecific[8]; - Char f_CommandLine[255][kHandoverMaxCmdLine]; + Char f_CommandLine[255][kHandoverMaxCmdLine]; }; enum diff --git a/dev/ZKA/HALKit/AXP/Processor.hpp b/dev/ZKA/HALKit/AXP/Processor.hxx index 25a434a0..25a434a0 100644 --- a/dev/ZKA/HALKit/AXP/Processor.hpp +++ b/dev/ZKA/HALKit/AXP/Processor.hxx diff --git a/dev/ZKA/KernelKit/CodeManager.hxx b/dev/ZKA/KernelKit/CodeManager.hxx index a1fea211..b551815e 100644 --- a/dev/ZKA/KernelKit/CodeManager.hxx +++ b/dev/ZKA/KernelKit/CodeManager.hxx @@ -16,7 +16,7 @@ #include <KernelKit/PECodeManager.hxx> #include <KernelKit/PEFCodeManager.hxx> -#include <KernelKit/PEFSharedObject.hxx> +#include <KernelKit/PEFDLLInterface.hxx> namespace Kernel { diff --git a/dev/ZKA/KernelKit/DLLInterface.hxx b/dev/ZKA/KernelKit/DLLInterface.hxx new file mode 100644 index 00000000..370363b7 --- /dev/null +++ b/dev/ZKA/KernelKit/DLLInterface.hxx @@ -0,0 +1,44 @@ +/* + * ======================================================== + * + * Kernel + * Copyright ZKA Technologies., all rights reserved. + * + * ======================================================== + */ + +#pragma once + +#include <NewKit/Defines.hxx> + +namespace Kernel +{ + class DLLInterface + { + public: + explicit DLLInterface() = default; + virtual ~DLLInterface() = default; + + struct DLL_TRAITS final + { + VoidPtr fImageObject{nullptr}; + VoidPtr fImageEntrypointOffset{nullptr}; + + Bool IsValid() + { + return fImageObject && fImageEntrypointOffset; + } + }; + + ZKA_COPY_DEFAULT(DLLInterface); + + virtual DLL_TRAITS** GetAddressOf() = 0; + virtual DLL_TRAITS* Get() = 0; + + virtual void Mount(DLL_TRAITS* to_mount) = 0; + virtual void Unmount() = 0; + }; + + /// @brief Pure implementation, missing method/function handler. + EXTERN_C void __zka_pure_call(void); +} // namespace Kernel diff --git a/dev/ZKA/KernelKit/PEFSharedObject.hxx b/dev/ZKA/KernelKit/PEFDLLInterface.hxx index 48b70508..3c0187f1 100644 --- a/dev/ZKA/KernelKit/PEFSharedObject.hxx +++ b/dev/ZKA/KernelKit/PEFDLLInterface.hxx @@ -10,54 +10,42 @@ #ifndef __KERNELKIT_SHARED_OBJECT_HXX__ #define __KERNELKIT_SHARED_OBJECT_HXX__ -#include <KernelKit/LoaderInterface.hxx> #include <KernelKit/PEF.hxx> #include <KernelKit/PEFCodeManager.hxx> #include <NewKit/Defines.hxx> +#include <KernelKit/DLLInterface.hxx> namespace Kernel { - /// @brief Pure implementation, missing method/function handler. - extern "C" void __mh_purecall(void); - /** * @brief Shared Library class * Load library from this class */ - class PEFSharedObjectInterface final + class PEFDLLInterface final : public DLLInterface { public: - struct PEF_SHARED_OBJECT_TRAITS final - { - VoidPtr fImageObject{nullptr}; - VoidPtr fImageEntrypointOffset{nullptr}; - - Bool IsValid() { return fImageObject && fImageEntrypointOffset; } - }; - - public: - explicit PEFSharedObjectInterface() = default; - ~PEFSharedObjectInterface() = default; + explicit PEFDLLInterface() = default; + ~PEFDLLInterface() = default; public: - ZKA_COPY_DEFAULT(PEFSharedObjectInterface); + ZKA_COPY_DEFAULT(PEFDLLInterface); private: - PEF_SHARED_OBJECT_TRAITS* fMounted{nullptr}; + DLL_TRAITS* fMounted{nullptr}; public: - PEF_SHARED_OBJECT_TRAITS** GetAddressOf() + DLL_TRAITS** GetAddressOf() { return &fMounted; } - PEF_SHARED_OBJECT_TRAITS* Get() + DLL_TRAITS* Get() { return fMounted; } public: - void Mount(PEF_SHARED_OBJECT_TRAITS* to_mount) + void Mount(DLL_TRAITS* to_mount) { if (!to_mount || !to_mount->fImageObject) return; @@ -96,7 +84,7 @@ namespace Kernel if (!ret) { if (kind == kPefCode) - return (VoidPtr)__mh_purecall; + return (VoidPtr)__zka_pure_call; return nullptr; } @@ -108,10 +96,10 @@ namespace Kernel PEFLoader* fLoader{nullptr}; }; - typedef PEFSharedObjectInterface* SharedObjectPtr; + typedef PEFDLLInterface* DLLInterfacePtr; - EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header); - EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful); + EXTERN_C DLLInterfacePtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header); + EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, DLLInterfacePtr lib, Bool* successful); } // namespace Kernel #endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */ diff --git a/dev/ZKA/KernelKit/ProcessScheduler.hxx b/dev/ZKA/KernelKit/ProcessScheduler.hxx index 5df9d369..1f70158b 100644 --- a/dev/ZKA/KernelKit/ProcessScheduler.hxx +++ b/dev/ZKA/KernelKit/ProcessScheduler.hxx @@ -29,7 +29,7 @@ namespace Kernel //! @brief Forward declarations. struct PROCESS_HEADER_BLOCK; - class PEFSharedObjectInterface; + class PEFDLLInterface; class ProcessTeam; class ProcessScheduler; class ProcessHelper; @@ -157,8 +157,7 @@ namespace Kernel HeapPtrKind HeapPtr{nullptr}; // shared library handle, reserved for kSharedObjectKind types of executables only. - PEFSharedObjectInterface* DLLPtr{nullptr}; - + PEFDLLInterface* DLLPtr{nullptr}; PROCESS_HEADER_BLOCK* Parent{nullptr}; // Memory usage. diff --git a/dev/ZKA/KernelKit/User.hxx b/dev/ZKA/KernelKit/User.hxx index a7f8fc02..d8f81fd7 100644 --- a/dev/ZKA/KernelKit/User.hxx +++ b/dev/ZKA/KernelKit/User.hxx @@ -27,7 +27,6 @@ namespace Kernel { - class UserManager; class User; enum class RingKind @@ -74,8 +73,6 @@ namespace Kernel RingKind fRing{RingKind::kRingStdUser}; Char fUserName[kMaxUserNameLen] = { 0 }; Char fUserToken[kMaxUserTokenLen] = { 0 }; - - friend UserManager; }; } // namespace Kernel diff --git a/dev/ZKA/NetworkKit/IPC.hxx b/dev/ZKA/NetworkKit/IPC.hxx index 2a5ae452..eb62f433 100644 --- a/dev/ZKA/NetworkKit/IPC.hxx +++ b/dev/ZKA/NetworkKit/IPC.hxx @@ -13,6 +13,8 @@ #include <NewKit/Defines.hxx> #include <NewKit/String.hxx> +#include <CompressKit/RLE.hxx> + /// @file IPC.hxx /// @brief IPC protocol. diff --git a/dev/ZKA/Sources/DLLInterface.cxx b/dev/ZKA/Sources/DLLInterface.cxx new file mode 100644 index 00000000..ed1793eb --- /dev/null +++ b/dev/ZKA/Sources/DLLInterface.cxx @@ -0,0 +1,23 @@ +/* + * ======================================================== + * + * newoskrnl + * Copyright ZKA Technologies., all rights reserved. + * + * ======================================================== + */ + +#include <KernelKit/DLLInterface.hxx> +#include <KernelKit/DebugOutput.hxx> + +using namespace Kernel; + +/***********************************************************************************/ +/// @brief Unimplemented function (crashes by default) +/// @param +/***********************************************************************************/ + +EXTERN_C void __zka_pure_call(void) +{ + kcout << "newoskrnl: unimplemented symbol!\r"; +} diff --git a/dev/ZKA/Sources/DLLMain.cxx b/dev/ZKA/Sources/DLLMain.cxx index c8db0c29..997fed52 100644 --- a/dev/ZKA/Sources/DLLMain.cxx +++ b/dev/ZKA/Sources/DLLMain.cxx @@ -80,7 +80,7 @@ namespace Kernel::Detail if (catalogDir) { - Kernel::kcout << "newoskrnl: already exists.\r"; + Kernel::kcout << "newoskrnl: Already exists.\r"; delete catalogDir; continue; @@ -132,9 +132,9 @@ namespace Kernel::Detail } NFS_CATALOG_STRUCT* catalogDisk = - this->fNewFS->GetParser()->GetCatalog("\\Mount\\NUL:"); + this->fNewFS->GetParser()->GetCatalog("\\System\\newoskrnl.dll"); - const Kernel::Char* cSrcName = "DISK-INF"; + const Kernel::Char* cSrcName = "KERNEL_EXEC"; if (catalogDisk) { @@ -143,17 +143,7 @@ namespace Kernel::Detail else { catalogDisk = - (NFS_CATALOG_STRUCT*)this->Leak()->CreateAlias("\\Mount\\NUL:"); - - Kernel::StringView diskFolder(kNewFSSectorSz); - - diskFolder += - "<!properties/><p>Kind: alias to NULL.</p>\r<p>Created by: system</p>\r<p>Edited " - "by: " - "system</p>\r<p>Volume Type: NULL.</p>\r"; - - diskFolder += "<p>Root: NUL"; - diskFolder += "</p>\r"; + (NFS_CATALOG_STRUCT*)this->Leak()->CreateAlias("\\System\\newoskrnl.dll"); NFS_FORK_STRUCT theDiskFork{0}; @@ -164,16 +154,16 @@ namespace Kernel::Detail theDiskFork.CatalogName, Kernel::rt_string_len(catalogDisk->Name)); - theDiskFork.DataSize = kNewFSForkSize; - theDiskFork.ResourceId = 0; - theDiskFork.ResourceKind = Kernel::kNewFSRsrcForkKind; + theDiskFork.DataSize = kHandoverHeader->f_HardwareTables.f_ImageSz; + theDiskFork.ResourceId = Kernel::kPefKindExec | 0xFFFF000; + theDiskFork.ResourceKind = Kernel::kNewFSDataForkKind; theDiskFork.Kind = Kernel::kNewFSDataForkKind; fNewFS->GetParser()->CreateFork(catalogDisk, theDiskFork); fNewFS->GetParser()->WriteCatalog(catalogDisk, - true, - (Kernel::VoidPtr)diskFolder.CData(), - kNewFSSectorSz, cSrcName); + false, + kHandoverHeader->f_HardwareTables.f_ImagePtr, + kHandoverHeader->f_HardwareTables.f_ImageSz, cSrcName); delete catalogDisk; } diff --git a/dev/ZKA/Sources/PEFSharedObject.cxx b/dev/ZKA/Sources/PEFDLLInterface.cxx index 22890e22..0ca6b85e 100644 --- a/dev/ZKA/Sources/PEFSharedObject.cxx +++ b/dev/ZKA/Sources/PEFDLLInterface.cxx @@ -1,7 +1,7 @@ /* * ======================================================== * - * Kernel + * newoskrnl * Copyright ZKA Technologies., all rights reserved. * * ======================================================== @@ -9,7 +9,7 @@ #include <KernelKit/DebugOutput.hxx> #include <KernelKit/PEF.hxx> -#include <KernelKit/PEFSharedObject.hxx> +#include <KernelKit/PEFDLLInterface.hxx> #include <KernelKit/ProcessScheduler.hxx> #include <KernelKit/ThreadLocalStorage.hxx> #include <NewKit/Defines.hxx> @@ -37,9 +37,9 @@ using namespace Kernel; /** @brief Library initializer. */ /***********************************************************************************/ -EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) +EXTERN_C DLLInterfacePtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) { - SharedObjectPtr sharedObj = tls_new_class<PEFSharedObjectInterface>(); + DLLInterfacePtr sharedObj = tls_new_class<PEFDLLInterface>(); if (!sharedObj) { @@ -48,7 +48,7 @@ EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) return nullptr; } - sharedObj->Mount(tls_new_class<PEFSharedObjectInterface::PEF_SHARED_OBJECT_TRAITS>()); + sharedObj->Mount(tls_new_class<PEFDLLInterface::DLL_TRAITS>()); if (!sharedObj->Get()) { @@ -80,7 +80,7 @@ EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) /** @param successful Reports if successful or not. */ /***********************************************************************************/ -EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful) +EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, DLLInterfacePtr lib, Bool* successful) { MUST_PASS(successful); @@ -98,13 +98,3 @@ EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectP *successful = true; } - -/***********************************************************************************/ -/// @brief Unimplemented function (crashes by default) -/// @param -/***********************************************************************************/ - -EXTERN_C void __mh_purecall(void) -{ - kcout << "newoskrnl: unimplemented symbol!\r"; -} diff --git a/dev/ZKA/Sources/ProcessScheduler.cxx b/dev/ZKA/Sources/ProcessScheduler.cxx index d33c7e85..965c5eb1 100644 --- a/dev/ZKA/Sources/ProcessScheduler.cxx +++ b/dev/ZKA/Sources/ProcessScheduler.cxx @@ -10,7 +10,7 @@ /***********************************************************************************/ #include <KernelKit/ProcessScheduler.hxx> -#include <KernelKit/PEFSharedObject.hxx> +#include <KernelKit/PEFDLLInterface.hxx> #include <KernelKit/MP.hxx> #include <KernelKit/Heap.hxx> #include <NewKit/String.hxx> diff --git a/dev/ZKA/Sources/ThreadLocalStorage.cxx b/dev/ZKA/Sources/ThreadLocalStorage.cxx index a29f153e..ed12c890 100644 --- a/dev/ZKA/Sources/ThreadLocalStorage.cxx +++ b/dev/ZKA/Sources/ThreadLocalStorage.cxx @@ -1,7 +1,7 @@ /* * ======================================================== * - * Kernel + * newoskrnl * Copyright ZKA Technologies., all rights reserved. * * ======================================================== |
