History log of /seL4-camkes-master/projects/camkes-tool/camkes/runner/Context.py
Revision Date Author Comments
# 98a4fdf8 26-Aug-2020 Damon Lee <Damon.Lee@data61.csiro.au>

runner,templates: Fix generate_seL4_SignalRecv

This function was fixed before to resolve the issue where
seL4_SignalRecv did not exist as a seL4 kernel syscall. The result of
that fix was to generate separate seL4_Signal and seL4_Recv calls. This
altered the macro so that the macro also assigns the result of seL4_Recv
to a variable. However, the macro assumes that the variable that
contains the message info to be sent is the same as the variable that
will store the result of the seL4_Recv/seL4NBSendRecv call.

This isn't a good assumption and so this commit adds in an extra
parameter to the macro for the result variable and also fixes the
missing result assignment for the realtime case. Also update the macro
usage in rpc-connector.c.


# f32b49c7 03-Aug-2020 Damon Lee <Damon.Lee@data61.csiro.au>

runner: Fix generate_seL4SignalRecv

seL4SignalRecv does not exist in the normal kernel, this commit splits
the two calls so that the compilable code can be generated.


# 9cc16f20 19-Jul-2020 Oliver Scott <Oliver.Scott@data61.csiro.au>

trivial: refactor context

A number of checks were being performed
differently. Make this pattern the same
for consistency.


# 4b076c4c 10-Feb-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

seL4HardwareInterrupt: Add 'arm' irq type support

This allows IRQs on Arm to have the trigger mode and target core
configured. By default Arm IRQs are level triggered and delivered on the
first target core.

In the following configuration IRQ 42 is configured to be edge
triggered:
${instance_name}.${interface_name}_irq_type = "arm";
${instance_name}.${interface_name}_irq_trigger = "edge";
${instance_name}.${interface_name}_irq_number = 42;


# a45bbc70 25-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python3: Replace reduce with functools.reduce

This runction was removed from builtins in python3.


# 89903990 24-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Update camkes-tool to python3

- Fix minor incompatibilities
- Update scripts to call python3 instead of python2


# 21becfa9 16-Jul-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

ast,runner: Remove template field from connector

This allows us to more easily extend the mechanisms for constructing
components and connectors.


# db8c49de 04-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Context.py: Shared memory should default to cached

This was the historical behavior that regressed in an earlier refactor.


# 5055bbb0 09-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Update FrameFill declarations to match new api

FrameFills in the capDL spec have been updated to always require
destination_offset and size parameters before the FrameFill subtype
specific parameters.


# 6c191556 07-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

register_shared_mem: Align symbol to page not size

Symbols that are multiples of pages that aren't power-of-2 sized are
still valid but were being rejected.


# 471a82c5 01-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

register_shared_variable: Move mapping caps

Allow a component to have the caps to a shared variable mapping moved
into its own cspace. This will allow it to perform cache maintenance
operations if necessary.


# c6bead94 14-Aug-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

templates: allow adding to integrity policy

This adds a function `add_policy_extra` to the template context,
allowing templates to add extra integrity policy edges in an ad-hoc
fashion. This is used by the `global-endpoint` template.

Implementation note: we extend the capDL `AllocatorState` to store
this extra policy state. However, the new state class is defined in
the capDL library to work around a limitation of the `pickle` module.


# 137dd095 04-Mar-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

templates: cdl-refine: support IRQs and ASIDs

Part of solving VER-986 i.e. proof support for ARM VMs. This adds basic
support for `vm_minimal`, with a single VM and ASID pool.

Many hacks here. For example, the proof currently assumes that there is
at most one ASID pool. This should be generalised when the kernel
supports multiple VMs, as each one will require its own ASID space.


# ebd737aa 05-Aug-2019 Anna Lyons <anna@gh.st>

trivial: fix style


# 0f663b06 05-Aug-2019 Anna Lyons <anna@gh.st>

camkes: avoid running renderer in config stage

Avoid running the renderer in the configuration stage (when
camkes_gen.cmake is created) as object-sizes are not defined at this
point.


# cfca081e 27-May-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

templates: support hierarchical identifiers in Isabelle output

This mangles hierarchical identifiers e.g. `foo.bar` into valid
Isabelle identifiers. This relies on capDL-tool performing a similar
mangling (which is currently hardcoded) for the Isabelle capDL spec.

