Commit graph

207 commits

Author SHA1 Message Date
Gerwin Klein
34f0666806 manual: apply foundation branding
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-06-17 20:19:51 +10:00
Axel Heider
b5aac26d10 manual: update contributor list
Signed-off-by: Axel Heider <axelheider@gmx.de>
2021-06-16 17:47:31 +10:00
Axel Heider
2a06234dec manual: apply seL4 Foundation branding
Also update trademarks and copyrights statements.

Signed-off-by: Axel Heider <axelheider@gmx.de>
2021-06-16 17:47:31 +10:00
Curtis Millar
afbea15710 mcs: Add sporadic flag to SchedControl_Configure
This adds a flags parameter to SchedControl_Configure to enable
configuration of a sporadic SC.

This also allows flags to be added in the future as needed without
breaking the API.

This allows the user to configure an SC either to be constrained as a
sporadic task where accumulated time is only delayed to when a task has
become runnable (implementing the sporadic server algorithm) or
whenever the task becomes the current executing task (implementing the
sliding-window constraint as in constant-bandwidth servers).

This can be used to prevent non-realtime tasks from exceeding bandwidth
under any circumstances, even in an over-committed configuration, whilst
also allowing work-conserving tasks to be configured in the same system.

To implement sporadic servers, we need to ensure that the suspension of
a task cannot be used as a mechanism to amplify budget of a task by
granting that task access to effectively multiple periods worth of
replenishments within a single period.

To align the implementation of SCs with the model of sporadic servers we
must delay available time until the release of a task. Within seL4, a
release would be any time where an SC changes from not being associated
with a Running, RunningVM, or Restart thread to one that is.

This can occur when an SC is bound to a new thread in such a state or
when a thread changes to such a state from any non-running states.

Critically, replenishments should not be delayed at the point when an SC
becomes the current SC (as was the case prior to this commit). This has
the effect of enforcing a continuous, constant bandwidth which is a
restriction that is incompatible with standard scheduling logic.

Accounting for this requires inserting a new refill_unblock_check
call whenever a sporadic SC is unblocked and removing the
refill_unblock_check call from when said SC is scheduled.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>
2021-04-14 15:24:40 +10:00
Jimmy Brush
971715e3da
manual: Document initial thread's SMMU caps (#282)
Signed-off-by: Jimmy Brush <code@jimmah.com>
2021-04-01 09:49:36 +11:00
Nick Spinale
7571abe2e2 manual: Correct description of CNode addressing
A CPointer addressing a CNode is accompanied by a depth limit. The
manual describes the depth limit as the length of a big-endian prefix of
the CPointer, whereas the specification and implementation treat the
depth limit as the length of a big-endian suffix.

This commit corrects the manual to match the specification.

Signed-off-by: Nick Spinale <nick@nickspinale.com>
2021-03-17 19:52:01 +00:00
Kent McLeod
5a7d96a46c SMMU: Add initial write up of design documentation
- Add a chapter in the Hardware I/O Section
- Link API documentation back to chapter.

