You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To help debugging concurrent programs, one can use a special primitive $\code{\_setProcessDebuggingName}$ that
309
+
takes a string argument and uses that string when reporting errors in the process. By design, there is no mechanism
310
+
for reading the process name other than causing an error; this prevents using process names to leak information.
307
311
308
312
\section{Information flow control}
309
313
\label{sec:infoflow}
@@ -571,6 +575,8 @@ \subsubsection{Declassification of the blocking level}
571
575
572
576
573
577
\subsection{Information flow control with I/O primitives}
578
+
This section may be omitted upon first read as it has a number of information flow subtleties that
579
+
can be omitted when first starting to use the system.
574
580
\subsubsection{Generalized receive and mailbox clearances}
575
581
576
582
I/O operations such as send and receive introduce additional concerns w.r.t.
@@ -604,14 +610,15 @@ \subsubsection{Generalized receive and mailbox clearances}
604
610
that constrains receives on an interval. The mailbox clearance is a proxy for an authority.
605
611
It can be raised using a dedicated command \code{raisembox (lev)} that returns a lowering
606
612
capability and lowered with command \code{lowermbox(c, authority)}.
607
-
There are two main constraints related to the mailbox clearance.
613
+
There are a few constraints related to the mailbox clearance.
608
614
609
615
\begin{enumerate}
610
-
\itemFirst, at the time of the receive on an interval $(\ell_1, \ell_2)$ under context$\mathit{pc}$
611
-
with mailbox clearance at $\ell_{\mathit{clear}}$ it must be that $\ell_2\sqcup\mathit{pc} \sqsubseteq\ell_1\sqcup\ell_{\mathit{clear}}$.
612
-
This constraint ensures that the mailbox clearance is sufficient for the interval receives. When mailbox clearance is $\bot$ -- as it is in the beginning of the program -- this means that only point intervals of the form $(\ell, \ell)$s.t.$\mathit{pc} \sqsubseteq\ell$ are allowed.
616
+
\itemIn order to receive on an interval $(\ell_1, \ell_2)$ under $\mathit{pc}$
617
+
with mailbox clearance $\ell_{\mathit{clear}}$ it must hold that $\ell_2\sqcup\mathit{pc} \sqsubseteq\ell_1\sqcup\ell_{\mathit{clear}}$.
618
+
This constraint ensures that the mailbox clearance is sufficient for the interval receives. When mailbox clearance is $\bot$ -- as it is in the beginning of the program -- only point intervals of the form $(\ell, \ell)$where$\mathit{pc} \sqsubseteq\ell$ are allowed.
613
619
614
-
\item
620
+
\item The $\mathit{pc}$-label of the program point where the mailbox clearance is raised affects the lower bound of the intervals. In particular, if the clearance is raised when the $\mathit{pc}$ counter is $\mathit{pc}_{\mathit{raise}}$, the mailbox structure cannot be influenced by receives that are not as restrictive as $\mathit{pc}_{\mathit{raise}}$; in other words: $\mathit{pc}_\mathit{raise} \sqsubseteq\mathit{pc} \sqcap\ell_1$, where $\ell_1$ is the lower bound of the interval receive.
621
+
\item If the process mailbox clearance is raised in a branch, it must be lowered back before reaching the join point of the branch.
\item [Description] Lowers the clearance of the current process' mailbox.
765
+
\item [Arguments] A tuple of the raise capability and authority
766
+
\item [Returns] Unit.
767
+
\item [Failure behavior] Fails if the type of the argument is invalid (dynamic type checking). Fails if the authority is insufficient for this lowering, or the provided capability does not match the stack scoping discipline.
768
+
\end{description}
769
+
755
770
756
771
\subsubsection{\code{mkuuid}}
757
772
\begin{description}
@@ -832,6 +847,16 @@ \subsubsection{\code{send}}
832
847
\end{description}
833
848
834
849
850
+
\subsubsection{\code{\_setProcessDebuggingName}}
851
+
\begin{description}
852
+
\item [Description] Sets the process name that is used in debugging.
853
+
\item [Argument] A string value.
854
+
\item [Returns] Unit.
855
+
\item [Failure behavior] Fails if the type of the argument is invalid (dynamic type checking).
0 commit comments