summaryrefslogtreecommitdiff
path: root/misc/pres_ipc_en.tex
diff options
context:
space:
mode:
authorJohn Ogness <john.ogness@linutronix.de>2017-12-19 10:46:32 +0100
committerJohn Ogness <john.ogness@linutronix.de>2017-12-19 10:46:32 +0100
commit0f172d0b022f1a2ec3d7465eb7272828ee083f6e (patch)
tree7e7aded1388eaa61097f9e1c2c2b22cc2f60d0ef /misc/pres_ipc_en.tex
parentc30d3680a48c7966f860262ac4ec2398bd52ae8d (diff)
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>
Diffstat (limited to 'misc/pres_ipc_en.tex')
-rw-r--r--misc/pres_ipc_en.tex120
1 files changed, 120 insertions, 0 deletions
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}