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

📄 pm.c

📁 AT91RM9200-U-Boot at91rm9200u-boot移植源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
loaded before the interrupt.****************************************************************************/int PMAPI PM_int86x(    int intno,    RMREGS *in,    RMREGS *out,    RMSREGS *sregs){    CRF             saveRegs;    ushort          oldDisable;    ULONG       rc;#if 0    /* Disable pass-up to our VxD handler so we directly call BIOS */    TRACE("SDDHELP: Entering PM_int86x()\n");    if (disableTSRFlag) {        oldDisable = *disableTSRFlag;        *disableTSRFlag = 0;        }#endif    LoadV86Registers(SSToDS(&saveRegs), in, sregs);    VDHResetEventSem(hevIRet);    rc = VDHPushInt(intno);    // set up return hook for interrupt    rc = VDHArmReturnHook(hhookUserIRetHook, VDHARH_NORMAL_IRET);    VDHYield(0);    // wait until the V86 IRETs - our return hook posts the semaphore    rc = VDHWaitEventSem(hevIRet, 5000); //SEM_INDEFINITE_WAIT);    ReadV86Registers(SSToDS(&saveRegs), out, sregs);#if 0    /* Re-enable pass-up to our VxD handler if previously enabled */    if (disableTSRFlag)        *disableTSRFlag = oldDisable;#endif    TRACE("SDDHELP: Exiting PM_int86x()\n");    return out->x.ax;}void PMAPI PM_availableMemory(ulong *physical,ulong *total){ *physical = *total = 0; }/****************************************************************************REMARKS:Allocates a block of locked physical memory.****************************************************************************/void * PMAPI PM_allocLockedMem(    uint size,    ulong *physAddr,    ibool contiguous,    ibool below16M){    ULONG       flags = VDHAP_SYSTEM;    ULONG       nPages = (size + 0xFFF) >> 12;    flags |= (physAddr != NULL) ? VDHAP_PHYSICAL : VDHAP_FIXED;    return VDHAllocPages(physAddr, nPages, VDHAP_SYSTEM | VDHAP_PHYSICAL);}/****************************************************************************REMARKS:Frees a block of locked physical memory.****************************************************************************/void PMAPI PM_freeLockedMem(    void *p,    uint size,    ibool contiguous){    if (p)        VDHFreePages((PVOID)p);}/****************************************************************************REMARKS:Lock linear memory so it won't be paged.****************************************************************************/int PMAPI PM_lockDataPages(void *p,uint len,PM_lockHandle *lh){    ULONG  lockHandle;    // TODO: the lock handle is essential for the unlock operation!!    lockHandle = VDHLockMem(p, len, 0, (PVOID)VDHLM_NO_ADDR, NULL);    if (lockHandle != NULL)       return 0;    else       return 1;}/****************************************************************************REMARKS:Unlock linear memory so it won't be paged.****************************************************************************/int PMAPI PM_unlockDataPages(void *p,uint len,PM_lockHandle *lh){    // TODO: implement - use a table of lock handles?    // VDHUnlockPages(lockHandle);    return 0;}/****************************************************************************REMARKS:Lock linear memory so it won't be paged.****************************************************************************/int PMAPI PM_lockCodePages(void (*p)(),uint len,PM_lockHandle *lh){    return PM_lockDataPages((void*)p,len,lh);}/****************************************************************************REMARKS:Unlock linear memory so it won't be paged.****************************************************************************/int PMAPI PM_unlockCodePages(void (*p)(),uint len,PM_lockHandle *lh){    return PM_unlockDataPages((void*)p,len,lh);}/****************************************************************************REMARKS:OS specific shared libraries not supported inside a VDD****************************************************************************/PM_MODULE PMAPI PM_loadLibrary(    const char *szDLLName){    (void)szDLLName;    return NULL;}/****************************************************************************REMARKS:OS specific shared libraries not supported inside a VDD****************************************************************************/void * PMAPI PM_getProcAddress(    PM_MODULE hModule,    const char *szProcName){    (void)hModule;    (void)szProcName;    return NULL;}/****************************************************************************REMARKS:OS specific shared libraries not supported inside a VDD****************************************************************************/void PMAPI PM_freeLibrary(    PM_MODULE hModule){    (void)hModule;}/****************************************************************************REMARKS:Function to find the first file matching a search criteria in a directory.****************************************************************************/void *PMAPI PM_findFirstFile(    const char *filename,    PM_findData *findData){    // TODO: This function should start a directory enumeration search    //       given the filename (with wildcards). The data should be    //       converted and returned in the findData standard form.    (void)filename;    (void)findData;    return PM_FILE_INVALID;}/****************************************************************************REMARKS:Function to find the next file matching a search criteria in a directory.****************************************************************************/ibool PMAPI PM_findNextFile(    void *handle,    PM_findData *findData){    // TODO: This function should find the next file in directory enumeration    //       search given the search criteria defined in the call to    //       PM_findFirstFile. The data should be converted and returned    //       in the findData standard form.    (void)handle;    (void)findData;    return false;}/****************************************************************************REMARKS:Function to close the find process****************************************************************************/void PMAPI PM_findClose(    void *handle){    // TODO: This function should close the find process. This may do    //       nothing for some OS'es.    (void)handle;}/****************************************************************************REMARKS:Function to determine if a drive is a valid drive or not. Under Unix thisfunction will return false for anything except a value of 3 (consideredthe root drive, and equivalent to C: for non-Unix systems). The drivenumbering is:    1   - Drive A:    2   - Drive B:    3   - Drive C:    etc****************************************************************************/ibool PMAPI PM_driveValid(    char drive){    // Not applicable in a VDD    (void)drive;    return false;}/****************************************************************************REMARKS:Function to get the current working directory for the specififed drive.Under Unix this will always return the current working directory regardlessof what the value of 'drive' is.****************************************************************************/void PMAPI PM_getdcwd(    int drive,    char *dir,    int len){    // Not applicable in a VDD    (void)drive;    (void)dir;    (void)len;}/****************************************************************************PARAMETERS:base    - The starting physical base address of the regionsize    - The size in bytes of the regiontype    - Type to place into the MTRR registerRETURNS:Error code describing the result.REMARKS:Function to enable write combining for the specified region of memory.****************************************************************************/int PMAPI PM_enableWriteCombine(    ulong base,    ulong size,    uint type){    return MTRR_enableWriteCombine(base,size,type);}/****************************************************************************REMARKS:Function to change the file attributes for a specific file.****************************************************************************/void PMAPI PM_setFileAttr(    const char *filename,    uint attrib){    // TODO: Implement this ?    (void)filename;    (void)attrib;    PM_fatalError("PM_setFileAttr not implemented!");}/****************************************************************************REMARKS:Function to get the file attributes for a specific file.****************************************************************************/uint PMAPI PM_getFileAttr(    const char *filename){    // TODO: Implement this ?    (void)filename;    PM_fatalError("PM_getFileAttr not implemented!");    return 0;}/****************************************************************************REMARKS:Function to create a directory.****************************************************************************/ibool PMAPI PM_mkdir(    const char *filename){    // TODO: Implement this ?    (void)filename;    PM_fatalError("PM_mkdir not implemented!");    return false;}/****************************************************************************REMARKS:Function to remove a directory.****************************************************************************/ibool PMAPI PM_rmdir(    const char *filename){    // TODO: Implement this ?    (void)filename;    PM_fatalError("PM_rmdir not implemented!");    return false;}/****************************************************************************REMARKS:Function to get the file time and date for a specific file.****************************************************************************/ibool PMAPI PM_getFileTime(    const char *filename,    ibool gmTime,    PM_time *time){    // TODO: Implement this ?    (void)filename;    (void)gmTime;    (void)time;    PM_fatalError("PM_getFileTime not implemented!");    return false;}/****************************************************************************REMARKS:Function to set the file time and date for a specific file.****************************************************************************/ibool PMAPI PM_setFileTime(    const char *filename,    ibool gmTime,    PM_time *time){    // TODO: Implement this ?    (void)filename;    (void)gmTime;    (void)time;    PM_fatalError("PM_setFileTime not implemented!");    return false;}

⌨️ 快捷键说明

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