I think I wrote the text you’re quoting, so I’ll attempt an answer. In 
connection templates, ‘me’ is not unique. I can’t remember exactly how this 
works, but ‘me’ either refers to the component instance of the end of the 
template you’re instantiating or to the connection itself. If you want to try 
and unravel the relevant code, it’s around lines 278-300 of the main function 
[0].

The ‘stash’ and ‘pop’ functions were implemented to expose some internals to 
advanced CAmkES users who wanted functionality beyond the template API. They 
were not widely used, and many of these users sidestepped them and used the 
even more questionable ‘_stash’ and ‘_pop’ variants. I would not be surprised 
if they do not work the way the documentation describes, and they should mostly 
be considered foot guns at this point.

This is based on my ~5 year old memories so may be inaccurate or out of date. 
HTH

  [0]: 
https://github.com/seL4/camkes-tool/blob/master/camkes/runner/__main__.py#L278-L300

> On Mar 20, 2020, at 22:56, yadong.li <yadong...@horizon.ai> wrote:
> 
> Hi,
>        Recently, I try to learning about CMAKES
>        I have some question about stash and pop described as followes:
> 
>        “
> Passing Information Between Templates
> You often wish to do this with two related templates. For example, in the 
> templates that form each side of a connection you often wish to talk about 
> the same object on both sides. None of the templates currently call the 
> low-level     helper functions that enable this directly, but if you do want 
> to invoke them, they are stash and pop. stash lets you save a Python object 
> under a given key name and pop retrieves a previously saved Python object by 
> key. Note that these are only usable for passing objects between templates 
> that share related me references.”
> What is the meaning of  “between templates that share related me references.” 
> ?
> It is my understanding that template will be instantiated, every instance has 
> its own ‘me’ , for example below:
> connection seL4VirtQueues ping_virtq_conn1(to ping_vqinit1.init, from 
> ping_client.recv, from vm0.send1);
> To parse the AST, seL4VirtQueues-from.template.c will be called twice for 
> ping_client.recv and vm0.send1, I think they should have their own ‘me’
> where can I found the code to share related ‘me’ between the instance.
>                                                                               
>              Thanks for your answer
> _______________________________________________
> Devel mailing list
> Devel@sel4.systems
> https://sel4.systems/lists/listinfo/devel


_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to