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