1 // =================================
 2 // Copyright (c) 2021 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #ifndef CMAJOR_RT_OS_INCLUDED
 7 #define CMAJOR_RT_OS_INCLUDED
 8 #include <cmajor/rt/RtApi.hpp>
 9 #include <stdint.h>
10 
11 extern "C" uint64_t OsAllocateMemoryPage(uint64_t pageSize);
12 extern "C" bool OsFreeMemoryPage(uint64_t pageAddress);
13 extern "C" void OsCopyMemoryPage(uint64_t fromPageAddress, uint64_t toPageAddress, uint64_t pageSize);
14 extern "C" void OsWriteMemoryByte(uint64_t address, uint8_t b);
15 extern "C" uint8_t OsReadMemoryByte(uint64_t address);
16 extern "C" void* OsGetStdHandle(int32_t stdInOutOrErr);
17 extern "C" bool OsRegisterConsoleCallback(void* consoleInputHandle, uint64_t callBackValue);
18 extern "C" bool OsReadConsoleInput(void* consoleInputHandle, char32_t* c);
19 extern "C" bool OsGetConsoleScreenBufferInfo(void* consoleOutputHandle, int32_t* cursorPosX, int32_t* cursorPosY, int32_t* screenSizeX, int32_t* screenSizeY, uint16_t* attrs);
20 extern "C" bool OsSetConsoleCursorPosition(void* consoleOutputHandle, int cursorPosX, int cursorPosY);
21 extern "C" bool OsWriteConsole(void* consoleOutputHandle, const char32_t* chars);
22 extern "C" bool OsSetConsoleTextAttribute(uint16_t attrs);
23 extern "C" void* OsCreateHostFile(const char* filePath, bool randomAccess);
24 extern "C" void* OsOpenHostFile(const char* filePath, bool randomAccess);
25 extern "C" void OsCloseHostFile(void* fileHandle);
26 extern "C" void* OsCreateIoCompletionPort();
27 extern "C" void* OsAssociateFileWithCompletionPort(void* fileHandle, void* completionPort, uint64_t completionKey);
28 extern "C" void OsCloseIoCompletionPort(void* completionPortHandle);
29 extern "C" bool OsGetQueuedCompletionStatus(void* completionPortHandle, uint64_t* numberOfBytes, uint64_t* completionKey, void** overlapped);
30 extern "C" bool OsPostQueuedCompletionStatus(void* completionPortHandle, uint64_t numberOfBytes, uint64_t completionKey);
31 extern "C" void* OsCreateOverlapped(uint64_t offset);
32 extern "C" void OsDestroyOverlapped(void* overlapped);
33 extern "C" bool OsReadFile(void* fileHandle, void* buffer, uint32_t numberOfBytesToRead, void* overlapped);
34 extern "C" bool OsWriteFile(void* fileHandle, void* buffer, uint32_t numberOfBytesToWrite, void* overlapped);
35 extern "C" void* OsCreateEvent();
36 extern "C" bool OsSetEvent(void* eventHandle);
37 extern "C" bool OsResetEvent(void* eventHandle);
38 extern "C" void OsWaitEvent(void* eventHandle);
39 extern "C" void OsCloseEvent(void* eventHandle);
40 extern "C" int32_t OsWaitForMultipleObjects(uint32_t count, void** handles);
41 extern "C" void* OsConvertThreadToFiber(void* param);
42 extern "C" void* OsCreateFiber(uint64_t stackSize, void* startAddress, void* param);
43 extern "C" void OsSwitchToFiber(void* fiber);
44 extern "C" void* OsGetFiberData();
45 extern "C" void OsDeleteFiber(void* fiber);
46 extern "C" uint64_t OsGetLastError();
47 extern "C" void OsFormatMessage(uint64_t errorCode, char16_t* buffer);
48 extern "C" bool OsGetLogicalDrives(char* buffer, int bufSize);
49 extern "C" uint32_t OsGetDriveType(const char* rootPathName);
50 extern "C" int64_t OsGetFileSize(void* fileHandle);
51 extern "C" uint32_t OsGetFileAttributes(const char* filePath);
52 extern "C" void* OsFindFirstFile(const char* pathMask, char* fileName);
53 extern "C" bool OsFindNextFile(void* findHandle, char* fileName);
54 extern "C" void OsFindClose(void* findHandle);
55 extern "C" bool OsGetFileTimes(const char* filePath, uint8_t* ctime, uint8_t* mtime, uint8_t* atime);
56 extern "C" int OsGetMaxComputerNameLength();
57 extern "C" bool OsGetComputerName(char* buffer, int size);
58 extern "C" void* OsFindFirstChangeNotification(const char* directoryPath);
59 extern "C" bool OsFindNextChangeNotification(void* handle);
60 extern "C" void OsFindCloseChangeNotification(void* handle);
61 
62 #endif // CMAJOR_RT_OS_INCLUDED