예제 #1
0
int uffs_write(int fd, void *data, int len)
{
    int ret;
    uffs_Object *obj = FD2OBJ(fd);

    CHK_OBJ(obj, -1);
    uffs_ClearObjectErr(obj);
    ret = uffs_WriteObject(obj, data, len);
    uffs_set_error(-uffs_GetObjectErr(obj));

    return ret;
}
int uffs_write(int fd, const void *data, int len)
{
	int ret;
	uffs_Object *obj;

	CHK_OBJ_LOCK(fd, obj, -1);
	uffs_ClearObjectErr(obj);
	ret = uffs_WriteObject(obj, data, len);
	uffs_set_error(-uffs_GetObjectErr(obj));

	uffs_GlobalFsLockUnlock();

	return ret;
}
예제 #3
0
int dfs_uffs_write(struct dfs_fd* fd, const void* buf, rt_size_t count)   
{
	uffs_Object* fp;
	u32 byte_write;
	struct uffs_stat stat_buf;
rt_kprintf("count=%d\n",count);
	if(fd->type == FT_DIRECTORY)
	{
		return -DFS_STATUS_EISDIR;
	}

	fp = (uffs_Object*)(fd->data);
	RT_ASSERT(fp != RT_NULL);

	byte_write = uffs_WriteObject(fp, buf, count);

	/* update position and file size */
	fd->pos  = fp->pos;

	uffs_stat(fp->name, &stat_buf);
	fd->size = stat_buf.st_size;

	return byte_write;   
}