📄 kernelapi.c
字号:
//// Visopsys// Copyright (C) 1998-2005 J. Andrew McLaughlin// // This program is free software; you can redistribute it and/or modify it// under the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 of the License, or (at your option)// any later version.// // This program is distributed in the hope that it will be useful, but// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.// // You should have received a copy of the GNU General Public License along// with this program; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// kernelApi.c// // This is the part of the kernel's API that sorts out which functions// get called from external locations.#include "kernelApi.h"#include "kernelParameters.h"#include "kernelText.h"#include "kernelDisk.h"#include "kernelFile.h"#include "kernelFilesystem.h"#include "kernelFileStream.h"#include "kernelMemory.h"#include "kernelMultitasker.h"#include "kernelLoader.h"#include "kernelRtc.h"#include "kernelRandom.h"#include "kernelEnvironment.h"#include "kernelWindow.h"#include "kernelUser.h"#include "kernelNetworkDevice.h"#include "kernelNetwork.h"#include "kernelShutdown.h"#include "kernelMisc.h"#include "kernelEncrypt.h"#include "kernelKeyboard.h"#include "kernelProcessorX86.h"#include "kernelError.h"// We do this so that <sys/api.h> won't complain about being included// in a kernel file#undef KERNEL#include <sys/api.h>#define KERNELstatic kernelFunctionIndex textFunctionIndex[] = { // Text input/output functions (1000-1999 range) { _fnum_textGetConsoleInput, kernelTextGetConsoleInput, 0, PRIVILEGE_USER }, { _fnum_textSetConsoleInput, kernelTextSetConsoleInput, 1, PRIVILEGE_SUPERVISOR }, { _fnum_textGetConsoleOutput, kernelTextGetConsoleOutput, 0, PRIVILEGE_USER }, { _fnum_textSetConsoleOutput, kernelTextSetConsoleOutput, 1, PRIVILEGE_SUPERVISOR }, { _fnum_textGetCurrentInput, kernelTextGetCurrentInput, 0, PRIVILEGE_USER }, { _fnum_textSetCurrentInput, kernelTextSetCurrentInput, 1, PRIVILEGE_USER }, { _fnum_textGetCurrentOutput, kernelTextGetCurrentOutput, 0, PRIVILEGE_USER }, { _fnum_textSetCurrentOutput, kernelTextSetCurrentOutput, 1, PRIVILEGE_USER }, { _fnum_textGetForeground, kernelTextGetForeground, 0, PRIVILEGE_USER }, { _fnum_textSetForeground, kernelTextSetForeground, 1, PRIVILEGE_USER }, { _fnum_textGetBackground, kernelTextGetBackground, 0, PRIVILEGE_USER }, { _fnum_textSetBackground, kernelTextSetBackground, 1, PRIVILEGE_USER }, { _fnum_textPutc, kernelTextPutc, 1, PRIVILEGE_USER }, { _fnum_textPrint, kernelTextPrint, 1, PRIVILEGE_USER }, { _fnum_textPrintLine, kernelTextPrintLine, 1, PRIVILEGE_USER }, { _fnum_textNewline, kernelTextNewline, 0, PRIVILEGE_USER }, { _fnum_textBackSpace, kernelTextBackSpace, 0, PRIVILEGE_USER }, { _fnum_textTab, kernelTextTab, 0, PRIVILEGE_USER }, { _fnum_textCursorUp, kernelTextCursorUp, 0, PRIVILEGE_USER }, { _fnum_textCursorDown, kernelTextCursorDown, 0, PRIVILEGE_USER }, { _fnum_ternelTextCursorLeft, kernelTextCursorLeft, 0, PRIVILEGE_USER }, { _fnum_textCursorRight, kernelTextCursorRight, 0, PRIVILEGE_USER }, { _fnum_textScroll, kernelTextScroll, 1, PRIVILEGE_USER }, { _fnum_textGetNumColumns, kernelTextGetNumColumns, 0, PRIVILEGE_USER }, { _fnum_textGetNumRows, kernelTextGetNumRows, 0, PRIVILEGE_USER }, { _fnum_textGetColumn, kernelTextGetColumn, 0, PRIVILEGE_USER }, { _fnum_textSetColumn, kernelTextSetColumn, 1, PRIVILEGE_USER }, { _fnum_textGetRow, kernelTextGetRow, 0, PRIVILEGE_USER }, { _fnum_textSetRow, kernelTextSetRow, 1, PRIVILEGE_USER }, { _fnum_textSetCursor, kernelTextSetCursor, 1, PRIVILEGE_USER }, { _fnum_textScreenClear, kernelTextScreenClear, 0, PRIVILEGE_USER }, { _fnum_textScreenSave, kernelTextScreenSave, 0, PRIVILEGE_USER }, { _fnum_textScreenRestore, kernelTextScreenRestore, 0, PRIVILEGE_USER }, { _fnum_textInputStreamCount, kernelTextInputStreamCount, 1, PRIVILEGE_USER }, { _fnum_textInputCount, kernelTextInputCount, 0, PRIVILEGE_USER }, { _fnum_textInputStreamGetc, kernelTextInputStreamGetc, 2, PRIVILEGE_USER }, { _fnum_textInputGetc, kernelTextInputGetc, 1, PRIVILEGE_USER }, { _fnum_textInputStreamReadN, kernelTextInputStreamReadN, 3, PRIVILEGE_USER }, { _fnum_textInputReadN, kernelTextInputReadN, 2, PRIVILEGE_USER }, { _fnum_textInputStreamReadAll, kernelTextInputStreamReadAll, 2, PRIVILEGE_USER }, { _fnum_textInputReadAll, kernelTextInputReadAll, 1, PRIVILEGE_USER }, { _fnum_textInputStreamAppend, kernelTextInputStreamAppend, 2, PRIVILEGE_USER }, { _fnum_textInputAppend, kernelTextInputAppend, 1, PRIVILEGE_USER }, { _fnum_textInputStreamAppendN, kernelTextInputStreamAppendN, 3, PRIVILEGE_USER }, { _fnum_textInputAppendN, kernelTextInputAppendN, 2, PRIVILEGE_USER }, { _fnum_textInputStreamRemove, kernelTextInputStreamRemove, 1, PRIVILEGE_USER }, { _fnum_textInputRemove, kernelTextInputRemove, 0, PRIVILEGE_USER }, { _fnum_textInputStreamRemoveN, kernelTextInputStreamRemoveN, 2, PRIVILEGE_USER }, { _fnum_textInputRemoveN, kernelTextInputRemoveN, 1, PRIVILEGE_USER }, { _fnum_textInputStreamRemoveAll, kernelTextInputStreamRemoveAll, 1, PRIVILEGE_USER }, { _fnum_textInputRemoveAll, kernelTextInputRemoveAll, 0, PRIVILEGE_USER }, { _fnum_textInputStreamSetEcho, kernelTextInputStreamSetEcho, 2, PRIVILEGE_USER }, { _fnum_textInputSetEcho, kernelTextInputSetEcho, 1, PRIVILEGE_USER }};static kernelFunctionIndex diskFunctionIndex[] = { // Disk functions (2000-2999 range) { _fnum_diskReadPartitions, kernelDiskReadPartitions, 0, PRIVILEGE_SUPERVISOR }, { _fnum_diskSync, kernelDiskSync, 0, PRIVILEGE_USER }, { _fnum_diskGetBoot, kernelDiskGetBoot, 1, PRIVILEGE_USER }, { _fnum_diskGetCount, kernelDiskGetCount, 0, PRIVILEGE_USER }, { _fnum_diskGetPhysicalCount, kernelDiskGetPhysicalCount, 0, PRIVILEGE_USER }, { _fnum_diskGet, kernelDiskGet, 2, PRIVILEGE_USER }, { _fnum_diskGetAll, kernelDiskGetAll, 2, PRIVILEGE_USER }, { _fnum_diskGetAllPhysical, kernelDiskGetAllPhysical, 2, PRIVILEGE_USER }, { _fnum_diskGetPartType, kernelDiskGetPartType, 2, PRIVILEGE_USER }, { _fnum_diskGetPartTypes, kernelDiskGetPartTypes, 0, PRIVILEGE_USER }, { _fnum_diskSetLockState, kernelDiskSetLockState, 2, PRIVILEGE_USER }, { _fnum_diskSetDoorState, kernelDiskSetDoorState, 2, PRIVILEGE_USER }, { _fnum_diskGetMediaState, kernelDiskGetMediaState, 1, PRIVILEGE_USER }, { _fnum_diskReadSectors, kernelDiskReadSectors, 4, PRIVILEGE_SUPERVISOR }, { _fnum_diskWriteSectors, kernelDiskWriteSectors, 4, PRIVILEGE_SUPERVISOR }};static kernelFunctionIndex filesystemFunctionIndex[] = { // Filesystem functions (3000-3999 range) { _fnum_filesystemFormat, kernelFilesystemFormat, 5, PRIVILEGE_SUPERVISOR }, { _fnum_filesystemClobber, kernelFilesystemClobber, 1, PRIVILEGE_SUPERVISOR }, { _fnum_filesystemCheck, kernelFilesystemCheck, 4, PRIVILEGE_USER }, { _fnum_filesystemDefragment, kernelFilesystemDefragment, 2, PRIVILEGE_SUPERVISOR }, { _fnum_filesystemMount, kernelFilesystemMount, 2, PRIVILEGE_USER }, { _fnum_filesystemUnmount, kernelFilesystemUnmount, 1, PRIVILEGE_USER }, { _fnum_filesystemGetFree, kernelFilesystemGetFree, 1, PRIVILEGE_USER }, { _fnum_filesystemGetBlockSize, kernelFilesystemGetBlockSize, 1, PRIVILEGE_USER }};static kernelFunctionIndex fileFunctionIndex[] = { // File functions (4000-4999 range) { _fnum_fileFixupPath, kernelFileFixupPath, 2, PRIVILEGE_USER }, { _fnum_fileSeparateLast, kernelFileSeparateLast, 3, PRIVILEGE_USER }, { _fnum_fileGetDisk, kernelFileGetDisk, 2, PRIVILEGE_USER }, { _fnum_fileCount, kernelFileCount, 1, PRIVILEGE_USER }, { _fnum_fileFirst, kernelFileFirst, 2, PRIVILEGE_USER }, { _fnum_fileNext, kernelFileNext, 2, PRIVILEGE_USER }, { _fnum_fileFind, kernelFileFind, 2, PRIVILEGE_USER }, { _fnum_fileOpen, kernelFileOpen, 3, PRIVILEGE_USER }, { _fnum_fileClose, kernelFileClose, 1, PRIVILEGE_USER }, { _fnum_fileRead, kernelFileRead, 4, PRIVILEGE_USER }, { _fnum_fileWrite, kernelFileWrite, 4, PRIVILEGE_USER }, { _fnum_fileDelete, kernelFileDelete, 1, PRIVILEGE_USER }, { _fnum_fileDeleteRecursive, kernelFileDeleteRecursive, 1, PRIVILEGE_USER }, { _fnum_fileDeleteSecure, kernelFileDeleteSecure, 1, PRIVILEGE_USER }, { _fnum_fileMakeDir, kernelFileMakeDir, 1, PRIVILEGE_USER }, { _fnum_fileRemoveDir, kernelFileRemoveDir, 1, PRIVILEGE_USER }, { _fnum_fileCopy, kernelFileCopy, 2, PRIVILEGE_USER }, { _fnum_fileCopyRecursive, kernelFileCopyRecursive, 2, PRIVILEGE_USER }, { _fnum_fileMove, kernelFileMove, 2, PRIVILEGE_USER }, { _fnum_fileTimestamp, kernelFileTimestamp, 1, PRIVILEGE_USER }, { _fnum_fileGetTemp, kernelFileGetTemp, 1, PRIVILEGE_USER }, { _fnum_fileStreamOpen, kernelFileStreamOpen, 3, PRIVILEGE_USER }, { _fnum_fileStreamSeek, kernelFileStreamSeek, 2, PRIVILEGE_USER }, { _fnum_fileStreamRead, kernelFileStreamRead, 3, PRIVILEGE_USER }, { _fnum_fileStreamReadLine, kernelFileStreamReadLine, 3, PRIVILEGE_USER }, { _fnum_fileStreamWrite, kernelFileStreamWrite, 3, PRIVILEGE_USER }, { _fnum_fileStreamWriteStr, kernelFileStreamWriteStr, 2, PRIVILEGE_USER }, { _fnum_fileStreamWriteLine, kernelFileStreamWriteLine, 2, PRIVILEGE_USER }, { _fnum_fileStreamFlush, kernelFileStreamFlush, 1, PRIVILEGE_USER }, { _fnum_fileStreamClose, kernelFileStreamClose, 1, PRIVILEGE_USER }};static kernelFunctionIndex memoryFunctionIndex[] = { // Memory manager functions (5000-5999 range) { _fnum_memoryGet, kernelMemoryGet, 2, PRIVILEGE_USER }, { _fnum_memoryGetPhysical, kernelMemoryGetPhysical, 3, PRIVILEGE_SUPERVISOR }, { _fnum_memoryRelease, kernelMemoryRelease, 1, PRIVILEGE_USER }, { _fnum_memoryReleaseAllByProcId, kernelMemoryReleaseAllByProcId, 1, PRIVILEGE_USER }, { _fnum_memoryChangeOwner, kernelMemoryChangeOwner, 4, PRIVILEGE_SUPERVISOR }, { _fnum_memoryGetStats, kernelMemoryGetStats, 2, PRIVILEGE_USER }, { _fnum_memoryGetBlocks, kernelMemoryGetBlocks, 3, PRIVILEGE_USER }};static kernelFunctionIndex multitaskerFunctionIndex[] = { // Multitasker functions (6000-6999 range) { _fnum_multitaskerCreateProcess, kernelMultitaskerCreateProcess, 3, PRIVILEGE_USER }, { _fnum_multitaskerSpawn, kernelMultitaskerSpawn, 4, PRIVILEGE_USER }, { _fnum_multitaskerGetCurrentProcessId, kernelMultitaskerGetCurrentProcessId, 0, PRIVILEGE_USER }, { _fnum_multitaskerGetProcess, kernelMultitaskerGetProcess, 2, PRIVILEGE_USER }, { _fnum_multitaskerGetProcessByName, kernelMultitaskerGetProcessByName, 2, PRIVILEGE_USER }, { _fnum_multitaskerGetProcesses, kernelMultitaskerGetProcesses,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -