summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>2012-09-21 09:30:39 +0200
committerMaarten Lankhorst <m.b.lankhorst@gmail.com>2012-09-21 09:30:39 +0200
commitdc8f8044c0f9ec4e6a1482e9b9ccb8c2492d0056 (patch)
treeef80a6d597cdcdc478d7280bd8fb92726e714cf9
parentdc9c43326aa7cbc6a684de66951b64d9a9b958f9 (diff)
Remove code
-rw-r--r--optimus.pdfbin223527 -> 100353 bytes
-rw-r--r--optimus.tex74
2 files changed, 4 insertions, 70 deletions
diff --git a/optimus.pdf b/optimus.pdf
index 1df0d59..747f59c 100644
--- a/optimus.pdf
+++ b/optimus.pdf
Binary files differ
diff --git a/optimus.tex b/optimus.tex
index 199ad15..b4ce14a 100644
--- a/optimus.tex
+++ b/optimus.tex
@@ -14,7 +14,7 @@
\title{Optimus and cross-device synchronization support}
\subtitle{Why is it still not done?}
\author{Maarten Lankhorst}
-\institute{Canonical Ltd}
+%\institute{Canonical Ltd}
%\logo{\includegraphics[width=1.5cm]{imgs/ensib.jpg}}
\AtBeginSection[]{
@@ -124,23 +124,9 @@ extendedchars=true}
\begin{itemize}
\item Work in progress, not even the name is finalized.
\item Dumbest possible primitive for synchronization
- \item Calls added:
- \begin{itemize}
- \item fence\textunderscore put, fence\textunderscore get
- \item fence\textunderscore signal
- \item fence\textunderscore wait(\textunderscore timeout)
- \item fence\textunderscore (add/remove)\textunderscore callback
- \item fence\textunderscore is\textunderscore signaled
- \item fence\textunderscore enable\textunderscore sw\textunderscore signaling
- \end{itemize}
-
- \item Implementers need to implement a few ops:
- \begin{itemize}
- \item enable\textunderscore signaling
- \item signaled
- \item release
- \end{itemize}
- \item .. and call fence\textunderscore signal on completion
+ \item Signaled upon completion, software and hardware waiters can be waiting on completion.
+ \item Hardware fences might unblock other hardware.
+ \item Object might have a single exclusive or multiple shared fences.
\end{itemize}
\end{block}
\end{frame}
@@ -160,58 +146,6 @@ extendedchars=true}
\end{block}
\end{frame}
- \begin{frame}[fragile]
- \begin{block}{Reservation single object reservation usage (WIP!)}
- \begin{lstlisting}[basicstyle=\ttfamily\tiny]
- struct reservation_object *obj;
-
- // Returns: 0 on success
- // -EBUSY if no_wait_unreserved = true and object was already reserved
- // -ERESTARTSYS if interruptible = true and a signal was queued.
- // -EAGAIN if ticket != NULL and we have to restart reservation.
- // -EDEADLK if you try to reserve the object with the same ticket twice
- ret = object_reserve(obj, interruptible, no_wait_unreserved, ticket := NULL);
- if (!ret) {
- ret = party_with_object(obj);
- object_unreserve(obj, NULL);
- }
- return ret;
- \end{lstlisting}
- \end{block}
- \begin{block}{WARNING!!}
- \begin{itemize}
- \item You will deadlock if you already hold a reservation\textunderscore object and try to call object\textunderscore reserve with no\textunderscore wait\textunderscore unreserved=false.
- Lockdep will catch this situation.
- \end{itemize}
- \end{block}
- \end{frame}
-
- \begin{frame}[fragile]
- \begin{block}{Reservation multi object reservation usage (WIP!)}
- \begin{lstlisting}[basicstyle=\ttfamily\tiny]
-retry:
- reservation_ticket_init(&t);
- for (...; obj; ...) {
- ret = object_reserve(obj, interruptible, true, &t);
- if (ret) {
- for_each_continue_reverse(obj)
- object_unreserve(obj, &t);
- reservation_ticket_fini(&t);
- if (ret != -EAGAIN)
- return ret;
- object_wait_unreserved(obj_with_eagain_ret);
- goto retry;
- }
- }
- ret = party_with_all_objects(...);
- for (...; obj; ...) {
- object_unreserve(obj, &t);
- reservation_ticket_fini(&t);
- return ret;
- \end{lstlisting}
- \end{block}
- \end{frame}
-
\begin{frame}
\begin{block}{Fence api rules}
\begin{itemize}