env() function at different places returns different addresses

jaeyong yoo y.jaeyong at ...9...
Sat Nov 17 07:13:10 CET 2012


Hello, Genode

I'm trying to understand how env() and env()->parent() work from the source
code.
First, I find the body of env function located at:
    genode/base/src/base/env/env.cc

and looks like this:
    namespace Genode {

        /*
         * Request pointer to static environment of the Genode application
         */
        Env *env()
        {
            /*
             * By placing the environment as static object here, we ensure
that its
             * constructor gets called when this function is used the first
time.
             */
            static Genode::Platform_env _env;

            return &_env;
        }
    }

env() function looks like, at namespace Genode, it returns the pointer of
singleton object _env (static Genode::Platform_env _env).
But, when I call env() at different places, it returns different addresses.

For instance,
   - at genode/base/src/core/main.cc
   - at dde_linux/src/drivers/usb/nic/nic.cc,
env() function returns different addresses like the following
   - at genode/base/src/core/main.cc, it returns 801f01a0
   - at dde_linux/src/drivers/usb/nic/nic.cc, it returns 10b716c.

For me, it is very strange, because both functions returns the address of a
singleton object _env.
I think I miss some points and appreciate if you fill the gap.


And, one more thing: I was trying to print some debug message at Env *env()
function like the following.

        Env *env()
        {
            /*
             * By placing the environment as static object here, we ensure
that its
             * constructor gets called when this function is used the first
time.
             */
            static Genode::Platform_env _env;
            PDBG("Genode::env() function called");   // my debug message

            return &_env;
        }

And, when I run the genode, it always halt at core and child init is not
running.
Do you have any clues?

Thanks always,
Jaeyong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20121117/48fc19bb/attachment.html>


More information about the users mailing list