274 Commits

Author SHA1 Message Date
Seiya Nuta
9d7b1f9474 manual: Fix a typo in threads.tex
Signed-off-by: Seiya Nuta <nuta@seiya.me>
2023-01-08 13:57:52 +11:00
Ahmed Charles
a6c2b5f404 Fix incorrect type
Signed-off-by: Ahmed Charles <acharles@outlook.com>
2022-07-19 16:50:42 +10:00
matt rice
b0d70f1ebc add libsel4/tools/sel4_idl.xsd to replace dtd
No intended changes to the schema, just change
the schema from dtd to xsd, and update ci to use it.

Signed-off-by: matt rice <ratmice@gmail.com>
2022-03-22 18:33:38 +11:00
Rafal Kolanski
c3b4df0f30 smmu+manual: typo and small sentence tune
Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
2022-01-11 18:19:52 +11:00
Axel Heider
f8dad00303 manual: fix typo, improve readability
Signed-off-by: Axel Heider <axelheider@gmx.de>
2022-01-04 19:03:51 +11:00
Gerwin Klein
51d3b824b8 manual: fix explanation of CNode_Mutate
Mutate cannot be used to badge endpoints (many years ago, before the
first public release, this was possible, but was removed).

Also explain why Mutate is not always replaceable with Mint+Delete.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-10-19 15:50:47 +11:00
Gerwin Klein
3a7764c033 manual: more precision on retype and revoke
The concept of untyped object was confusing the description here, esp
when it comes to the CDT and what is derived from what. Also explain
when memory is actually zeroed, because that is important for where you
want to make sure that no confidential data remains in memory, for
instance.

This commit only affects the retype/revoke explanation and does not
attempt to clear up the concept of untyped object more generally.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-10-19 15:50:47 +11:00
Jimmy Brush
9b5b0e9c8a manual: Swap API description and error code table
Signed-off-by: Jimmy Brush <code@jimmah.com>
2021-10-17 15:02:45 +11:00
Jimmy Brush
9890b78c2b manual: Remove some extra spaces after texttt
Extra spaces are inserted after texttt tags when generating doxygen
comments in order to ensure that xmlonly tags are readable by doxygen.

The extra spaces cause a description like this:

```
Testing <texttt text="1"/>, 2, 3
```

To be rendered like this:

```
Testing 1 , 2, 3
```

This change identifies text runs that start with extra spaces and either
a period or a comma and removes the extra spaces, allowing at least
common punctuation to be rendered correctly.

Signed-off-by: Jimmy Brush <code@jimmah.com>
2021-10-17 15:02:45 +11:00
Jimmy Brush
02a5f761f7 manual: Add returned error codes table to API
Signed-off-by: Jimmy Brush <code@jimmah.com>
2021-10-17 15:02:45 +11:00
Jimmy Brush
ae197ad146 libsel4: Generate doxygen tag for error element
Translate "error" elements into "retval" doxygen comment tags when
generating object invocation stubs.

Signed-off-by: Jimmy Brush <code@jimmah.com>
2021-10-17 15:02:45 +11:00
Gerwin Klein
ea8e57275c manual: bring intro up-to-date
- resolve mix of service mechanism, abstraction
- update verification explanation + references
- remove reference to ARM11 which is slated to be discontinued

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-09-30 18:07:19 +10:00
Indan Zupancic
fbb11221cf Document Lazy SC Rebind
Signed-off-by: Indan Zupancic <Indan.Zupancic@mep-info.com>
2021-09-08 07:56:47 +10:00
Indan Zupancic
0d2fac8b0a Fix spelling mistakes in threads.tex
Signed-off-by: Indan Zupancic <Indan.Zupancic@mep-info.com>
2021-09-08 07:56:47 +10:00
Gernot Heiser
b1ee44f4b7 Update terminology: s/ARM/Arm/g
Signed-off-by: Gernot Heiser <gernot@unsw.edu.au>
2021-06-17 20:19:51 +10:00
Gerwin Klein
d07f028778 manual: replace old README
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-06-17 20:19:51 +10:00
Gerwin Klein
b545cec00f manual: use more modern draft package
The old draftcopy package doesn't seem to work on newer texlive
installations. We also don't want to pass `draft` to the `report`
style, because that will switch off images.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-06-17 20:19:51 +10:00
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