We also prefix Isabelle identifiers for different ADL types e.g.
procedures, components, etc. This is to reduce name conflicts within
the ADL names, as well as conflicts with HOL or l4v builtins.

Implements VER-1012.


# bc8c8011 16-Jun-2019 Damon Lee <Damon.Lee@data61.csiro.au>

trivial: Style changed files


# 82d279a1 16-Jun-2019 Damon Lee <Damon.Lee@data61.csiro.au>

runner: Add 'size' arg to register_fill_frames

Previously, register_fill_frames() was only able to register a single 4K
page as a 'fill frame'. By adding a size argument,
register_fill_frames() is now able create multiple fill frames for a
'fill frame' block.


# 06ff3c6e 15-May-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

context: Pass capdl Arch object to calc_frame_size

Calling arch.capdl_name() was incorrect as some architectures have
the same capdl name but different page table structures. (aarch32 +
arm_hyp -> arm11, riscv32 + riscv64 -> riscv)


# 3d3be3d0 03-Mar-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

camkes: Remove Perspectives

Perspectives and NameMangling.py was mostly needed to enable the
Filters. As Filters are no longer used, Perspectives should be able to
be safely removed. One point of Perspectives were for encoding policy of
how configuration options were named for certain interfaces, but as new
options are added and new templates are added it seems to have been
easier to encode the naming policy directly in the template where the
config value is obtained.


# 249aa17e 14-Feb-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

camkes: Remove version() function

This removes the functionality that hashes the camkes sources.


# 14686f4d 14-Feb-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

camkes_version: Remove camkes_release symbol

This symbol is statically initialised to a hash of all camkes sources.
It is being removed as it no longer refers to the actual camkes version,
and there isn't a strong need to read the version from every component.


# 4ce8855f 09-Dec-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

runner: add support for grantreply

grantreply is a new capability access right in seL4


# 09ba754f 23-Oct-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

runner: simplify default args


# 1d5ecd77 22-Oct-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

runner: simplify integrity label handling

This removes set_integrity_label and merges it into alloc, alloc_obj.

We also change register_shared_variable so that it now allocates frames
with a sensible default label. This allows us to drop the manually set
labels from the built-in shared mem templates.


# fc64534c 21-Oct-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

templates: specify connector label when allocating shared memory

This modifies register_shared_variable, etc. to accept a label argument
and updates shared memory templates to pass in the connector label.

As shared frame objects are now allocated under the correct labels,
we no longer need to fix them in object_label_mapping prior to the
integrity verification.


# c23fe547 14-Oct-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

runner: pre-compile regex in object_label_mapping


# c5dd593c 11-Oct-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

Allow templates to manually set integrity labels for objects

This is needed by some connector templates because they allocate
private objects for the parent component. We need to inform the
capDL verification template that these objects are owned by the
component's label.

Fixed for seL4Notification's internal lock objects; other connectors
will undoubtedly also need updating.


# c7fe0da0 28-Sep-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

extract integrity labels for objects

The object allocator tracks “labels” (corresponding to names of
components and connectors) for each object. While this functionality
was neglected for most CAmkES applications, the labels are necessary
if we want to define an integrity policy for the component system.


# 25ce3344 10-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Remove remaining references to shmem


# e7aa591d 10-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Modify shared regions to use AddrSpaceAllocator

This updates register_shared_variable to use AddrSpaceAllocator instead
of shmem. The relevant filter functions have also been removed.


# 6e709e4b 09-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Use AddressSpaceAllocator for dma_pools

This removes the need for the replace_dma_frames filter. We also remove
the symbol rename in the objcopy phase as the symbol is private and
won't collide with anything else. This also means
we can remove the dma_pool_symbol entry from the filter NameMangling
list.


# 123f9b91 09-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Use AddressSpaceAllocator for creating guard pages

Stacks and ipc buffers have guard pages that were implemented by running
a filter over the address space objects and deleting the frame before
and after the address regions. This way uses the AddressSpaceAllocator
to explicitly create the guarded sections when the C symbols are
defined. This remove the need for the more complex filter.


# 87e61d40 09-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

runner: Add Cap object to context

Templates can get access to the Cap object via alloc_cap, but they need
to be able to instantiate Cap directly for creating Caps that don't end
up in a CNode, IE for threads cap slots.


# 1f44d4ac 06-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

runner: Replace fill_frames filter with addr_space

