Example #1
0
static int init_uffs_fs(
	struct _nand_dev * nand_part)
{
    uffs_MountTable * mtb;
    struct rt_mtd_nand_device * nand;
    struct uffs_StorageAttrSt * flash_storage;

    mtb = &nand_part->mount_table;
    nand = nand_part->dev;
    flash_storage = &nand_part->storage;

	/* setup nand storage attributes */
	uffs_setup_storage(flash_storage, nand);

	/* register mount table */
	if(mtb->dev)
	{
		/* set memory allocator for uffs */
#if CONFIG_USE_SYSTEM_MEMORY_ALLOCATOR > 0
		uffs_MemSetupSystemAllocator(&mtb->dev->mem);
#endif
		/* setup device init/release entry */
		mtb->dev->Init = _device_init;
		mtb->dev->Release = _device_release;
		mtb->dev->attr = flash_storage;

		uffs_RegisterMountTable(mtb);
	}
	/* mount uffs partion on nand device */
	return uffs_Mount(nand_part->mount_path) == U_SUCC ? 0 : -1;
}
static int my_init_filesystem(void)
{
	uffs_MountTable *mtbl = &(demo_mount_table[0]);

	/* setup nand storage attributes */
	setup_flash_storage(&g_my_flash_storage);

	/* setup memory allocator */
	uffs_MemSetupStaticAllocator(&demo_device_1.mem, static_buffer_par1, sizeof(static_buffer_par1));
	uffs_MemSetupStaticAllocator(&demo_device_2.mem, static_buffer_par2, sizeof(static_buffer_par2));

	/* register mount table */
	while(mtbl->dev) {
		// setup device init/release entry
		mtbl->dev->Init = my_InitDevice;
		mtbl->dev->Release = my_ReleaseDevice;
		uffs_RegisterMountTable(mtbl);
		mtbl++;
	}

	// mount partitions
	for (mtbl = &(demo_mount_table[0]); mtbl->mount != NULL; mtbl++) {
		uffs_Mount(mtbl->mount);
	}

	return uffs_InitFileSystemObjects() == U_SUCC ? 0 : -1;
}
static int init_uffs_fs(void)
{
	struct uffs_MountTableEntrySt *mtbl = &demo_mount;

	/* setup flash storage attributes */
	setup_storage(femu_GetStorage());

	/* setup memory allocator */
	uffs_MemSetupStaticAllocator(&mtbl->dev->mem, static_buffer_pool, sizeof(static_buffer_pool));

	/* setup device: init, release, attr */
	setup_device(mtbl->dev);

	/* register mount table */
	uffs_RegisterMountTable(mtbl);

	return uffs_InitMountTable() == U_SUCC ? 0 : -1;
}
static int init_uffs_fs(void)
{
	static int bIsFileSystemInited = 0;
	struct uffs_MountTableEntrySt *mtbl = &(conf_mounts[0]);
	struct uffs_ConfigSt cfg = {
		0,			// bc_caches - default
		0,			// page_buffers - default
		0,			// dirty_pages - default
		0,			// dirty_groups - default
		0,			// reserved_free_blocks - default
	};

	if (bIsFileSystemInited)
		return -4;

	bIsFileSystemInited = 1;

	while (mtbl->dev) {

		memcpy(&mtbl->dev->cfg, &cfg, sizeof(struct uffs_ConfigSt));

#if CONFIG_USE_SYSTEM_MEMORY_ALLOCATOR > 0
		uffs_MemSetupSystemAllocator(&mtbl->dev->mem);
#endif
		setup_device(mtbl->dev);
		uffs_RegisterMountTable(mtbl);
		mtbl++;
	}

	// mount partitions
	for (mtbl = &(conf_mounts[0]); mtbl->mount != NULL; mtbl++) {
		uffs_Mount(mtbl->mount);
	}

	return uffs_InitFileSystemObjects() == U_SUCC ? 0 : -1;
}