⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.h

📁 上一个上传的有问题,这个是好的。visopsys包括系统内核和GUI的全部SOURCE code ,还包括一些基本的docs文档。里面src子目录对应所有SOURCE code.对于想研究操作系统的朋
💻 H
📖 第 1 页 / 共 5 页
字号:
#define _fnum_windowComponentGetWidth                12033#define _fnum_windowComponentSetWidth                12034#define _fnum_windowComponentGetHeight               12035#define _fnum_windowComponentSetHeight               12036#define _fnum_windowComponentFocus                   12037#define _fnum_windowComponentDraw                    12038#define _fnum_windowComponentGetData                 12039#define _fnum_windowComponentSetData                 12040#define _fnum_windowComponentGetSelected             12041#define _fnum_windowComponentSetSelected             12042#define _fnum_windowNewButton                        12043#define _fnum_windowNewCanvas                        12044#define _fnum_windowNewCheckbox                      12045#define _fnum_windowNewContainer                     12046#define _fnum_windowNewIcon                          12047#define _fnum_windowNewImage                         12048#define _fnum_windowNewList                          12049#define _fnum_windowNewListItem                      12050#define _fnum_windowNewMenu                          12051#define _fnum_windowNewMenuBar                       12052#define _fnum_windowNewMenuItem                      12053#define _fnum_windowNewPasswordField                 12054#define _fnum_windowNewProgressBar                   12055#define _fnum_windowNewRadioButton                   12056#define _fnum_windowNewScrollBar                     12057#define _fnum_windowNewTextArea                      12058#define _fnum_windowNewTextField                     12059#define _fnum_windowNewTextLabel                     12060#define _fnum_windowDebugLayout                      12061// User functions.  All are in the 13000-13999 range#define _fnum_userAuthenticate                       13000#define _fnum_userLogin                              13001#define _fnum_userLogout                             13002#define _fnum_userGetNames                           13003#define _fnum_userAdd                                13004#define _fnum_userDelete                             13005#define _fnum_userSetPassword                        13006#define _fnum_userGetPrivilege                       13007#define _fnum_userGetPid                             13008#define _fnum_userSetPid                             13009#define _fnum_userFileAdd                            13010#define _fnum_userFileDelete                         13011#define _fnum_userFileSetPassword                    13012// Network functions.  All are in the 14000-14999 range#define _fnum_networkDeviceGetCount                  14000#define _fnum_networkDeviceGet                       14001#define _fnum_networkInitialized                     14002#define _fnum_networkInitialize                      14003#define _fnum_networkShutdown                        14004#define _fnum_networkOpen                            14005#define _fnum_networkClose                           14006#define _fnum_networkCount                           14007#define _fnum_networkRead                            14008#define _fnum_networkWrite                           14009#define _fnum_networkPing                            14010// Miscellaneous functions.  All are in the 99000-99999 range#define _fnum_fontGetDefault                         99000#define _fnum_fontSetDefault                         99001#define _fnum_fontLoad                               99002#define _fnum_fontGetPrintedWidth                    99003#define _fnum_imageLoad                              99004#define _fnum_imageSave                              99005#define _fnum_shutdown                               99006#define _fnum_version                                99007#define _fnum_encryptMD5                             99008#define _fnum_lockGet                                99009#define _fnum_lockRelease                            99010#define _fnum_lockVerify                             99011#define _fnum_variableListCreate                     99012#define _fnum_variableListDestroy                    99013#define _fnum_variableListGet                        99014#define _fnum_variableListSet                        99015#define _fnum_variableListUnset                      99016#define _fnum_configurationReader                    99017#define _fnum_configurationWriter                    99018#define _fnum_keyboardGetMaps                        99019#define _fnum_keyboardSetMap                         99020#define _fnum_deviceTreeGetCount                     99021#define _fnum_deviceTreeGetRoot                      99022#define _fnum_deviceTreeGetChild                     99023#define _fnum_deviceTreeGetNext                      99024#define _fnum_mouseLoadPointer                       99025#define _fnum_mouseSwitchPointer                     99026// Utility macros for stack manipulation#define stackPush(value) \  __asm__ __volatile__ ("pushl %0 \n\t" : : "r" (value))#define stackAdj(bytes) \  __asm__ __volatile__ ("addl %0, %%esp \n\t" \                        : : "r" (bytes) : "%esp")// The generic calls for accessing the kernel API#define sysCall(retCode)                                            \  if (!visopsys_in_kernel)                                          \    {                                                               \      __asm__ __volatile__ ("lcall $0x003B,$0x00000000 \n\t"        \                            "movl %%eax, %0 \n\t"                   \                            : "=r" (retCode) : : "%eax", "memory"); \    }                                                               \  else                                                              \    {                                                               \      retCode = -1;                                                 \    }// These use the macros defined above to call the kernel with the// appropriate number of argumentsstatic inline int sysCall_0(int fnum){  // Do a syscall with NO parameters  int status = 0;  stackPush(fnum);  stackPush(1);  sysCall(status);  stackAdj(8);  return (status);}static inline int sysCall_1(int fnum, void *arg1){  // Do a syscall with 1 parameter  int status = 0;  stackPush(arg1);  stackPush(fnum);  stackPush(2);  sysCall(status);  stackAdj(12);  return (status);}static inline int sysCall_2(int fnum, void *arg1, void *arg2){  // Do a syscall with 2 parameters  int status = 0;  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(3);  sysCall(status);  stackAdj(16);  return (status);}static inline int sysCall_3(int fnum, void *arg1, void *arg2, void *arg3){  // Do a syscall with 3 parameters  int status = 0;  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(4);  sysCall(status);  stackAdj(20);  return (status);}static inline int sysCall_4(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4){  // Do a syscall with 4 parameters  int status = 0;  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(5);  sysCall(status);  stackAdj(24);  return (status);}static inline int sysCall_5(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4, void *arg5){  // Do a syscall with 5 parameters  int status = 0;  stackPush(arg5);  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(6);  sysCall(status);  stackAdj(28);  return (status);}static inline int sysCall_6(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4, void *arg5, void *arg6){  // Do a syscall with 6 parameters  int status = 0;  stackPush(arg6);  stackPush(arg5);  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(7);  sysCall(status);  stackAdj(32);  return (status);}static inline int sysCall_7(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4, void *arg5, void *arg6, void *arg7){  // Do a syscall with 7 parameters  int status = 0;  stackPush(arg7);  stackPush(arg6);  stackPush(arg5);  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(8);  sysCall(status);  stackAdj(36);  return (status);}static inline int sysCall_8(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4, void *arg5, void *arg6, void *arg7,			    void *arg8){  // Do a syscall with 8 parameters  int status = 0;  stackPush(arg8);  stackPush(arg7);  stackPush(arg6);  stackPush(arg5);  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(9);  sysCall(status);  stackAdj(40);  return (status);}static inline int sysCall_9(int fnum, void *arg1, void *arg2, void *arg3,			    void *arg4, void *arg5, void *arg6, void *arg7,			    void *arg8, void *arg9){  // Do a syscall with 9 parameters  int status = 0;  stackPush(arg9);  stackPush(arg8);  stackPush(arg7);  stackPush(arg6);  stackPush(arg5);  stackPush(arg4);  stackPush(arg3);  stackPush(arg2);  stackPush(arg1);  stackPush(fnum);  stackPush(10);  sysCall(status);  stackAdj(44);  return (status);}// These inline functions are used to call specific kernel functions.  // There will be one of these for every API function.//// Text input/output functions//_X_ static inline objectKey textGetConsoleInput(void){  // Proto: kernelTextInputStream *kernelTextGetConsoleInput(void);  // Desc : Returns a reference to the console input stream.  This is where keyboard input goes by default.  return ((objectKey) sysCall_0(_fnum_textGetConsoleInput));}_X_ static inline int textSetConsoleInput(objectKey newStream){  // Proto: int kernelTextSetConsoleInput(kernelTextInputStream *);  // Desc : Changes the console input stream.  GUI programs can use this function to redirect input to a text area or text field, for example.  return (sysCall_1(_fnum_textSetConsoleInput, newStream));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -