History log of /seL4-camkes-master/projects/capdl/python-capdl-tool/capdl/Object.py
Revision Date Author Comments
# 53f39c24 21-May-2020 Oliver Scott <Oliver.Scott@data61.csiro.au>

python-capdl-tool: Add smmu v2 support

Add support for generating arm streamid and
contextbank specs.

Signed-off-by: Oliver Scott <Oliver.Scott@data61.csiro.au>


# 3aa810cb 17-Jun-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Make python style compliant

Brings the python files in this repo into compliance with the
checks in `sel4_tools`.


# 9f1ba467 17-Jun-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Convert to SPDX license tags

This includes marking all documentation files CC-BY-SA-4.0.


# 6545eaa9 21-Apr-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Add resume field to TCB capDL object

This field is used to indicate whether the TCB should remain suspended
or resumed instead.


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

Add support for Arm GetTrigger and GetTriggerCore

There are additional IRQ control invocations on Arm for specifying the
trigger mode (edge or level) and for specifying the target core. This
adds support to the capDL language to allow specifying IRQs of this
type. Additionally this adds support to the capdl-loader-app for
creating these IRQ handlers and also support in the python-capdl-tool
library for generating Arm specs that have IRQs specifying trigger or
target core attributes.


# 6aee2c3d 04-Feb-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python-capdl-tool: Add get_libsel4_constant

This allows for direct querying out of the object_sizes dictionary that
is registered for calculating object sizes.


# b316756f 23-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Remove elf attribute from TCB object

This attribute was used by a loader to infer which ELF file to load
into the thread's address space. It is no longer used as the
functionality for loading an ELF is implemented by a fill frames
mechanism for specifying which sections of a frame contains subsections
of an ELF file. This also makes it possible to load specs with sections
of a thread's address space constructed from multiple ELF files. This
also removes a potential ambiguity where two TCBs with the same VSpace
cap refer to different ELFs.


# 29d57d03 09-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

Add support for multiple FrameFills

A FrameFill fills a section of a frame with data. In anticipation of
more variants of FrameFills becoming available there will be a need for
describing multiple FrameFills for a single frame this would be for
either multiple non-overlapping sections or potentially layering of
overlapping sections.


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

python-capdl-tool: fix quirk in get_object_size

Don't return 1 when the value returned is 0.


# fc2cbe61 29-Mar-2019 Chris Guikema <chris.guikema@dornerworks.com>

capdl: support 40-bit PA size on aarch64-hyp

Update vspace structure when starting at level 1

Co-authored-by: Anna Lyons <anna@gh.st>


# 830bff5c 09-Jul-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

python-capdl-tool, capdl_linker: allocate slots for ASID pools

This adds an ASIDTableAllocator to auto-allocate asid_high numbers
for capDL specs, therefore making the ASID table mappings explicit
in our generated specifications.


# 3c3963cf 09-Jul-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

capDL-tool: implement asid_high attribute for ASID pools

This removes the `asid` attribute from ASID pool caps, and moves it
to an `asid_high` attribute on ASID pool objects.


# fa63beff 25-Jun-2019 Anna Lyons <anna@gh.st>

trivial: style changed files


# dc081bd7 25-Jun-2019 Anna Lyons <anna@gh.st>

python-capdl-tool: fix errors reported by pylint3

Fix errors reported by pylint3 --errors-only on .py files in
python-capdl-tool.


# ef2fe742 13-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: add untyped allocator

This change adds an offline allocator for calculating untyped
derivations, which will be used in future to specify exact derivations
from boot info untyped objects. This allows the allocation logic to be
removed from the loader, this simplifying the loader model for
verificaion while allowing for policy freedom in terms of allocation.

The initial allocator implementation is a best-fit allocator.


# f57c5270 04-Jun-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

cdl_utils: get untyped_gen to run


# 4216ad0a 27-Mar-2019 Yu Hou <Yu.Hou@data61.csiro.au>

capdl: Handle passing DomainCap and ASIDControlCap

add support for passing DomainCap and ASIDControlCap to capdl-loader-app,
capdl-tool and python-capdl-tool


# 7c85c7f8 02-Mar-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python-capdl-tool: Update cap guards automatically

Whenever finalise_size is called, we want to update all the Caps that are
registered referring to this CNode to have their guards updated.


# 043ec4b2 24-Feb-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python-capdl-tool: Return None if no object_sizes

Sometimes this library is used in a context that doesn't require
object_sizes to be known. Returning None sets the object's size to None
which may be fine if the objects size is never needed.


# 3d6ddfcd 13-Feb-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

python-capdl-tool: better sorting and index type-checking for ContainerObject


# 36be506a 14-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

Revert "python-capdl-tool: add untyped allocator"

This reverts commit 1b369bbe54cb57a2169e2fe659936844e4d23990.


# 1b369bbe 13-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: add untyped allocator

TODO context


# fb0e8d35 13-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: make Untyped objects sortable


# 61e85e48 13-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: correct exception type

An invalid key is a KeyError not a ValueError.


# d2aa66b8 06-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: trivial fix whitespace


# c325b91f 06-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: use get_object_size for frame sizes

This change removes the hardcoded frame sizes from util.c and uses
get_object_size to query the sizes of frames.


# cb2256bb 12-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: add object sizes

This change allows a dictionary of object sizes to be registered with
the python capdl tool (via Object.register_object_sizes) which can then
be queried to find the size of non-fixed sized object types.

The dictionary provided should define sizes for all fixed-sized objects
in the Object.ObjectType enum that are used by the spec being processed
with the library.


# e04a3575 06-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: remove IA32 from non-ia32 only constants

seL4_IA32_VCPU -> seL4_VCPU
seL4_IA32_IOPageTable -> seL4_IOPageTable


# 198ac825 05-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: reduce duplicated object constants

This change removes duplicated object types for types that are shared
across architecutes. For example, rather than have both
seL4_IA32_PageTableObject and seL4_ARM_PageTableObject, just use
seL4_PageTableObject.

This reduces code complexity.


# baf0f11d 06-Feb-2019 Japheth Lim <Japheth.Lim@data61.csiro.au>

Object.py: clean up hexadecimal formatting


# 450eb90c 05-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: use aenum package for enums

- use auto() to generate enum numbers
- use the Flag class for values that need to be flags

Both these changes make the enums in Object.py far more maintainable
and amenable to changes.


# 04919f74 04-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: mark ObjectType enum as unique

Prevent accidental collisions


# 55cb1121 04-Feb-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

python-capdl-tool: fix whitespace in object.py

Abide by PEP-3


# aad29b63 05-Dec-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

Add new GrantReply right to capDL tools


# 0d2ce4a5 04-Nov-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python-capdl-tool: Add aarch64 support


# 9e4652b8 06-Oct-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

python-capdl: Auto update guard_size on CNode caps

If possible update the guard_size attribute on caps to CNodes when the
CNode size is changed from 'auto' to an actual size


# 1ce8a69c 09-Oct-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

capdl: allow IRQControl to be in loaded cnode

This commit allows the IRQControl capability to be loaded by the capdl
loader into a single cspace (you cannot create copies of this cap, so
trying to put it into two cspaces will fail).

There are no changes to the Haskell, which already supports irq_control.

Changes to python:

- change ObjectType.seL4_IRQControl to ObjectType.IRQHandler. This looks
like an error in the existing code, as the constant was always
interpreted as an IRQHandler not the IRQControl capability.
- add a new ObjectType.seL4_IRQControl
- add a new Object.IRQControl class which resolves to "irq_control".
This matches how other control capabilities are treated in the python,
although they do not actually resolve to Objects (just caps).

Changes to C:

- add a new capdl_to_irq_ctrl data structure which mirrors the
sched_ctrl data structure
- when irq_control is specified in a cnode, move it to that slot


# 1ddbb545 03-Oct-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

python: create and use ObjectRights enum

Add the ObjectRights enum which contains all seL4 rights constants, eg
seL4_CapRights etc.
This allows for easy iteration of all object rights and reduces
import complexity.


# 10e2666c 03-Oct-2018 Anna Lyons <Anna.Lyons@data61.csiro.au>

python: create and use ObjectType enum

Move the object type (seL4_.*Object) constants into a new enum, ObjectType.
This allows the types to be iterable and reduces the number of imports,
resulting in less boilerplate.


# 5737a1c5 14-May-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

remove crit and max_crit fields

These fields have never been used.


# 5f4c257a 09-May-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

python-capdl-tool: calculate size for empty CNodes


# 2609e35e 27-Apr-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

python-capdl-tool: refactor TCB printer


# 46cd2575 27-Apr-2018 Japheth Lim <Japheth.Lim@data61.csiro.au>

python-capdl-tool: safer encoding of objects with no fixed paddrs

Encoding it as 0 is inelegant and also makes the camkes-tool's new
object sorter more complicated. This commit uses None instead.


# e1ad3289 22-Apr-2018 Adrian Danis <Adrian.Danis@data61.csiro.au>

Update IOPort model

Changes the model of the IOPorts in the capdl specification and the surrounding tools
to reflect a change in the kernel model. There is now a single IO port control capability
that can produce non overlapping IO port caps. Due to the non overlapping requirement the
capdl model treats the 'object' as an IO port cap issued from the control capability and
this is then duplicated at the cap level to produce all cap references.


# 142df05b 13-Jul-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix whitespace

- Remove trialing whitespace
- Remove duplicate blank lines
- Remove blank lines at end of file


# d5ae4e67 04-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix licenses


# 35c121f9 29-May-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

capDL: add bits and defaults to scheduling contexts

- add bits parameter with default value
- provide defaults for period/budget


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

Support loading sched_control caps.

This change allows sched_control caps to be placed into CNodes and
updates the capdl-loader-app to copy them.


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

python-capdl-tool: drop Object from seL4_SchedControl

SchedControl is just a cap, not an object


# 33d5618b 27-Apr-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Using reliable_hex to make python more portable


# f8d52769 01-Mar-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

