RTEMS shell and chdir

Peter Dufault dufault at hda.com
Tue Jul 15 23:05:10 UTC 2014


On Jul 15, 2014, at 17:44 , Joel Sherrill <Joel.Sherrill at oarcorp.com> wrote:

> 
> On 7/15/2014 4:02 PM, Peter Dufault wrote:
>> A friend started trying RTEMS and noted that the RTEMS shell doesn't work as he expected - each shell maintains its own current working directory.   Furthermore, a "chdir()" in a routine that then creates a shell doesn't get the working directory from the "chdir()".
>> 
>> Searching about "current working directory" and "pthreads" or POSIX threads results in Linux and other man pages that state that the current working directory is shared across all threads in a process.  The RTEMS shell seems to be calling "getcwd()" to get back the directory for the shell.  Is there a single current working directory in RTEMS?  Should "chdir" in one shell result in all shells having a different current working directory?  How does it work now?
> POSIX has the concept of a per-process environment. RTEMS has that
> same concept but since the entire application is one process, a change
> to the per-process environment could impact threads in a way that
> you don't want.
> 
> Thus you can set a thread to have a private per-process environment.
> This lets a thread have a separate uid, gid, chroot(), cwd() and a few other
> characteristics.
> 
> The shell and ftp daemon use this feature. When you login, you actually
> get a user id. I think fileio (for sure telnetd) example let you login
> as root
> or rtems and you have different file access permissions.
> 
> By default, all threads have the same per-process variables.  Which
> is POSIX compliant.
> 
> Your friend was smart enough to recognize that this wasn't POSIX
> behavior.  But since you can have multiple shell instances, it does
> make sense that one chdir() only impacts that one shell.

OK, but am I right that getcwd() works differently in one thread than another (I only briefly looked at the shell code, and I thought it was calling getcwd().) in the same process?  Is that POSIX compliant?  Is there a way to force all threads in RTEMS to have the same per-process variables since there is only one process?

>> Peter
>> -----------------
>> Peter Dufault
>> HD Associates, Inc.      Software and System Engineering
>> 
>> _______________________________________________
>> users mailing list
>> users at rtems.org
>> http://lists.rtems.org/mailman/listinfo/users
> 
> -- 
> Joel Sherrill, Ph.D.             Director of Research & Development
> joel.sherrill at OARcorp.com        On-Line Applications Research
> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
> Support Available                (256) 722-9985
> 

Peter
-----------------
Peter Dufault
HD Associates, Inc.      Software and System Engineering



More information about the users mailing list