From 05f085c9055fa5bd13bdba40fc40fb3f00d69fab Mon Sep 17 00:00:00 2001 From: Amlal Date: Sat, 26 Oct 2024 07:59:10 +0200 Subject: IMP: Fixes and improvements. Signed-off-by: Amlal --- dev/sci/ReadMe.md | 5 - dev/sci/makefile | 12 -- dev/sci/sci.json | 21 ---- dev/sci/sci_base.h | 281 ---------------------------------------------- dev/sci/sci_hint.h | 23 ---- dev/sci/sci_lpc.h | 48 -------- dev/sci/scm-design.drawio | 28 ----- dev/sci/source_deploy.xml | 6 - dev/sci/src/sci_mm.cc | 45 -------- 9 files changed, 469 deletions(-) delete mode 100644 dev/sci/ReadMe.md delete mode 100644 dev/sci/makefile delete mode 100644 dev/sci/sci.json delete mode 100644 dev/sci/sci_base.h delete mode 100644 dev/sci/sci_hint.h delete mode 100644 dev/sci/sci_lpc.h delete mode 100644 dev/sci/scm-design.drawio delete mode 100644 dev/sci/source_deploy.xml delete mode 100644 dev/sci/src/sci_mm.cc (limited to 'dev/sci') diff --git a/dev/sci/ReadMe.md b/dev/sci/ReadMe.md deleted file mode 100644 index f3b5a156..00000000 --- a/dev/sci/ReadMe.md +++ /dev/null @@ -1,5 +0,0 @@ -# ZKA's SCI. - -System Call and Component Interface, used maninly to communicate with Kernel and registered objects. - -###### (c) ZKA Web Services Co, all rights reserved. diff --git a/dev/sci/makefile b/dev/sci/makefile deleted file mode 100644 index f18fbeff..00000000 --- a/dev/sci/makefile +++ /dev/null @@ -1,12 +0,0 @@ -###################### -# (C) ZKA -# XPCOM/SCI kit makefile. -###################### - -CC=g++ -FLAGS=-I../ -shared -fPIC -D__ZKA_SYMS__ -OUTPUT=sci.dll - -.PHONY: build-sci -build-sci: - $(CC) $(wildcard .cc) $(FLAGS) -o $(OUTPUT) diff --git a/dev/sci/sci.json b/dev/sci/sci.json deleted file mode 100644 index 104be044..00000000 --- a/dev/sci/sci.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compiler_path": "x86_64-w64-mingw32-g++", - "compiler_std": "c++20", - "headers_path": ["../"], - "sources_path": ["src/*.cc"], - "output_name": "sci.dll", - "compiler_flags": [ - "-fPIC", - "-ffreestanding", - "-shared", - "-fno-rtti", - "-fno-exceptions", - "-Wl,--subsystem=17" - ], - "cpp_macros": [ - "__SCI_IMPL__", - "cSCIVersion=0x0100", - "cSCIVersionHighest=0x0100", - "cSCIVersionLowest=0x0100" - ] -} diff --git a/dev/sci/sci_base.h b/dev/sci/sci_base.h deleted file mode 100644 index 0860e72f..00000000 --- a/dev/sci/sci_base.h +++ /dev/null @@ -1,281 +0,0 @@ -/* ------------------------------------------- - -Copyright ZKA Web Services Co. - -File: sci_base.h -Purpose: SCI core header file (C++ only). - -------------------------------------------- */ - -#ifndef __SCI_BASE_H__ -#define __SCI_BASE_H__ - -#define ATTRIBUTE(X) __attribute__((X)) -#define IMPORT_XPCOM extern "XPCOM" -#define IMPORT_CXX extern "C++" -#define IMPORT_C extern "C" - -typedef bool Bool; -typedef void Void; - -typedef __UINT64_TYPE__ UInt64; -typedef __UINT32_TYPE__ UInt32; -typedef __UINT16_TYPE__ UInt16; -typedef __UINT8_TYPE__ UInt8; - -typedef __SIZE_TYPE__ SizeT; - -typedef __INT64_TYPE__ SInt64; -typedef __INT32_TYPE__ SInt32; -typedef __INT16_TYPE__ SInt16; -typedef __INT8_TYPE__ SInt8; - -typedef void* VoidPtr; -typedef __UINTPTR_TYPE__ UIntPtr; -typedef char Char; - -#include -#include - -// ------------------------------------------------------------------------------------------ // -/// @brief Handle Type Definitions. -// ------------------------------------------------------------------------------------------ // - -typedef VoidPtr SCIObject; - -typedef SCIObject DLLObject; -typedef SCIObject IOObject; -typedef SCIObject SCMObject; -typedef SCIObject ThreadObject; -typedef SCIObject SocketObject; -typedef SCIObject ShellObject; -typedef SCIObject UIObject; - -// ------------------------------------------------------------------------------------------ // -/// @brief Dynamic Loader API. -// ------------------------------------------------------------------------------------------ // - -/// @brief Get function which is part of the DLL. -/// @param symbol the symbol to look for -/// @param dll_handle the DLL handle. -/// @return the proc pointer. -IMPORT_C SCIObject LdrGetDLLSymbolFromHandle(_Input const Char* symbol, _Input SCIObject dll_handle); - -/// @brief Open DLL handle. -/// @param path -/// @param drv -/// @return -IMPORT_C SCIObject LdrOpenDLLHandle(_Input const Char* path, _Input const Char* drive_letter); - -/// @brief Close DLL handle -/// @param dll_handle -/// @return -IMPORT_C Void LdrCloseDLLHandle(_Input SCIObject* dll_handle); - -// ------------------------------------------------------------------------------------------ // -// File API. -// ------------------------------------------------------------------------------------------ // - -/// @brief Opens a file from a drive. -/// @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 SCIObject IoOpenFile(const Char* fs_path, const Char* drive_letter); - -/// @brief Closes a file and flushes its content. -/// @param file_desc the file descriptor. -/// @return void. -IMPORT_C Void IoCloseFile(_Input SCIObject file_desc); - -/// @brief Write data to a file. -/// @param file_desc the file descriptor. -/// @param out_data the data to write. -/// @param sz_data the size of the data to write. -/// @return the number of bytes written. -IMPORT_C UInt32 IoWriteFile(_Input SCIObject file_desc, _Output VoidPtr out_data, SizeT sz_data); - -/// @brief Read data from a file. -/// @param file_desc the file descriptor. -/// @param out_data the data to read. -/// @param sz_data the size of the data to read. -IMPORT_C UInt32 IoReadFile(_Input SCIObject file_desc, _Output VoidPtr* out_data, SizeT sz_data); - -/// @brief Rewind the file pointer to the beginning of the file. -/// @param file_desc the file descriptor. -/// @return the number of bytes read. -IMPORT_C UInt64 IoRewindFile(_Input SCIObject file_desc); - -/// @brief Tell the current position of the file pointer. -/// @param file_desc the file descriptor. -/// @return the current position of the file pointer. -IMPORT_C UInt64 IoTellFile(_Input SCIObject file_desc); - -/// @brief Seek file offset from file descriptor. -IMPORT_C UInt64 IoSeekFile(_Input SCIObject file_desc, UInt64 file_offset); - -// ------------------------------------------------------------------------ -// TLS API. -// ------------------------------------------------------------------------ - -/// @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 RtlTlsInstall(Void); - -#ifndef __XPCOM_IMPL__ - -// ------------------------------------------------------------------------ -// XPCOM API. -// ------------------------------------------------------------------------ - -/// @brief Allocate new XPCOM object. -/// @tparam TCLS the class type. -/// @tparam UCLSID UCLS factory class type. -/// @param uclsidOfCls UCLS factory class -/// @return TCLS interface -template -TCLS* XPCOMQueryClass(_Input UCLSID* uclsidOfCls, _Input Args&&... args); - -/// @brief Release XPCOM object. -/// @tparam TCLS the class type. -/// @param cls the class to release. -/// @return status code. -template -SInt32 XPCOMReleaseClass(_Input TCLS* cls); - -/// @brief Creates an XPCOM instance in the process. -/// @param handle_instance the XPCOM handle. -/// @param flags the XPCOM flags. -IMPORT_C SInt32 XPCOMCreateInstance(_Input UInt32 flags, _Output SCIObject* handle_instance); - -/// @brief Destroys an XPCOM instance of the process. -/// @param handle_instance the XPCOM handle. -IMPORT_C Void XPCOMDestroyInstance(_Input SCIObject handle_instance); - -#endif // !__XPCOM_IMPL__ - -// ------------------------------------------------------------------------ -// Memory Management API. -// ------------------------------------------------------------------------ - -/// @brief Creates a new heap from the process's address space. -/// @param len the length of it. -/// @param flags the flags of it. -/// @return heap pointer. -IMPORT_C VoidPtr MmCreateHeap(_Input SizeT len, _Input UInt32 flags); - -/// @brief Destroys the pointer -/// @param heap the heap itself. -/// @return void. -IMPORT_C Void MmDestroyHeap(_Input VoidPtr heap); - -/// @brief Change protection flags of a memory region. -IMPORT_C Void MmSetHeapFlags(_Input VoidPtr heap, _Input UInt32 flags); - -/// @brief Change protection flags of a memory region. -IMPORT_C UInt32 MmGetHeapFlags(_Input VoidPtr heap); - -/// @brief Fill memory region with CRC32. -IMPORT_C UInt32 MmFillCRC32Heap(_Input VoidPtr heap); - -/// @brief Copy memory region. -IMPORT_C VoidPtr MmCopyMemory(_Input VoidPtr dest, _Input VoidPtr src, _Input SizeT len); - -/// @brief Fill memory region. -IMPORT_C VoidPtr MmFillMemory(_Input VoidPtr dest, _Input SizeT len, _Input UInt8 value); - -// ------------------------------------------------------------------------ -// Error handling API. -// ------------------------------------------------------------------------ - -IMPORT_C SInt32 ErrGetLastError(Void); - -// ------------------------------------------------------------------------ -// Threading API. -// ------------------------------------------------------------------------ - -/// @brief Exit the current thread. -/// @param exit_code the exit code. -IMPORT_C Void ThrExitCurrentThread(_Input SInt32 exit_code); - -/// @brief Exit the main thread. -/// @param exit_code the exit code. -IMPORT_C Void ThrExitMainThread(_Input SInt32 exit_code); - -/// @brief Exit a thread. -/// @param thread the thread to exit. -/// @param exit_code the exit code. -IMPORT_C Void ThrExitThread(_Input ThreadObject thread, _Input SInt32 exit_code); - -typedef Void (*ThreadProc)(Void); - -/// @brief Create a thread. -/// @param procedure the thread procedure. -/// @param argument_count number of arguments inside that thread. -/// @param flags Thread flags. -/// @return the thread object. -IMPORT_C ThreadObject ThrCreateThread(ThreadProc procedure, SInt32 argument_count, SInt32 flags); - -/// @brief Yield the current thread. -/// @param thread the thread to yield. -IMPORT_C Void ThrExitYieldThread(Void); - -/// @brief Join a thread. -/// @param thread the thread to join. -IMPORT_C Void ThrExitJoinThread(Void); - -/// @brief Detach a thread. -/// @param thread the thread to detach. -IMPORT_C Void ThrExitDetachThread(Void); - -// ------------------------------------------------------------------------ -// Drive Management API. -// ------------------------------------------------------------------------ - -/// @brief Get the default drive letter. -/// @param void. -/// @return the drive letter. -IMPORT_C Char* DrvGetDefaultDriveLetter(Void); - -/// @brief Get the drive letter from a path. -/// @param path the path. -/// @return the drive letter. -IMPORT_C Char* DrvGetDriveLetterFromPath(_Input const Char* path); - -/// @brief Get a mounted drive from a letter. -/// @param letter the letter (A..Z). -/// @return the drive object. -IMPORT_C SCIObject DrvGetMountedDrive(_Input const Char letter); - -/// @brief Mount a drive. -/// @param path the path to mount. -/// @param letter the letter to mount. -IMPORT_C Void DrvMountDrive(_Input const Char* path, _Input const Char* letter); - -/// @brief Unmount a drive. -/// @param letter the letter to unmount. -IMPORT_C Void DrvUnmountDrive(_Input const Char letter); - -// ------------------------------------------------------------------------ -// Event handling API, use to listen to OS specific events. -// ------------------------------------------------------------------------ - -/// @brief Add an event listener. -/// @param event_name the event name. -/// @param listener the listener to add. -/// @return the event listener. -IMPORT_C Void EvtAddListener(_Input const Char* event_name, _Input SCIObject listener); - -/// @brief Remove an event listener. -/// @param event_name the event name. -/// @param listener the listener to remove. -/// @return the event listener. -IMPORT_C Void EvtRemoveListener(_Input const Char* event_name, _Input SCIObject listener); - -/// @brief Dispatch an event. -/// @param event_name the event name. -/// @param event_data the event data. -/// @return the event data. -IMPORT_C VoidPtr EvtDispatchEvent(_Input const Char* event_name, _Input VoidPtr event_data); - -#endif // ifndef __SCI_BASE_H__ diff --git a/dev/sci/sci_hint.h b/dev/sci/sci_hint.h deleted file mode 100644 index b550bac5..00000000 --- a/dev/sci/sci_hint.h +++ /dev/null @@ -1,23 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Web Services Co. - -------------------------------------------- */ - -#ifndef __SCI_HINT_H__ -#define __SCI_HINT_H__ - -#pragma compiler(hint_manifest) - -#define _Input -#define _Output - -#define _Optional - -#define _StrictCheckInput -#define _StrictCheckOutput - -#define _InOut -#define _StrictInOut - -#endif // ifndef __SCI_HINT_H__ diff --git a/dev/sci/sci_lpc.h b/dev/sci/sci_lpc.h deleted file mode 100644 index c634b790..00000000 --- a/dev/sci/sci_lpc.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Web Services Co. - -------------------------------------------- */ - -#pragma once - -#define ErrLocalIsOk() (kLastError == kErrorSuccess) -#define ErrLocalFailed() (kLastError != kErrorSuccess) -#define ErrLocal() (kLastError) - -typedef SInt32 ErrObject; - -inline constexpr ErrObject kErrorSuccess = 0; -inline constexpr ErrObject kErrorExecutable = 33; -inline constexpr ErrObject kErrorExecutableLib = 34; -inline constexpr ErrObject kErrorFileNotFound = 35; -inline constexpr ErrObject kErrorDirectoryNotFound = 36; -inline constexpr ErrObject kErrorDiskReadOnly = 37; -inline constexpr ErrObject kErrorDiskIsFull = 38; -inline constexpr ErrObject kErrorProcessFault = 39; -inline constexpr ErrObject kErrorSocketHangUp = 40; -inline constexpr ErrObject kErrorThreadLocalStorage = 41; -inline constexpr ErrObject kErrorMath = 42; -inline constexpr ErrObject kErrorNoNetwork = 43; -inline constexpr ErrObject kErrorHeapOutOfMemory = 44; -inline constexpr ErrObject kErrorNoSuchDisk = 45; -inline constexpr ErrObject kErrorFileExists = 46; -inline constexpr ErrObject kErrorFormatFailed = 47; -inline constexpr ErrObject kErrorNetworkTimeout = 48; -inline constexpr ErrObject kErrorInternal = 49; -inline constexpr ErrObject kErrorForkAlreadyExists = 50; -inline constexpr ErrObject kErrorOutOfTeamSlot = 51; -inline constexpr ErrObject kErrorHeapNotPresent = 52; -inline constexpr ErrObject kErrorNoEntrypoint = 53; -inline constexpr ErrObject kErrorDiskIsCorrupted = 54; -inline constexpr ErrObject kErrorDisk = 55; -inline constexpr ErrObject kErrorInvalidData = 56; -inline constexpr ErrObject kErrorAsync = 57; -inline constexpr ErrObject kErrorNonBlocking = 58; -inline constexpr ErrObject kErrorIPC = 59; -inline constexpr ErrObject kErrorSign = 60; -inline constexpr ErrObject kErrorInvalidCreds = 61; -inline constexpr ErrObject kErrorUnimplemented = 0; - -/// @brief The last error reported by the system to the process. -IMPORT_C ErrObject kLastError; diff --git a/dev/sci/scm-design.drawio b/dev/sci/scm-design.drawio deleted file mode 100644 index 22bcace6..00000000 --- a/dev/sci/scm-design.drawio +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/sci/source_deploy.xml b/dev/sci/source_deploy.xml deleted file mode 100644 index 30c64973..00000000 --- a/dev/sci/source_deploy.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - *.h - *.idl - - diff --git a/dev/sci/src/sci_mm.cc b/dev/sci/src/sci_mm.cc deleted file mode 100644 index a776fe4a..00000000 --- a/dev/sci/src/sci_mm.cc +++ /dev/null @@ -1,45 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Web Services Co. - -------------------------------------------- */ - -#include - -/// @file sci_base.cxx -/// @brief Base Memory Manager functions for SCI.dll - -/// @brief Copy memory region. -IMPORT_C VoidPtr MmCopyMemory(_Input VoidPtr dest, _Input VoidPtr src, _Input SizeT len) -{ - if (!len || - !dest || - !src) - { - return nullptr; - } - - for (SizeT i = 0; i < len; i++) - { - ((Char*)dest)[i] = ((Char*)src)[i]; - } - - return dest; -} - -/// @brief Fill memory region with **value**. -IMPORT_C VoidPtr MmFillMemory(_Input VoidPtr dest, _Input SizeT len, _Input UInt8 value) -{ - if (!len || - !dest) - { - return nullptr; - } - - for (SizeT i = 0; i < len; i++) - { - ((Char*)dest)[i] = value; - } - - return dest; -} -- cgit v1.2.3