From 0f172d0b022f1a2ec3d7465eb7272828ee083f6e Mon Sep 17 00:00:00 2001
From: John Ogness <john.ogness@linutronix.de>
Date: Tue, 19 Dec 2017 10:46:32 +0100
Subject: import presentations from devel/jogness

Several presentations are available only in devel/jogness. Add them
to master to allow easy access to any trainer.

misc/pres_best_en: best practice guidelines
misc/pres_ipc_en: overview of linux ipc mechanisms
misc/pres_minicoredumper_en: minicoredumper features
misc/pres_zynq_en: describe the zynq architecture

Signed-off-by: John Ogness <john.ogness@linutronix.de>
---
 misc/pres_ipc_en.tex | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 120 insertions(+)
 create mode 100644 misc/pres_ipc_en.tex

(limited to 'misc/pres_ipc_en.tex')

diff --git a/misc/pres_ipc_en.tex b/misc/pres_ipc_en.tex
new file mode 100644
index 0000000..d5f93f0
--- /dev/null
+++ b/misc/pres_ipc_en.tex
@@ -0,0 +1,120 @@
+\input{configpres}
+
+\section{Inter-Process Communication (IPC)}
+
+\title{Inter-Process Communication (IPC)}
+\maketitle
+
+\begin{frame}
+\frametitle{half-duplex unix pipes}
+\begin{itemize}
+\item file descriptor based
+\item read()/write()
+\item byte stream
+\item private
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{named pipes}
+\begin{itemize}
+\item file descriptor based
+\item read()/write()
+\item byte stream
+\item named in filesystem
+\item protected by filesystem permissions
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{unix domain sockets}
+\begin{itemize}
+\item file descriptor based
+\item read()/write() or recvmsg()/sendmsg()
+\item byte stream or packets
+\item named in filesystem
+\item protected by filesystem permissions
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{netlink}
+\begin{itemize}
+\item file descriptor based
+\item recvmsg()/sendmsg()
+\item packets
+\item protected by CAP\_NET\_ADMIN capability
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{message queues}
+\begin{itemize}
+\item uses special message queue descriptors
+\item mq\_receive()/mq\_send() or msgrcv()/msgsnd()
+\item packets
+\item named in filesystem
+\item protected by user/group/other permissions
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{shared memory}
+\begin{itemize}
+\item mmap()
+\item shared raw data (no copies)
+\item named in filesystem
+\item protected by filesystem permissions
+\item requires "manual" queue implementation (if queues needed)
+\item efficient notification/synchronization with condvar/mutex
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{d-bus}
+\begin{itemize}
+\item uses special handles (object/bus model)
+\item remote procedure calls (rpc)
+\begin{itemize}
+\item request/response (calls)
+\item publish/subscribe (events)
+\end{itemize}
+\item rpc-function data parameters
+\item protected by interface configurations
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{semaphores}
+\begin{itemize}
+\item uses special semaphore identifiers
+\item semop()
+\item no data
+\item named in filesystem
+\item protected by filesystem permissions
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{signals}
+\begin{itemize}
+\item no data
+\item protected by user permissions
+\item runs in userspace interrupt context
+\item complicated to implement correctly
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{inotify}
+\begin{itemize}
+\item file descriptor based
+\item no data
+\item named in filesystem
+\item protected by filesystem permissions
+\item like signals but no interrupt context
+\item events missed if not listening
+\end{itemize}
+\end{frame}
+
+\input{tailpres}
-- 
cgit v1.2.3

