7.3-STABLE and Linux version of SIMetrix

Alexander Leidinger Alexander at Leidinger.net
Thu Jan 6 12:25:20 UTC 2011


Quoting Andre Albsmeier <Andre.Albsmeier at siemens.com> (from Thu, 6 Jan  
2011 11:32:26 +0100):

> On Thu, 06-Jan-2011 at 08:57:53 +0100, Alexander Leidinger wrote:
>> Quoting Andre Albsmeier <Andre.Albsmeier at siemens.com> (from Wed, 5 Jan
>> 2011 20:19:15 +0100):

>> > My solution is eerie but it works. This is what I did:
>> >
>> > 1. cd /compat/linux
>> > 2. mkdir dev
>> > 3. cd dev
>> > 4. ln -s /tmp shm
>>
>> As long as you do not need to access something from dev (FreeBSD one),
>> this works. As soon as you need to access something from there it
>> depends upon the software. If the software is doing a readdir, the
>> user experience will be worse. And if it does not allow to enter a
>
> Let me see if I got this: Now I have a /compat/linux/dev directory
> which means that if some Linux programme wants to look into /dev it
> will see just the shm entry. If there wasn't my dev directory it
> would have continued to FreeBSD's /dev...

Correct.

>> Can you please try a solution with devfs.conf (I never tried if it
>> allows to link outside of dev)?
>
> I added the following line to devfs.conf
>
> link /tmp shm
>
> and removed my dev stuff under /compat/linux. And it still works ;-).

That's great.

> The devfs.conf thing makes it possible to simplify the (ugly)
> patch a bit:
>
> --- /sys/compat/linux/linux_stats.c.ORI	2008-01-10 20:11:51.000000000 +0100
> +++ /sys/compat/linux/linux_stats.c	2011-01-06 11:26:53.000000000 +0100
> @@ -379,6 +379,7 @@
>  	struct statfs bsd_statfs;
>  	char *path;
>  	int error;
> +	unsigned char shm = 0;
>
>  	LCONVPATHEXIST(td, args->path, &path);
>
> @@ -387,10 +388,14 @@
>  		printf(ARGS(statfs, "%s, *"), path);
>  #endif
>  	error = kern_statfs(td, path, UIO_SYSSPACE, &bsd_statfs);
> +	if( strncmp( path, "/dev/shm", 8 ) == 0 )
> +	  shm = ( path[8] == '\0' || (path[8] == '/' && path[9] == '\0') );
>  	LFREEPATH(path);
>  	if (error)
>  		return (error);
>  	bsd_to_linux_statfs(&bsd_statfs, &linux_statfs);
> +	if( shm )
> +	  linux_statfs.f_type = 0x01021994;
>  	return copyout(&linux_statfs, args->buf, sizeof(linux_statfs));
>  }
>
> Thanks for the hint with devfs.conf, that's a lot better!

Thanks for the patch.

Bye,
Alexander.

-- 
Freedom begins when you tell Mrs. Grundy to go fly a kite.

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-emulation mailing list