End result in the capdl file should be the same


# 74845ff3 05-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

camkes: Remove kept_symbols from RenderState

This dictionary is unnecessary and forces the generated cmake file to be
run after all other templates.

Keep symbol results in -Wl,-u symbol being passed to the linker, which
is equivalent to attribute((used)) that USED expands to. Note: This
assumes that every generated file is passed to the compiler directly and
not within a library. In this case it may be required for -u to be used.


# 3a993a28 05-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

runner: Use RenderState to capture persistent data


# 5058a1b0 03-Oct-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

camkes/runner: use new ObjectType and ObjectRights from capdl


# cbfaac70 30-Aug-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

restore 'outfile' context as 'outfile_name'

Isabelle theory templates need to know the output filename. Hence, we
provide the filename as 'outfile_name' when running non-code templates.


# 34fd8d11 09-Nov-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

register_shared_variable takes a cacheability option

Adds an option to register_shared_variable to, if you are also setting a `paddr`,
set the cacheability of the mapping.


# 8b2ec3e6 20-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix licenses


# bc37bde2 03-May-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Ability to get sched_ctrl caps from simple

sched_ctrl caps should be added to a configuration
as component.sched_ctrl = core, where core determines which
CPU core the sched_ctrl cap is for.


# 38000f16 18-Apr-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

Add interface for adding fill information to symbols

capDL frame objects can have an optional 'fill' attribute that instructs the loader
with what to initialize the frame with when loading. This change adds an interface
for adding such information to an existing page sized/aligned symbol


# 12870993 29-Mar-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Fix incorrect variable name


# 63153a12 05-Mar-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Add interface for specifying symbols to keep


# 5f025fda 13-Feb-2017 Kofi Doku Atuah <kofidoku.atuah@data61.csiro.au>

CAMKES-560: Add support for new-rt APIs to next

Replace instances of seL4_Recv, seL4_SignalRecv, seL4_Send, with
RT-compliant versions that operate on reply object caps.


# aa5efe12 13-Nov-2016 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Added `lookup_template` to template context

This allows templates to determine the existance of other templates
as they are rendered. This is required for templates to determine
whether connectors have header file templates.


# 20edf65e 01-Nov-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

ARM SMMU support in simple template

Adds support for getting ARM IOSpace caps through the simple interface


# 648bd2b2 04-Oct-2016 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Shared variables can have preallocated frames

This allows templates to allocate frame objects (using `alloc` and
`alloc_obj`), and associate them with a shared variable through an
additional argument to `register_shared_variable`. A shared variable's
associated frames are used to back the shared variable, rather than
allocating new frames when collapsing shared variables. Only one
instance of a given shared variable may declare associated frames.


# 51cae2a4 04-Oct-2016 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Add math and enumerate to template context


# 0bcf97d5 26-Jun-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Expose CAmkES version to the template context.


# e3c079f9 06-Jun-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Replace usage of DeterministicSet with OrderedSet.

This commit cherry-picks b784d24d6447e1c97ffe30e600c91c63cba3609d from
ssh://github.inside.nicta.com.au/mfernandez/project.


# a355db58 01-Jun-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Primitive support for realtime seL4

This allows camkes systems to be built to run on realtime seL4. If the
realtime kernel is used, scheduling contexts are created for each
thread. This also adds options to the runner for specifying default
scheduling context field values.


# c5ff92f9 01-Jun-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Enforce shared memory constraints in register_shared_variable.

This commit cherry-picks 9d764b09005a4647fdbc6ed6ab8a44fe5fba32f5 from
ssh://github.inside.nicta.com.au/mfernandez/project.


# 79c93b95 25-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Omitting SCs from the capdl spec if rt not enabled


# 03881745 25-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Removed redundant "None" from template context


# d6130752 24-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Removed unused alloc_entity from template context


# 5e60da40 24-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Ensuring argument to parse_bool is a string


# f40fc222 23-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Added parse_bool function to template context


# 1227d958 23-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Export functools to the template context.

This commit cherry-picks dd60a93827d5bbe9252f1eb2020171a6eb817c93 from
ssh://github.inside.nicta.com.au/mfernandez/project.


# 0081f6be 15-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Use configuration to find sc in templates

Some templates need to know the value of the sc attribute of an instance
or interface. A custom function was added to the template context for
looking up a given entity's sc. This change uses the configuration
settings, and camkes name mangling to find the sc instead, removing the
need for these custom lookup functions.