python-capdl: Add 'fill' attribute to allocated frame objects

'fill' attribute is blindly passed into the final capDL spec


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

CAMKES-560: Add support for new-rt's Reply kernel object.


# 7c4acb17 21-Feb-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Replace tabs with spaces


# 8239c29c 09-Jan-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

python-capdl-tool: Add message to assert


# 4936eb82 09-Jan-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

python-capdl-tool: Slot indices may be longs

Previously they were required to be python ints. This resulted in an
error when building on 32 bit machines, as indices could be longs
instead. We now ensure that they are a type in six.integer_types.


# 526e4af3 03-Jan-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Add kwargs argument to Frame constructor


# 002daba9 17-Nov-2016 Gamlath, Kalana (Data61, Kensington UNSW) <Kalana.Gamlath@data61.csiro.au>

Modified set_fault_ep_slot to allow setting fault eps in the RT kernel. Also changed allocator to allow fault eps to be badged in the RT kernel.


# 33737a5f 15-Nov-2016 Kofi Doku Atuah <kofidoku.atuah@data61.csiro.au>

Add multicore "affinity" attribute to CDL

* capDL loader support for non-RT kernel,
via seL4_TCB_SetAffinity


# 3553212e 01-Nov-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

Add support for the ARM variant of IO spaces


# e44f9234 17-Apr-2016 Adrian Danis <Adrian.Danis@nicta.com.au>

python-capdl: Define x86_64 types


# 6308b310 12-May-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

Add MSI and IOAPIC interrupt support


# 756935a6 02-May-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

python-capdl-tool: Replaced sc flags with sc data


# dfd25bb2 28-Apr-2016 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

python-capdl-tool: Support for schedule contexts


# ed81a9c6 12-Apr-2016 Adrian Danis <Adrian.Danis@nicta.com.au>

python-capdl-tool: Move seL4 type definitions to Object.py

Moving the definitions here makes more logical sense and is neccessary
to prevent a circular build dependency in future commits


# a69ed53c 13-Apr-2016 Kalana Gamlath <Kalana.Gamlath@nicta.com.au>

Added method to allow templates to register fault eps on TCBs.


# 768db227 30-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Omit TCBs' fault_ep_slot when not present.

This has no effect on systems booted by the CapDL initialiser, as 0 is the
default fault_ep_slot. The purpose of this change is that, when set, the
fault_ep_slot is translated into the Isabelle representation of CapDL as
setting the cdl_tcb_has_fault member of the TCB's record. This causes flow on
problems when trying to prove correspondence to the output of the CAmkES
generator function.

This cherry picks 8b2fcbe68bca83839b04442fbe29543ffa3fe5c6 from
GINCA:mfernandez/project.


# cc850776 30-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Use `six`'s wrappers for string types.

This commit facilitates interoperability between Python 2 and Python 3. In
Python 3, strings are unicode and there no longer exists a distinct `unicode`
type. This commit also indirectly fixes an issue where unicode was not accepted
by certain functions.

This commit cherry picks 0d6f19fdeed62701a453633ac02054ba535ad7e7 from
GINCA:mfernandez/project.


# 39a78477 26-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Enable Python 3 compatibility settings from `__future__`.

This change enables a variety of Python 3 compatibility settings from
`__future__` when running Python 2. Essentially this forces all existing code
under Python 2 to conform to the Python 3 semantics. This makes bilingual
compatibility easier.


# e7a43739 26-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Use `//` whenever performing a division that assumes floor.

The `//` and `/` operators are equivalent in standard Python 2, but Python 3
changes the `/` operator to return a float, rather than flooring the result.
These changes are part of movement towards switching on division compatibility
from `__future__` within Python 2.


# 512a76ac 26-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Remove now unused import.

This fixes a circular dependency within this package. This change is motivated
by Python 3 compatibility. Everything worked fine previously under Python 2, but
Python 3 requires these imports to be relative and then fails on this cycle in
the dependencies here. The issue is that a dependency like this should never be
allowed, but Python 2 accidentally permits this. Following this change, we are
still not completely compatible with Python 3, but getting there bit-by-bit.


# ac78ac9e 29-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Rename set_endpoint to set_notification.

This is in line with recent changes to seL4 terminology to refer to the objects
that used to be known as "asynchronous endpoints" as now "notification
objects."


# be95b00d 26-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Remove the ability to pass an AEP when setting IRQ association.

**BREAKING CHANGE**

Prior to this change, it was possible to pass either an AEP object or a cap to
an AEP when performing this association with an IRQ. This change limits what
can be passed as this parameter to only AEP *caps*. The purpose of this is to
remove a circular dependency, which will finally be cut in an upcoming commit.


# 6671f0f6 26-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

python-capdl: Support for assigning fault endpoints to TCBs.

This change allows TCBs to be assigned a fault endpoint. Support for this
already exists in the CapDL translator. Note that this feature is not yet used
by CAmkES.


# 7d6dade6 18-Nov-2015 Stephen Sherratt <Stephen.Sherratt@nicta.com.au>

Moved python-capdl-tool into subdirectory