示例#1
0
void case_setup()
{ 
    int ret;
    g_message("--enter fun %s", __func__);
    fixture.icache_ctrl = icache_new();
    g_assert(fixture.icache_ctrl!=NULL);
    ret = icache_init(fixture.icache_ctrl, IBLOCK_SIZE, 1024, 80, 128);
    g_assert(ret == 0);
}
示例#2
0
void fs_init() {

    /* print init message: */
    printk("Quafios filesystem is starting...\n");

    /* initialize caches: */
    icache_init();
    
    /* mount tmpfs to the root. */
    mount("", "/", "tmpfs", 0, NULL);

}
示例#3
0
int ext2_load(struct inode *dev, struct inode **super)
{
    int err = 0;

    /* Read Superblock */
    struct ext2_superblock *sb;
    sb = kmalloc(sizeof(struct ext2_superblock), &M_EXT2_SB, 0);

    if ((err = vfs_read(dev, 1024, sizeof(struct ext2_superblock), sb)) < 0)
        return err;

    /* Valid Ext2? */
    if (sb->ext2_signature != EXT2_SIGNATURE) {
        kfree(sb);
        return -EINVAL;
    }

    /* Build descriptor structure */
    struct ext2 *desc = kmalloc(sizeof(struct ext2), &M_EXT2, 0);
    desc->supernode = dev;
    desc->superblock = sb;
    desc->bs = 1024UL << sb->block_size;

    /* Read block group descriptor table */
    uint32_t bgd_table = (desc->bs == 1024)? 2048 : desc->bs;
    size_t bgds_count  = (sb->blocks_count + sb->blocks_per_block_group - 1)/ sb->blocks_per_block_group;
    size_t bgds_size   = bgds_count * sizeof(struct ext2_block_group_descriptor);
    desc->bgds_count   = bgds_count;

    desc->bgd_table = kmalloc(bgds_size, &M_EXT2_BGD, 0);

    if (!desc->bgd_table)
        return -ENOMEM;

    if ((err = vfs_read(desc->supernode, bgd_table, bgds_size, desc->bgd_table)) < 0)
        return err;

    desc->icache = kmalloc(sizeof(struct icache), &M_ICACHE, 0);
    
    if (!desc->icache)
        return -ENOMEM;

    icache_init(desc->icache);

    if (super)
        ext2_inode_build(desc, 2, super);
    
    return 0;
}