# af78f195 18-May-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Update import usage within the runner for Python changes.

The aim of this commit is compatibility with Python 2.7.11. These changes
effectively make the runner a first class module (relative imports used
internally; __main__.py importing sources as belonging to a module). The intent
is to remain backwards compatible down to Python 2.6 and forwards to Python
3.5.


# aa311713 07-Feb-2016 Stephen Sherratt <stephen.sherratt@nicta.com.au>

[Fix] arch variable in templates set from --arguments option


# b923ca7b 16-Dec-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Find and replace seL4_AsyncEndpointObject with seL4_NotificationObject.


# b36cd8c9 14-Dec-2015 Ihor Kuz <ihor.kuz@nicta.com.au>

Add missing Derivers

JIRA CAMKES-429


# 9631d18c 25-Nov-2015 Ihor Kuz <ihor.kuz@nicta.com.au>

Initialise passive threads from a component's control thread.

JIRA CAMKES-429


# ba5b6e2d 25-Nov-2015 Ihor Kuz <ihor.kuz@nicta.com.au>

Added initial support for scheduling contexts.

This assigns an SC to every thread, unless the user requests not to.
It also adds extra priority config settings for threads.

JIRA CAMKES-429


# bacfebce 27-Oct-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Refactored parser init commit.


# ac0e750a 14-Oct-2015 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Replaced AsyncEndpoint with Notification. Applied "s/AsyncEndpoint/Notification/g" and "s/aep/notification/g" to each file.


# 1eba989f 13-Jul-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Expose 'itertools' to the template context.


# 4eeb9e45 18-Jun-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove `assert_current_goal`.

This helper function is no longer used in any of the Isabelle templates. Its
functionality has largely been superseded by the `subgoal by` support in
Isabelle 2015.


# ae16e1df 18-Jun-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Export all Python builtins to the templates, instead of one-by-one.

This commit drops the manual export of certain builtins to the template context
and just exports all Python builtins. We don't lose any security here, because
the templates have full access to the runner through other mechanisms anyway.
This commit also stops constructing `namedtuple`s to fake modules and just
exports the modules themselves. This should have no noticeable effect on
functionality unless your template is shadowing a builtin.


# 6e2f6a8c 18-Jun-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove deprecated Isabelle helpers.

This commit removes some utility functions that were previously used in proof
templates. These have outlived their usefulness and have been replaced with
more flexible mechanisms.


# a8cf449e 03-Jun-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: export `max` and `min`.


# 2cfeb990 31-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Stop hard-coding 32-bit platform assumptions in template context's `sizeof`.


# feb8ea6f 31-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove `__WORDSIZE` from the template context and receive it via build system.


# a61f216f 31-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove `__SIZEOF_POINTER__`.

The only instance where this was being used was to check whether an argument
fitted in a single message register or two message registers. The width of a
message register is `__WORDSIZE` bits, not `__SIZEOF_POINTER__` bytes.


# 748fe2df 20-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Export `tuple`.


# c8d4c6d9 20-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Export `any` and `all`.

These can be useful when making type assertions.


# 805680d6 20-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Stop exporting `splitext`.

** BREAKING CHANGE **

This was polluting the template namespace and is unnecessary when it is
accessible via the (already exported) `os.path`.


# 34836d1f 20-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Export `basestring`.


# a6cda794 19-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: stop exporting `math.pow`.

As far as I can see this is not in use.


# a77849dd 14-May-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Expose 'capdl' module to templates.


# fcb1ed1f 20-Apr-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Use a defaultdict to simplify shared memory registration.


# bfbfc801 20-Apr-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Fix: guard shared variable registration with CSpace, instead of entity.

It was fine to guard shared variable registration with either for the
per-component template, but in connection templates the "entity" in the
connection itself. The intention was actually to guard this registration with
something that corresponded to the address space of the local name. Using the
CSpace isn't perfect, but it's the best we can do for now.

JIRA CAMKES-323


# 3c5a181a 19-Apr-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove `Joiner`.

This can now be replaced by the Jinja built-in `joiner`.

Closes JIRA CAMKES-357


# ab6d2c6f 16-Apr-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Expose printing functions for template debugging.

Honestly, I thought these were already visible.


# cf49b2fc 16-Apr-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Remove functionality for `show` on RPC parameters.

It did not really make sense to call this function from a template context,
because it displayed parameters in a specific way that was only sometimes
relevant to the context you were in. It was easy to invoke this function in an
invalid context and be mystified as to why you ended up with malformed C.


# 2eab7bca 31-Mar-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

Pass the entire assembly to the template context and allow templates to look through both the configuration and the composition of the assembly


# 519dc5c8 11-Mar-2015 Siwei Zhuang <siwei.zhuang@nicta.com.au>

Fix typo(module "Allocation" does not exist in the python-capdl).


# 90704994 17-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Runner: support interoperation with either branch of python-capdl.


# 7c0921ec 02-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Expose 'bool'.


# cf1eb7e1 25-Jan-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Context: Expose 'list' type.


# 6226a9ed 19-Jan-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Optimisation: Don't deepcopy AST entities when passing them to templates.

As of 1e50795a727c4a473ab31a0c452e8ca9a515585e (and prior, really) we're
trusting user templates and filtering code^1. This commit goes further along
this line, passing them a modifiable version of the current AST entity, though
note that they are expected not to modify it. Empirically, this shaves ~25
seconds off a non-cached build of the VM project.

1. Realistically, it never made sense not to trust these pieces of code as they
can cause all sorts of chaos anyway, but these copies guarded against buggy,
rather than malicious code.


# fdb28751 07-Dec-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Export deepcopy.


# cc5aa117 07-Dec-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Export 'textwrap'


# 91fbedfd 11-Nov-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Add a mechanism to write C-style include guards.

Jinja provides two mechanisms for including content from another template file,
`import` and `include`. Import, by default, does not include your current
context and imports the target as a module. The result is that any raw text in
the file is not directly included. Include includes your current context, but
does not let the included file modify the context.

For AutoCorres proofs, it is desirable to abstract some general proofs into
templates that we include with a C-like #include mechanism. However the design
described above makes neither suitable as-is for this purpose. This commit adds
a global set that can be used to track the included files and be modified in
included contexts using `do` statements.

Whereas a C header guard would look like:
#ifndef _MY_FILE_H_
#define _MY_FILE_H_
...
#endif
One of these Jinja guards could be written as:
/*- if 'my_file.h' not in included -*/
/*- do included.add('my_file.h') -*/
...
/*- endif -*/


# 1fa529a8 26-Nov-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Expose `chr` and `ord`.

Needed in order to work around some idiocy in Isabelle.

Conflicts:
camkes/runner/Context.py


# 7b655c06 12-Nov-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Template context: Add a function for asserting the current Isabelle subgoal.


# 40e80e76 28-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Expose the camkes.ast module to template authors.

This allows the template context to perform `isinstance` testing on variables
against AST types.


# 2187a516 22-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Move Jinja macros into Python.

Jinja macros have unexpected, and often unpleasant, behaviour. A non-exhaustive
list of issues with them is:
- They are not first class Python functions so cannot be passed within the
template context to, e.g., `map`;
- They can mask and inadvertently overwrite your local variables;
- Certain types of references have unexpected expansions within the context of
a macro;
- Calling a macro within a macro is dangerous; and
- You cannot call certain Python functions from within a macro.

This commit transliterates the existing macros into Python, attempting to
preserve all current functionality. This has involved essentially inverting
their implementation such that they become C hosted within Python, rather than
Python hosted within C. The macros are now unconditionally available to all
templates (see Context.py).

This change is intended to be transparent to template authors and CAmkES users.

Conflicts:
camkes/templates/echronos/eChronosAsynch-from.template.c
camkes/templates/echronos/eChronosAsynch-to.template.c
camkes/templates/linux/component.template.h
camkes/templates/linux/linuxMQ-from.template.c
camkes/templates/linux/linuxMQ-to.template.c
camkes/templates/linux/linuxMQEmpty-from.template.c
camkes/templates/linux/linuxMQEmpty-to.template.c
camkes/templates/linux/linuxMmap-from.template.c
camkes/templates/linux/linuxMmap-to.template.c
camkes/templates/macros.jinja


# 2fed8fbb 06-Nov-2014 Adrian Danis <Adrian.Danis@nicta.com.au>

Improve the simple template with variable sized mmio regions, irq capabilities and asid pools


# cc64bb50 21-Jul-2014 TrustworthySystems <gatekeeper@sel4.systems>

Release snapshot