> For example, I can run "ls /windows", "ls /other_directory" instead of using
> ls /c/windows or ls /c/other_directory.
> The only way is to  do it is to put msys-1.0.dll and other binary under
> c:\bin.
> it requires me to put all msys related directory such as etc under c:\etc

That's what /etc/fstab is for.  You can map the windows directories to a
posix path using /etc/fstab.  If you want that posix path to
auto-complete you will need to create a stub directory for it in /
either by creating the stub before adding it to /etc/fstab or afterward
via mkdir /c/mingw/msys/1.0/foo where foo is related to posix path /foo
that maps to windows directory c:\somewhere\foo.  I suggest reading
/doc/msys/* to get a few hints.  Also, be wary of directories and files
with space in the name.  Use the 8.3 format for that name as given by
cmd //c dir //x.

I have read the doc. 
There are 50 directories under my c:\,  and I may add or remove directories under c:\ any time.
very inconvenient to keep the mapping in /etc/fstab.

why not give the user the option to change / to mount to c:\ instead of fixed parent directory of msys-1.0.dll? 
the user can have the option to mount /usr and /bin as well if they change the mounting point of /.
however, we can still keep /usr pointing to the directory where msys-1.0.dll exists,

I have a quick check of source code and it looks that path.cc is related, right?