7.3-STABLE and Linux version of SIMetrix

Andre Albsmeier Andre.Albsmeier at siemens.com
Thu Jan 6 10:40:59 UTC 2011


On Thu, 06-Jan-2011 at 09:01:30 +0100, Alexander Leidinger wrote:
> Quoting Andre Albsmeier <Andre.Albsmeier at siemens.com> (from Wed, 5 Jan  
> 2011 20:19:15 +0100):
> 
> > Got it running... A short explanation:
> >
> > Linux' shm_open() fails because it wants to find some funky shmfs
> > to construct the full pathname. It starts to search at the default
> > mountpoint which is /dev/shm. If this fails it runs through fstab
> > and searches for shmfs and tmpfs. Whatever it finds will be
> > statfs()'ed to be checked for Linux' fs magic for shmfs (0x01021994).
> 
> What does it expect as a filesystem type if it does not find shmfs in  
> fstab but tmpfs? If it does not find tmpfs, will it try /tmp anyway  
> (but check for some fstype magic)?

It searches for every mount which is of type tmpfs or shm.
Whatever it finds must have the fs magic SHMFS_SUPER_MAGIC
(0x01021994). It's in sysdeps/unix/sysv/linux/shm_open.c:

------------------------- snip -------------------

  /* Now read the entries.  */
  while ((mp = __getmntent_r (fp, &resmem, buf, sizeof buf)) != NULL)
    /* The original name is "shm" but this got changed in early Linux
       2.4.x to "tmpfs".  */
    if (strcmp (mp->mnt_type, "tmpfs") == 0
#ifndef __ASSUME_TMPFS_NAME
        || strcmp (mp->mnt_type, "shm") == 0
#endif
        )
      {
        /* Found it.  There might be more than one place where the
           filesystem is mounted but one is enough for us.  */
        size_t namelen;

        /* First make sure this really is the correct entry.  At least
           some versions of the kernel give wrong information because
           of the implicit mount of the shmfs for SysV IPC.  */
        if (__statfs (mp->mnt_dir, &f) != 0 || f.f_type != SHMFS_SUPER_MAGIC)
          continue;

------------------------- snap -------------------

	-Andre

> 
> Bye,
> Alexander.
> 
> -- 
> Money cannot buy love, nor even friendship.
> 
> http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
> http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
> 

-- 
FreeBSD: We eat penguins for breakfast


More information about the freebsd-emulation mailing list