📄 blockdev.c
字号:
*prevValue = (dword)flUseMultiDoc;
flUseMultiDoc = (byte)value;
break;
case FL_MTL_POLICY:
*prevValue = (dword)flMTLdefragMode;
flMTLdefragMode = (byte)value;
break;
#endif /* MULTI_DOC */
case FL_SUSPEND_MODE:
if((value == FL_OFF) && (flSuspendMode != FL_OFF))
#ifdef EXIT
flExit();
#endif /* EXIT */
*prevValue = (dword)flSuspendMode;
flSuspendMode = (byte)value;
break;
case FL_SET_POLICY:
*prevValue = (dword)flPolicy[socket][volume];
/* flPolicy[socket][volume] = (byte)value; */
break;
#if (defined(VERIFY_WRITE) || defined(VERIFY_ERASED_SECTOR))
case FL_SECTORS_VERIFIED_PER_FOLDING:
*prevValue = flSectorsVerifiedPerFolding;
flSectorsVerifiedPerFolding = value;
break;
case FL_VERIFY_WRITE_BDTL:
*prevValue = (dword)flVerifyWrite[socket][volume];
flVerifyWrite[socket][volume] = (byte)value;
break;
#endif /* VERIFY_WRITE || VERIFY_ERASED_SECTOR */
#ifdef VERIFY_WRITE
case FL_VERIFY_WRITE_BINARY:
*prevValue = (dword)flVerifyWrite[socket][volume+MAX_TL_PARTITIONS];
flVerifyWrite[socket][volume+MAX_TL_PARTITIONS] = (byte)value;
break;
case FL_VERIFY_WRITE_OTHER:
*prevValue = (dword)flVerifyWrite[socket][(MAX_TL_PARTITIONS<<1)-1];
flVerifyWrite[socket][(MAX_TL_PARTITIONS<<1)-1] = (byte)value;
break;
#endif /* VERIFY_WRITE */
default: /* FL_MTD_BUS_ACCESS_TYPE */
#ifndef FL_NO_USE_FUNC
*prevValue = flBusConfig[socket];
flBusConfig[socket] = (dword)value;
#endif /* FL_NO_USE_FUNC */
break;
}
return flOK;
}
/*----------------------------------------------------------------------*/
/* f l S e t E n v S o c k e t */
/* */
/* Change one of TrueFFS environment variables for a specific sockets. */
/* */
/* Parameters: */
/* variableType : variable type to cahnge */
/* socket : socket number */
/* value : varaible value */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/* prevValue : The previous value of the variable */
/* if there are more then 1 partition in that */
/* socket , the first partition value is returned*/
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flSetEnvSocket(FLEnvVars variableType , byte socket , dword value, dword FAR2 *prevValue)
{
FLStatus status = flOK;
byte volume = 0;
switch (variableType) /* Check volume and socket sanity */
{
/* Volume specific variables */
case FL_SET_POLICY:
#if (defined(VERIFY_WRITE) || defined(VERIFY_ERASED_SECTOR))
case FL_VERIFY_WRITE_BDTL:
#endif /* VERIFY_WRITE || VERIFY_ERASED_SECTOR */
status = flSetEnvVolume(variableType,socket,MAX_TL_PARTITIONS-1,value,prevValue);
#ifdef VERIFY_WRITE
case FL_VERIFY_WRITE_BINARY:
#endif /* VERIFY_WRITE */
for (;(volume<MAX_TL_PARTITIONS-1)&&(status == flOK);volume++)
status = flSetEnvVolume(variableType,socket,volume,value,prevValue);
break;
/* Socket specific variables */
#ifdef VERIFY_WRITE
case FL_VERIFY_WRITE_OTHER:
#endif /* VERIFY_WRITE */
#ifndef FL_NO_USE_FUNC
case FL_MTD_BUS_ACCESS_TYPE:
#endif /* FL_NO_USE_FUNC */
#if (defined(VERIFY_WRITE) || !defined(FL_NO_USE_FUNC))
status = flSetEnvVolume(variableType,socket,INVALID_VOLUME_NUMBER,value,prevValue);
break;
#endif /* not FL_NO_USE_FUNC || VERIFY_WRITE */
/* Either global variables , or unknown */
default:
if(socket != INVALID_VOLUME_NUMBER) /* Was not called from flSetEnv */
{
DEBUG_PRINT(("Debug: Variable type is either unknown or not socket related.\r\n"));
return flBadParameter;
}
status = flSetEnvVolume(variableType,INVALID_VOLUME_NUMBER,INVALID_VOLUME_NUMBER,value,prevValue);
break;
}
return status;
}
/*----------------------------------------------------------------------*/
/* f l S e t E n v All */
/* */
/* Change one of TrueFFS environment variables for all systems, sockets */
/* and partitions. */
/* */
/* Parameters: */
/* variableType : variable type to cahnge */
/* value : varaible value */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/* prevValue : The previous value of the variable */
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flSetEnvAll(FLEnvVars variableType , dword value, dword FAR2 *prevValue)
{
FLStatus status = flOK;
byte socket;
switch (variableType) /* Check volume and socket sanity */
{
case FL_SET_POLICY: /* Per volume */
case FL_VERIFY_WRITE_BDTL: /* Per volume */
case FL_VERIFY_WRITE_BINARY: /* Per volume */
case FL_VERIFY_WRITE_OTHER: /* Per socket */
case FL_MTD_BUS_ACCESS_TYPE: /* Per socket */
for (socket=0;(socket<SOCKETS)&&(status == flOK);socket++)
status = flSetEnvSocket(variableType,socket,value,prevValue);
return status;
default:
return flSetEnvVolume(variableType,INVALID_VOLUME_NUMBER,INVALID_VOLUME_NUMBER,value,prevValue);
}
}
#endif /* ENVIRONMENT_VARS */
#ifndef FL_NO_USE_FUNC
/*----------------------------------------------------------------------*/
/* f l S e t D o c B u s R o u t i n e */
/* */
/* Set user defined memory acces routines for DiskOnChip. */
/* */
/* Parameters: */
/* socket : Socket number to install routine for. */
/* structPtr : Pointer to function structure. */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flSetDocBusRoutine(byte socket, FLAccessStruct FAR1 * structPtr)
{
FLFlash* flash;
/* Arg sanity check */
if (socket >= SOCKETS)
{
DEBUG_PRINT(("Error : change SOCKETS definition in flcustom.h to support that many sockets.\r\n"));
return flFeatureNotSupported;
}
if(structPtr == NULL)
{
DEBUG_PRINT(("ERROR - structPtr argument is NULL.\r\n"));
return flBadParameter;
}
/* Make sure global variables are initialized to their default values */
flInitGlobalVars();
flash = flFlashOf(socket);
flash->memWindowSize = structPtr->memWindowSize;
flash->memRead = structPtr->memRead;
flash->memWrite = structPtr->memWrite;
flash->memSet = structPtr->memSet;
flash->memRead8bit = structPtr->memRead8bit;
flash->memRead16bit = structPtr->memRead16bit;
flash->memWrite8bit = structPtr->memWrite8bit;
flash->memWrite16bit = structPtr->memWrite16bit;
flash->memSetGetMode = structPtr->memSetGetMode;
flBusConfig[socket] = FL_ACCESS_USER_DEFINED;
return flOK;
}
/*----------------------------------------------------------------------*/
/* f l G e t D o c B u s R o u t i n e */
/* */
/* Get currently installed memory access routines for DiskOnChip. */
/* */
/* Parameters: */
/* socket : Socket number to install routine for. */
/* structPtr : Pointer to function structure. */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flGetDocBusRoutine(byte socket, FLAccessStruct FAR1 * structPtr)
{
FLFlash* flash;
/* Arg sanity check */
if (socket >= SOCKETS)
{
DEBUG_PRINT(("Error : change SOCKETS definition in flcustom.h to support that many sockets.\r\n"));
return flFeatureNotSupported;
}
if(structPtr == NULL)
{
DEBUG_PRINT(("ERROR - structPtr argument is NULL.\r\n"));
return flBadParameter;
}
/* Make sure global variables are initialized to their default values */
flInitGlobalVars();
flash = flFlashOf(socket);
structPtr->memWindowSize = flash->memWindowSize;
structPtr->memRead = flash->memRead;
structPtr->memWrite = flash->memWrite;
structPtr->memSet = flash->memSet;
structPtr->memRead8bit = flash->memRead8bit;
structPtr->memRead16bit = flash->memRead16bit;
structPtr->memWrite8bit = flash->memWrite8bit;
structPtr->memWrite16bit = flash->memWrite16bit;
structPtr->memSetGetMode = flash->memSetGetMode;
structPtr->access = flBusConfig[socket];
return flOK;
}
#endif /* FL_NO_USE_FUNC */
/*----------------------------------------------------------------------*/
/* f l I n i t G l o b a l V a r s */
/* */
/* Initializes the FLite system, environment and access type variables. */
/* */
/* Parameters: */
/* None */
/* */
/* Returns: */
/* None */
/*----------------------------------------------------------------------*/
void flInitGlobalVars(void)
{
FLFlash * flash;
int i;
word j;
if(initGlobalVarsDone == TRUE)
return;
/* Do not initialize variables on next call */
initGlobalVarsDone = TRUE;
/*
* Set default values to per socket/volume variables
*/
for(i=0;i<SOCKETS;i++)
{
flash = flFlashOf(i);
/* tffsset is not yet initialized */
for(j=0;j<sizeof(FLFlash);j++)
{
((byte *)flash)[j] = 0;
}
#ifndef FL_NO_USE_FUNC
flBusConfig[i] = FL_NO_ADDR_SHIFT |
FL_BUS_HAS_8BIT_ACCESS |
FL_BUS_HAS_16BIT_ACCESS |
FL_BUS_HAS_32BIT_ACCESS;
#endif /* FL_NO_USE_FUNC */
#ifdef ENVIRONMENT_VARS
for (j=0;j<MAX_TL_PARTITIONS;j++)
{
flPolicy[i][j] = FL_DEFAULT_POLICY; /* FL_COMPLETE_ASAP */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -