Getting dataspace of a tmpfs-file blocks forever

Stark, Josef j.stark at tum.de
Thu Feb 5 21:41:40 CET 2015


Hey, 

when I have created and filled a file in tmpfs,
reading normally (-> read() ) from it works fine.
However, I cannot get the associated dataspace.
The call would just block forever.

Here is an example code snippet:

==========================

	const char* filename="/tmp/test";
	
	mount("/", "tmp", "tmpfs", 0, 0);
	int fd=open(filename,O_WRONLY|O_CREAT);
	write(fd,"Hello",6);
	close(fd);
	
	fd=open(filename,O_RDONLY);
	char buf[15];
	read(fd,buf,15);
	printf("file content: %s\n",buf);
	
	cxx::Ref_ptr<L4Re::Vfs::File> fp = L4Re::Vfs::vfs_ops->get_file(fd);
	printf("Got file!\n");
	L4::Cap<L4Re::Dataspace> ds = fp->data_space();
	printf("Got Dataspace!");
	long int size = ds->size();
	printf("Dataspace size: %li\n",size);
	printf("Done.\n");
	close(fd);

============================

It would just output 
        file content: Hello
        Got file!
but nothing more, which tells me that reading
normally from the file works, but the 
fp->data_space() call blocks.

If I tried the same with an existing file in /rom/, it
works just fine (except for the writing part, obviously).



How can I make this work?

Thanks,
Josef



More information about the l4-hackers mailing list