Co-authored-by: Qian Ge <Qian.Ge@data61.csiro.au>
Signed-off-by: Kent McLeod <kent@kry10.com>
2020-10-28 17:30:42 +11:00
Jimmy Brush
eb6e553f9b manual: Update padding field in UntypedDesc
Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-09-25 00:39:21 +10:00
Jimmy Brush
545269fa9c manual: Update BootInfo struct table
- Show fields in same order as struct
- Fix name of schedcontrol field
- Fix nodeID field type

Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-09-25 00:39:21 +10:00
Jimmy Brush
d2a75a6690 manual: Correct typo
Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-09-25 00:39:21 +10:00
Jimmy Brush
6b5ca98f21 manual: Fix initial thread's CNode guard size
The initial thread's CNode guard size is calculated so that the CNode
resolves the number of bits in the architecture word size.

Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-09-25 00:39:21 +10:00
Jimmy Brush
b1ac68ffe7 manual: Add SchedContext to object size discussion
I had previously added it to the table but it should be in the
discussion too.

Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-09-25 00:39:21 +10:00
Gerwin Klein
df3ec37268
manual: remove mention of system criticality (#241)
The concept of system criticality has been removed from the kernel.
This commit removes a last remnant of it from the manual.

Fixes github issue #240

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-08-18 15:06:11 +10:00
Jimmy Brush
f8fae51693
trivial: manual: Document SchedContext size_bits
Signed-off-by: Jimmy Brush <code@jimmah.com>
2020-08-06 08:07:48 -04:00
Corey Lewis
73924ef0dc manual: minor change to the exceptions section
This fixes an inconsistency by explicitly mentioning GrantReply rights.
2020-03-20 15:02:51 +11:00
Gerwin Klein
cdd0f99485 license ID for bib file
Bib entry is from Data61 database.
2020-03-09 13:21:49 +08:00
Gerwin Klein
79da079239 Convert license tags to SPDX identifiers
This commit also converts our own copyright headers to directly use
SPDX, but leaves all other copyright header intact, only adding the
SPDX ident. As far as possible this commit also merges multiple
Data61 copyright statements/headers into one for consistency.
2020-03-09 13:21:49 +08:00
Gerwin Klein
80d8b02f30 license tagging for manual
provide license info for Doxyfile, README, export.bst
2020-03-06 17:40:15 +08:00
Curtis Millar
2d40b0d5df riscv32 does not support huge pages
For some reason the kernel documented and maintained constants for a
512MiB 'huge page' in riscv32 which is not part of the specification.

The references and constants are removed
2020-02-10 15:01:43 +11:00
G. Branden Robinson
49295a7b02 manual: improve discussion of Recv and Wait
...and other tweaks.

* Clarify the synonymy of Receive and Wait on non-MCS systems.

* Note that Receive takes a reply object on MCS systems, and not on
non-MCS systems.  Also note redundancy of Wait on non-MCS systems.

* Use the full English word "Receive" when the discussion is at the
conceptual level.  It still gets abbreviated in C context, where it also
receives the "seL4_" prefix.

* Try a little harder to explain what's the same and what's different
about a non-MCS "reply capability" and an MCS capability to a reply
object.

* Explain what MCS stands for at the beginning of the chapter.  In the
manual's current organisation, this precedes by a few paragraphs the
term's first occurrence.

* Recast language about things being "on the MCS kernel" in favour of
describing "MCS" and "non-MCS" _configurations_ of the kernel.  (We do
not refer to the "master" kernel in the manual--thankfully.)

* Correct doubled word "to to".

* Italicise "reply capability" to better distinguish it from the
(already italicised) "reply object".

* Add a TODO comment about hyphenation grief.
2020-01-10 16:52:05 +11:00
G. Branden Robinson
e36657f1c6 manual: rework introduction of system calls
* Recast language of introduction to system calls.
* Rearrange system calls to present them in a more pedagogically useful
  order.
* Add TODO comment for future manual organisation efforts.
2020-01-10 16:52:00 +11:00
Jimmy Brush
e460b934b1
trivial: fix typos in manual 2019-10-30 00:43:57 -04:00
amrzar
a4d6bf850c SELFOUR-161: Merge Page_Remap with Page_Map
- Remove Remap function from seL4 API for arm, x86, riscv and the
respective invocation implementation.
- Update Map as replacement for Remap
- Update manual

This allows a change of rights if the frame being mapped is already
mapped in at the given vaddr. To map a page to a different address,
unmap it first.

Co-authored-by: Hesham Almatary <hesham.almatary@data61.csiro.au>
Co-authored-by: Anna Lyons <Anna.Lyons@data61.csiro.au>
Co-authored-by: Victor Phan <Victor.Phan@data61.csiro.au>
Co-authored-by: Kent McLeod <Kent.Mcleod@data61.csiro.au>
2019-10-10 15:54:23 +11:00
Anna Lyons
a38e62f2f9 mcs: timeout exceptions
- Add seL4_TCB_SetTimeoutEndpoint
- implement timeout exceptions
2019-08-22 11:22:38 +10:00
Anna Lyons
106b893ee0 mcs: configurable scheduling context size
This allows users to define custom amounts of refills without
increasing the scheduling context size system wide.

also add libsel4 functions for refill size
2019-08-22 11:22:38 +10:00
Anna Lyons
abcd5affb1 mcs: update manual
Major manual update with details of the MCS configuration option of the
kernel.
2019-08-22 11:22:37 +10:00
Anna Lyons
554f812da3 mcs: scheduling context donation over ipc
After this commit, threads blocked on an endpoint can recieve a
scheduling context from the thread that wakes the blocked thread.
2019-08-22 11:22:37 +10:00
Anna Lyons
7b25653de7 manual: parse all doxygen xml for refdict
Previously the manual would only parse the doxygen for a single xml
file, which meant references to symbols on other files would break.
Parse all doxygen files when constructing the ref dict to fix this.
2019-08-22 11:22:36 +10:00
Anna Lyons
952134d1b8 mcs: Add a scheduling context object
This is the first part of the seL4 MCS. This commit:

    * adds a scheduling context object. Threads without scheduling
      context objects cannot be scheduled.
    * replaces tcbTimeSlice with the scheduling context object
    * adds seL4_SchedControl caps for each core
    * adds seL4_SchedControl_Configure which allows users to configure
      amount of ticks a scheduling context has, and set a core for the
      scheduling context.
    * adds seL4_SchedContext_Bind, Unbind and UnbindObject, which allows
      a tcb to be bound to a scheduling context.
2019-08-22 11:22:34 +10:00
Anna Lyons
bc61a7f3bd python2 --> python3
Update all scripts and build system to call python3, given python2's
upcoming doom. Use sys.maxsize instead of sys.maxint in one script
(maxint does not exist in python3).
2019-08-08 10:19:24 +10:00
Jimmy Brush
affebe295a
manual: Correct CNode slot size in bytes
It is 16 bytes on 32-bit systems and 32 bytes on 64-bit systems
2019-06-27 14:04:53 -04:00
Jimmy Brush
4d87d8e9cf manual: Clarify meaning of size_bits
The discussion on variable-sized kernel objects did not cover what to
pass as the value of size_bits nor the resulting kernel object size in
bytes.
2019-06-14 10:45:02 +10:00
Anna Lyons
cf57914c7f style: run autopep8 on python files 2019-03-27 10:43:58 +11:00
Japheth Lim
a8879f0159 manual: document badge range for 64-bit platforms 2019-02-19 12:16:27 +11:00
Jimmy Brush
01be26a779 manual: ipc: clarify sending caps is a copy 2019-02-14 10:14:11 +11:00
Jimmy Brush
5fb6f8b38c manual: document seL4_TruncatedMessage error 2019-02-14 10:12:46 +11:00
Anna Lyons
c08b8543ae manual: remove incorrect paragraph 2019-01-14 13:19:33 +11:00
James Ye
c51a2cf306 manual: use Latin Modern font
Latin Modern is a vectorised version of the default Computer Modern.
2018-12-14 11:50:03 +11:00
Thibaut Perami
3df00ea4d7 SELFOUR-6: Add GrantReply to the rights system.
GrantReply is a new access right added to endpoint capabilities, which
allows seL4_Call to be used on those capabilities (specifically, it
allows reply caps *only* to be granted across endpoints).

Prior to the addition of GrantReply, endpoint capabilities required the
Grant access right, which allowed any arbitrary capabilitiy to be
transferred over an endpoint. Using GrantReply, systems can now be
constructed where threads using seL4_Call over an endpoint do not need to be in the same
security subsystem.
2018-12-12 14:04:28 +11:00
Adam Felizzi
bc4580c64e parse_doxygen: Removed tab in Markdown doc format
Removed a trailing tab character in the Markdown API doc format
string.
2018-09-04 12:05:06 +10:00
Anna Lyons
f3dc34f427 manual: add missing newline
fixes a missing new line in generated markdown
2018-05-14 15:34:37 +10:00
Anna Lyons
28648bc843 manual: fix stray brace in output
Invocation headers had a stray brace which broke the markdown output
2018-05-14 15:34:35 +10:00
Anna Lyons
17b901d79f manual: clarify VSpace as top-level paging structure
This change updates the vspace chapter to separate the high-level concept of a VSpace from the
architectually defined objects. It also updates the various names for the vspace parameter to all be
vspace.
2018-05-11 16:14:09 +10:00
Anna Lyons
2168e5322d manual: add author 2018-05-11 16:13:15 +10:00
Anna Lyons
756d246593 manual: refactor vspace chapter
- instead of referring to only PDs and PTs, use generic language about paging structures
- link to each architectures methods
- create tables that show the info for all archictures
2018-05-11 16:13:14 +10:00
Anna Lyons
ac01547562 manual: remove hard-coded PD, PT and Page invocations
- increases the maintainability of the docs
- move descriptions of methods to the API reference
- remove hardcoded invocations in manual

This commit removes the content completely from vspace.tex, as it is out of date and needs
restructuring. The next commit does the restructuring.
2018-05-11 16:13:08 +10:00
Anna Lyons
56abae43fb manual: remove hard-coded ASID invocations
- move documentation to API ref
- create tables pointing to the API ref for these objects
2018-05-11 16:13:06 +10:00
Anna Lyons
d0f69f8ff5 manual: remove gen_invocations.py unused functions 2018-05-11 16:13:05 +10:00
Anna Lyons
d9780ec73e manual: label object groups in parse_doxygen_xml.py
This change adds a label to the latex generated object groups.
2018-05-10 11:36:05 +10:00
Anna Lyons
63c5ac6d19 manual: use level 3 for syscalls
As syscalls are not part of an inner group, which bumps the level,
they need to start at 3 not 2
2018-05-10 11:36:04 +10:00