Commit Graph

252 Commits

Author SHA1 Message Date
Birg
0a0739074d manual: add bibliography to toc
Signed-off-by: Birg <bbrcknl@github.com>
2024-01-22 10:09:11 +11:00
Birg
9a532efc15 change CPTR to CPtr
Signed-off-by: Birg <bbrcknl@github.com>
2023-12-06 10:41:28 +00:00
Birg
391bfb15f8 update some manual todos
Signed-off-by: Birg <bbrcknl@github.com>
2023-11-29 10:21:32 +00:00
Gerwin Klein
d8f4a95b72 manual: group invocations by MCS/non-MCS
Put MCS-only invocations into their own groups and files. This solves
the problem that doxygen gets confused by duplicate function names with
the same parameters.

MCS/non-MCS is distinguished by evaluating the <condition> field in the
API XML definition. If the condition evaluates to true when
CONFIG_KERNEL_MCS is set, it is an MCS-only method, otherwise it is
assumed to be non-MCS or present in both configs.

Fixes #558

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-11-07 16:13:28 +11:00
Gerwin Klein
beb2c0d176 manual: remove obsolete doxygen settings
HTML_TIMESTAMP and LATEX_TIMESTAMP have been removed in more recent
doxygen versions. Since we are using the defaults, they are safe to
remove in our config file.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-11-07 16:13:27 +11:00
Gerwin Klein
9956101ba6 manual: handle name duplication between groups
Different API groups may contain the same function name, for instance
IRQ_Control GetTrigger for RISC-V vs the same for ARM. Duplicate
function names with identical parameter lists confuse doxygen, leading
it to generate a single merged xml entry for both, which means one of
the entires will be missing and the other will be potentially wrong.

When the functions are placed in different files and different groups
at the same time, doxygen no longer is confused in all cases.

Therefore:

- generate a separate file for each API group
- generate a separate file group_defs.h that contains group definitions
  and declares group nesting

Unfortunately, this does not seem to always work (e.g. the toplevel
MCS/non-MCS syscalls), so manual inspection is still necessary when
adding new calls and separate doxygen runs for duplicate function names
may be necessary. Generating separate files as above enables this
option, should it become necessary in the future.

Fixes #530

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-11-07 16:01:50 +11:00
Gerwin Klein
1de89ba1f2 trivial: spelling (sel4 -> seL4)
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-11-07 16:01:50 +11:00
Gerwin Klein
b67c7310af parse_doxygen_xml: avoid XMLParsedAsHTMLWarning
Explicitly select xml parser (instead of html) via "lxml-xml" in
BeatifulSoup to avoid warning.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-11-07 16:01:49 +11:00
Ivan-Velickovic
a9dae74c52 manual: adjust AArch64 VSpace section for RFC-10
Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-10-05 10:43:16 +01:00
Axel Heider
a58b9437a2 manual: improve thread affinity description
Signed-off-by: Axel Heider <axelheider@gmx.de>
2023-08-24 15:58:18 +02:00
Axel Heider
998ed9a34f manual: change 'core' to 'node'
The term "node" is used in other parts of the manual also.

Signed-off-by: Axel Heider <axelheider@gmx.de>
2023-08-24 15:58:18 +02:00
Axel Heider
dac273a2f6 manual: replace 'master' by 'non-MCS'
MCS was a separate branch initially, it got merged into the master
branch for version 11.0.0.

Signed-off-by: Axel Heider <axelheider@gmx.de>
2023-08-24 15:58:18 +02:00
Axel Heider
b8c0b1cb02 boot: introduce seL4_BootInfoFrameSize
Provide seL4_BootInfoFrameSize (and seL4_BootInfoFrameBits) for
userland, to there is no longer a need to hard-code the 4 KiByte
assumption.

Signed-off-by: Axel Heider <axelheider@gmx.de>
2023-08-23 15:10:32 +02:00
Ivan Velickovic
6dbfeccd7c manual: fix typos in x86 virtualisation section
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2023-08-08 09:26:43 +02:00
Kent McLeod
7fec9bc9e9 Add CONFIG_X86_64_VTX_64BIT_GUESTS guards
Guard the new implementation of 64-bit x86 guests behind a config
option. This is done so that existing projects that use x86_64 hosts
with ia32-bit guests can continue to be supported until either the old
feature is preferred to be deprecated, or support can be added to
support both simmultaneously.

Signed-off-by: Kent McLeod <kent@kry10.com>
2023-06-06 13:29:34 +10:00
Ivan-Velickovic
ac49331e2a manual: ARM_ParityEnabled is ignored on AArch64
Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-05-22 11:57:29 +10:00
Ivan-Velickovic
6dcbcbd320 manual: x86 VM attributes are for IA-32 and x64
Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-05-22 11:57:29 +10:00
Ivan-Velickovic
afb6300426 manual: document VM attributes for RISC-V
Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-05-22 11:57:29 +10:00
Gerwin Klein
ec170f4c21 manual: make sharing more precise
Using the same cap twice on the same slot is possible for remapping,
but using the same cap twice in different tables or VSpaces will result
in an error.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:54 +11:00
Gerwin Klein
a57c38c5fc manual: AArch32 page tables are config dependent
Mention that in hyp mode AArch32 page tables cover more address space.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:54 +11:00
Gerwin Klein
10bb041b15 manual: 3 and 4 level configs in AArch64
Describe the difference in 3 and 4 level configs for AArch64 and point
to the libsel4 macros that abstract from the distinction.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:54 +11:00
Gerwin Klein
1479e3d831 manual: use \obj macro consistently in sect 7
Remove previous mix of \texttt and \obj, use \obj consistently when
referring to kernel objects.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:54 +11:00
Gerwin Klein
aa4ce0840d manual: terminology in ASID Control+Pool sections
- clarify terminology (cap vs object) in ASID Control and ASID pool
- same for page sharing

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:54 +11:00
Gerwin Klein
59e751852c manual: more consistent terminology in sec 7.1
Adjusting for VSpace object clarification and making sure terminology
is used consistently.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:53 +11:00
Gerwin Klein
e4c0e561d6 manual: describe VSpace objects more explicitly
Rework the intro to the VSpace section for slightly improved clarity
and a more explicit definition of the distinctions between VSpace and
VSpace object, and between frame object and page capability.

Addresses #564

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-30 18:36:53 +11:00
Gerwin Klein
0328754e11 manual: prevent unnecessary rebuilds
- use a marker file to get a time stamp for when doxygen output was
  last generated. Use that as a file target instead of a phony target
  to avoid rebuilds when there is nothing to do.

- use static pattern rules so that `make` creates files instead of
  giving up when the prerequisite of a pattern rule does not exist yet.

- remove file list duplication (needed because the static pattern
  rules also need to mention these files)

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-27 21:25:48 +11:00
Gerwin Klein
aa89ae064e manual: remove obsolete doxygen options
Remove options that are obsolete in doxygen >= 1.9. We only use default
values here, so everything should keep working as before in doxygen 1.8.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-27 21:25:48 +11:00
Gerwin Klein
5e0b95fecf manual: fix broken links and latex complaints
- fix broken links in the document
- small tweaks to make latex complain less:
  - increase headheight by 2pt
  - give small possible stretch value to parskip for filling pages
  - use \sloppy for TOC to avoid unnecessary overfull hboxes
  - make table placement more explicit (it currently doesn't fit
    where [h] wants to place it, so allow it to go to the top of
    the next page)

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-27 21:25:48 +11:00
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