History log of /seL4-test-master/kernel/src/object/notification.c
Revision Date Author Comments
# 09d42ac0 23-Jul-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

mcs: Return bound notification SC before ep recv

If a thread is running on the SchedContext of it's bound notification,
when it next does a blocking recv/wait operation on an ep the SC is
removed. This allows the thread to return to being a passive thread to
receive the next notification or ep message.

Signed-off-by: Kent McLeod <Kent.Mcleod@data61.csiro.au>


# a132a122 10-Oct-2019 Curtis Millar <curtis.millar@data61.csiro.au>

mcs: Donate scheduling context from bound ntfn

When a passive server receives a signal from a bound notification object
the SC from the bound notification object should be donated to the TCB
in order to handle the notification.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# 36e5d119 18-Mar-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Don't unblock current SC

If the current SC is bound to a notification and the current thread is
deleted it is possible for the current SC to be signalled by the
pre-emption. In this case the current SC may be donated to another
thread without being changed the value in ksConsumed.

refill_unblock_check can only be called on the current SC if
ksConsumed is 0. Further, it makes no sense to call refill_unblock_check
on the current SC as it was not blocked.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# 79da0792 01-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

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.


# 61b88666 07-Jan-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: fix notification donation semantics

- update thread state before donate
- schedcontext_resume after donate

This ensures our scheduling invariants (on the run queue) are held.


# a22cb3d1 23-Nov-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: associate scheduling context + ntfn

This commit allows scheduling contexts to be bound
to notification objects. When a passive server
receives a notification it will receive the scheduling
context from the notification. When the server
blocks the scheduling context is returned.


# 554f812d 08-Nov-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

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.


# 5fe1890a 06-Nov-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: order EP and NTFN queues

Previously IPC signal queues were FIFO, as of this change they are
ordered by priority (FIFO for same prio threads).


# d0930f67 18-Mar-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

style: consistently attach return type

Add attach-return-type to astyle


# 761006e0 18-Mar-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

style: consistently align pointer with name

Run astyle with align-pointer=name


# f1f6f975 29-Oct-2018 Kofi Doku Atuah <kofidoku.atuah@data61.csiro.au>

Document the behaviour of bound notification signals

Specifically, what happens when a TCB is bound to a notification,
and that notification gets signaled while in the TCB is in the middle
of waiting during seL4_Call's receive phase.


# 8028066a 23-Nov-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

ksSchedulerAction contains candidate thread instead of target thread

Instead of switching to the thread contained in `ksSchedulerAction` on a `schedule` we
instead decide between the 'candidate' contained in `ksSchedulerAction`, the current thread
or potentially neither if the candidate is deemed invalid and the current thread is blocked.

A consequence of this change is that it is no longer meaningful to have a distinction between
`switchIfRequiredTo` and `attemptSwitchTo`. Now both these cases simply identify a candidate,
which may or may not be picked in `schedule`. Part of the distinction of `switchIfRequiredTo`
was to not avoid switching if possible when performing notifications. This is now handled by
prefering the current thread over the candidate if the current thread has not blocked.

This change is largely semantic preserving overall, with the exception of non-blocking
synchronous sends now acting like notifications and also preferring to resume running the
current thread.

The motivation for this change was to make it much easier for verification to show
correspondence between the fastpath changes introduced in the previous commit and the
slowpath scheduler.


# ee28936d 18-Jun-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

SMP: Introduce ENABLE_SMP_SUPPORT

- Make it more readable and less confusing compared to the 'CONFIG_MAX_NUM_NODES > 1' check


# b40d95ed 05-Feb-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

x86: Send explicit TCB when handling remote VMs withs pending notifications

Previously if the `ksCurThread` of the destination core is not the thread that is
receiving the notification in `sendSignal` then the notification would be delayed
until the VMM for that VM next did a `seL4_VMEnter`. This adds a `tcb_t*` parameter
to `VMCheckBoundNotification` instead of having it implicitly talk about `ksCurThread`.
A TCB parameter is safe to send here as the `doRemoteVMCheckBoundNotification`
happens synchronously and so the TCB is guaranteed to still exist.


# 7252ab18 21-Nov-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

x86: Avoid modifying thread running on different core in sendSignal

When sending a signal to a notification object that has a bound thread that is
in the 'runningVM' start we, ordinarily, want to deliver it by switching back
to the native execution of that thread and delivering the message. If the thread
is in the 'runningVM' state on a different core, then we must not modify its
thread state. Previously we would modify the thread state (changing it to
Running) and then attemptSwitchTo. Switching would fail, as its affinity would
be for a different core, resulting in us enqueing the thread into the
scheduling queue, despite the thread also presently running.

This commit both adds a check to prevent us manipulating a thread that
is actively running on a different core, as well as a remote operation
to tell that core that if it is running a VM it should recheck its
endpoint for a message.


# 25bb9437 24-Oct-2016 amrzar <azarrabi@nicta.com.au>

SELFOUR-635: support for TCB operations
This will update TCB invocations to consider multicore environment, this may include:
- adds the affinity invocation to transfer TCB between different cores and update TCB structure for core ID
- checking the thread/core state before performing TCB operation, e.g. deleting the runnable TCB, etc


# 7fbde1bb 14-Jun-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

SELFOUR-287: 32-bit vt-x implementation

This is an implementation of vt-x for x86 kernels running in
ia32 mode.


# 0151d78d 15-Dec-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Fix comment reference to Haskell error.


# 142627ad 02-Dec-2015 Gerwin Klein <gerwin.klein@nicta.com.au>

terminology: updated two async stragglers in comments


# a99a1040 09-Nov-2015 Anna Lyons <Anna.Lyons@nicta.com.au>

SELFOUR-279: rename Wait -> Recv, add wrappers for seL4_Poll and seL4_Wait for notification objects.

This commit deprecates seL4_ReplyWait, removes seL4_NBwait completely,
and changes the return type of seL4_Wait to void (seL4_Wait should be
used for notification objects, and seL4_Recv should be used where
seL4_Wait was used previously for endpoints).


# 54603123 19-Oct-2015 Anna Lyons <Anna.Lyons@nicta.com.au>

SELFOUR-317: rename async endpoint to notification object, and other
fallout.