Are there any special pre-requsites to using the chdir system call effectively in RTEMS?
I've got a function which unpacks a tarred up filesystem by chdir into a chosen directory, unpacking the filesystem, and then chdir() back to "/". If I call this function from the RTEMS shell, everything behaves normally, and the files appear relative to the path I cd'ed into. However, if I call it directly from Init(), it acts strangely. The chdir() call reports success, and subsequent call to getcwd() returns the directory that I chdir'ed into. However, the tarball gets unpacked relative to the filesystem root. chdir("/mnt/somepath") appears to succeed. A subsequent call to getcwd() also returns the directory cd'ed into. However, the subsequent unpacking of the tarball does so into the root. I did some digging into the shell initialization code, and saw that `rtems_shell_init_user_env()` is constructing a private user environment for the shell thread. In the process of doing so, it makes a suspicious system call: chroot("/"). Sure enough, adding chroot("/") early enough in my POSIX_Init() allows subsequent chdir operations to have the right side-effects on creat() and open() calls. What's up with that? Is it intentional? Or is the shell's chroot() covering up some deficiency in the way that the `rtems_global_user_env` is getting initialized when the IMFS rootfs is set up? Thanks, -- Jonathan Brandmeyer _______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users