[ECOS] cyg_mtab_lookup()

Nick Garnett nickg@calivar.demon.co.uk
Mon Jun 24 14:45:00 GMT 2002


Roland Caßebohm <roland.cassebohm@visionsystems.de> writes:

> Hi,
> 
> there is a problem with cyg_mtab_lookup(). If name has not a leading '/' mte 
> will not be initialized and LOCK_FS() will fail.
> 
> In cyg_mtab_lookup():
> 
>     // Unrooted file names go straight to current dir
>     if( **name != '/' ) return 0;
> 
> 
> In open():
> 
>     ret = cyg_mtab_lookup( &dir, &name, &mte );
> 
>     if( 0 != ret )
>     {
>         cyg_fd_free(fd);
>         cyg_file_free(file);
>         FILEIO_RETURN(ENOENT);
>     }
> 
>     LOCK_FS( mte );
> 

mte is initialized to the mte for the current directory at the start
of open(). If the name does not start with a '/' then the values are
left alone and we do all further work relative to the current
directory. This is exactly what we want to happen.

The current directory is set on system initialization, or when we
mount the first file system. Until there are real filesystems, with
real directories, only absolute pathnames can be used.

-- 
Nick Garnett - eCos Kernel Architect


--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss



More information about the Ecos-discuss mailing list