Esempio n. 1
0
void test_flash_traffic(const char *mountpt)
{
	char name0[100];
	char name1[100];
	int i;
	yaffs_Device *dev;

	yaffs_traceMask = 0;

	yaffs_StartUp();

	yaffs_mount(mountpt);
	
	dev = yaffs_getdev(mountpt);

	strcpy(name0,mountpt);
	strcat(name0,"/x");

	strcpy(name1,mountpt);
	strcat(name1,"/y");

	dump_dev_stats(dev,"start");
	create_file_of_size(name0,32 * 1024 * 1024);
	dump_dev_stats(dev,"32MB written");
	for(i = 0; i < 20; i++)
		create_file_of_size(name1,1024 * 1024);
	dump_dev_stats(dev,"20x 1MB files written");

}
Esempio n. 2
0
/*********************************************************************************************************
** 函数名称: __procFsYaffsRead
** 功能描述: procfs 读一个 yaffs 文件
** 输 入  : p_pfsn        节点控制块
**           pcBuffer      缓冲区
**           stMaxBytes    缓冲区大小
**           oft           文件指针
** 输 出  : 实际读取的数目
** 全局变量: 
** 调用模块: 
*********************************************************************************************************/
static ssize_t  __procFsYaffsRead (PLW_PROCFS_NODE  p_pfsn, 
                                   PCHAR            pcBuffer, 
                                   size_t           stMaxBytes,
                                   off_t            oft)
{
    REGISTER PCHAR      pcFileBuffer;
             size_t     stRealSize;                                     /*  实际的文件内容大小          */
             size_t     stCopeBytes;

    /*
     *  程序运行到这里, 文件缓冲一定已经分配了预置的内存大小.
     */
    pcFileBuffer = (PCHAR)API_ProcFsNodeBuffer(p_pfsn);
    if (pcFileBuffer == LW_NULL) {
        _ErrorHandle(ENOMEM);
        return  (0);
    }
    
    stRealSize = API_ProcFsNodeGetRealFileSize(p_pfsn);
    if (stRealSize == 0) {                                              /*  需要生成文件                */
        /*
         *  在这里生成文件的内容
         */
        INT                 i = 0;
        PCHAR               pcVolName;
        struct yaffs_dev   *pyaffsDev;                                  /*  yaffs 挂载设备              */
        
        do {
            pcVolName = yaffs_getdevname(i, &i);
            if (pcVolName == LW_NULL) {
                break;                                                  /*  没有其他的卷                */
            }
            pyaffsDev = (struct yaffs_dev *)yaffs_getdev(pcVolName);
            if (pyaffsDev == LW_NULL) {
                break;                                                  /*  无法查询到设备节点          */
            }
            
            /*
             *  (__PROCFS_BUFFER_SIZE_YAFFS - stRealSize) 为文件缓冲区剩余的空间大小
             */
            stRealSize = __procFsYaffsPrint(pyaffsDev, 
                                            pcVolName,
                                            pcFileBuffer,
                                            __PROCFS_BUFFER_SIZE_YAFFS,
                                            stRealSize);
        } while (i != PX_ERROR);
    
        API_ProcFsNodeSetRealFileSize(p_pfsn, stRealSize);              /*  回写文件实际大小            */
    }
    if (oft >= stRealSize) {
        _ErrorHandle(ENOSPC);
        return  (0);
    }
    
    stCopeBytes  = __MIN(stMaxBytes, (size_t)(stRealSize - oft));       /*  计算实际拷贝的字节数        */
    lib_memcpy(pcBuffer, (CPVOID)(pcFileBuffer + oft), (UINT)stCopeBytes);
    
    return  ((ssize_t)stCopeBytes);
}