diff options
| author | John Ogness <john.ogness@linutronix.de> | 2017-12-19 10:46:32 +0100 |
|---|---|---|
| committer | John Ogness <john.ogness@linutronix.de> | 2017-12-19 10:46:32 +0100 |
| commit | 0f172d0b022f1a2ec3d7465eb7272828ee083f6e (patch) | |
| tree | 7e7aded1388eaa61097f9e1c2c2b22cc2f60d0ef /misc/pres_ipc_en.tex | |
| parent | c30d3680a48c7966f860262ac4ec2398bd52ae8d (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.tex | 120 |
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} |
