comparison com_add_slides_for_the_fosdem_presentation.patch @ 101:315f4f9697c6

Wip on the fosdem slides
author Louis Opter <louis@lse.epita.fr>
date Thu, 31 Jan 2013 19:35:47 +0100
parents c95728ef59ad
children
comparison
equal deleted inserted replaced
100:c95728ef59ad 101:315f4f9697c6
1 # HG changeset patch 1 # HG changeset patch
2 # Parent 9883e23afecaf44cf67a1f956d8bb8a912c6fe23 2 # Parent 9883e23afecaf44cf67a1f956d8bb8a912c6fe23
3 com: add slides for the Fosdem 2013 presentation 3 com: add slides for the Fosdem 2013 presentation
4
5 diff --git a/com/images/twitter-bird-dark-bgs.pdf b/com/images/twitter-bird-dark-bgs.pdf
6 new file mode 100644
7 index 0000000000000000000000000000000000000000..1d3b305deabc2ca218a4a01ee164d1e9b404d90f
8 GIT binary patch
9 literal 6170
10 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
106
107 diff --git a/com/images/twitter-bird-light-bgs.pdf b/com/images/twitter-bird-light-bgs.pdf
108 new file mode 100644
109 index 0000000000000000000000000000000000000000..e2536c220c07922151b4d572827366dac2f8416a
110 GIT binary patch
111 literal 12645
112 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
333 P!NCg#(9ub&$N>Hy7Ppsw
4 334
5 diff --git a/com/slides/2013_fosdem/2013_fosdem.tex b/com/slides/2013_fosdem/2013_fosdem.tex 335 diff --git a/com/slides/2013_fosdem/2013_fosdem.tex b/com/slides/2013_fosdem/2013_fosdem.tex
6 new file mode 100644 336 new file mode 100644
7 --- /dev/null 337 --- /dev/null
8 +++ b/com/slides/2013_fosdem/2013_fosdem.tex 338 +++ b/com/slides/2013_fosdem/2013_fosdem.tex
9 @@ -0,0 +1,36 @@ 339 @@ -0,0 +1,176 @@
10 +\documentclass[xcolor={usenames,svgnames}]{beamer} 340 +\documentclass[xcolor={usenames,svgnames}]{beamer}
11 + 341 +
12 +\usepackage[francais]{babel}
13 +\usepackage{rtxslides} 342 +\usepackage{rtxslides}
343 +\usepackage[american]{babel}
14 +\usepackage{tikz} 344 +\usepackage{tikz}
15 +\usetikzlibrary{shapes,fit} 345 +\usetikzlibrary{shapes,fit}
16 + 346 +
17 +\setbeamertemplate{navigation symbols}{} 347 +\selectbiblanguage{american}
18 +
19 +\newcommand{\bgcolor}{black}
20 +\newcommand{\fgcolor}{white}
21 + 348 +
22 +\title{A DSL for driver development, why \& how?} 349 +\title{A DSL for driver development, why \& how?}
23 +\date{Fosdem 2013} 350 +\date{Fosdem 2013}
24 +\author{Louis Opter \\ \texttt{www.rathaxes.org}} 351 +\author{Louis Opter \\ \texttt{www.rathaxes.org}}
25 + 352 +
38 + 365 +
39 +\begin{document} 366 +\begin{document}
40 + 367 +
41 +\begin{frame} 368 +\begin{frame}
42 +\titlepage 369 +\titlepage
370 +\end{frame}
371 +
372 +\begin{frame}{About us}
373 +\Large{
374 +\begin{itemize}
375 +\item<1-> Three guys, limited experience;
376 +\item<2-> Lionel's idea back in 2007;
377 +\item<3-> Experimentations, POC in 2009;
378 +\item<4-> A side project for us since 2010.
379 +\end{itemize}
380 +}
381 +\end{frame}
382 +
383 +\begin{frame}{Why?}
384 +\Large{
385 +\pause
386 +\begin{itemize}
387 +\item Learn;
388 +\item Biggest part of OSes code base;
389 +\item Dominant cause of crashes;
390 +\item Complexity/Skills required;
391 +\pause
392 +\item \emph{Understanding Modern Device Drivers} \cite{kadavasplos12}.
393 +\end{itemize}
394 +\pause
395 +
396 +\begin{center}
397 +How can this be solved/improved?
398 +\end{center}
399 +}
400 +\end{frame}
401 +
402 +\begin{frame}{ToC}
403 +\Large{
404 +\begin{enumerate}
405 +\item “State of the art”;
406 +\item Quick dive into \rtx;
407 +\item Wrap-up \& next steps.
408 +\end{enumerate}
409 +}
410 +\end{frame}
411 +
412 +\begin{frame}
413 +\begin{center}
414 +\LARGE{
415 +\emph{``State of the art''}
416 +}
417 +\end{center}
418 +\end{frame}
419 +
420 +\begin{frame}{RAD Tools}
421 +\Large{
422 +Jungo's WinDriver: \url{http://youtu.be/-o6M1ljZMQk}
423 +}
424 +\end{frame}
425 +
426 +\begin{frame}{Static Analysis}
427 +\Large{
428 +\only<1>{
429 +\begin{itemize}
430 +\item Static Driver Verifier (Windows specific);
431 +\item Safe Drive (Linux) \cite{safedrive};
432 +\item SymDrive \cite{symdrive}.
433 +\end{itemize}
434 +}
435 +\only<2>{
436 +\begin{itemize}
437 +\item Cover topics we don't cover \cemph{yet};
438 +\item Doesn't solve code re-usability;
439 +\item SymDrive is very interesting.
440 +\end{itemize}
441 +}
442 +}
443 +\end{frame}
444 +
445 +\begin{frame}{Interface Description Languages (IDL)}
446 +\only<1>{
447 +\Large{
448 +\begin{itemize}
449 +\item Devil \cite{Reveillere:these2001};
450 +\item Hail (similar to Devil).
451 +\end{itemize}
452 +}
453 +}
454 +\only<2>{
455 +\large{
456 +\begin{itemize}
457 +\item Describe interfaces to access the registers with constraints;
458 +\item No notion of bus (Devil);
459 +\item Don't describe the algorithms to access the registers.
460 +\end{itemize}
461 +}
462 +}
463 +\only<3>{
464 +\Large{
465 +\begin{itemize}
466 +\item Only solve one part of the problematic;
467 +\item \rtx\ started from Devil.
468 +\end{itemize}
469 +}
470 +}
471 +\end{frame}
472 +
473 +\begin{frame}{Domain Specific Languages (DSL)}
474 +\Large{
475 +\begin{itemize}
476 +\item Termite \cite{Ryzhyk_CKSH_09};
477 +\item \rtx.
478 +\end{itemize}
479 +}
480 +\end{frame}
481 +
482 +\begin{frame}
483 +\begin{center}
484 +\LARGE{
485 +\emph{Quick dive in our WIP}
486 +}
487 +\end{center}
488 +\end{frame}
489 +
490 +\begin{frame}
491 +\begin{center}
492 +\LARGE{
493 +\emph{Wrap-up}
494 +}
495 +\end{center}
496 +\end{frame}
497 +
498 +\begin{frame}{Questions?}
499 +\begin{center}
500 +\Huge{Thanks}
501 +
502 +\end{center}
503 +\vspace{2em}
504 +\begin{itemize}
505 +\item \Large{\url{http://www.rathaxes.org/}}
506 +\item \Large{\texttt{\#rathaxes} on IRC (\texttt{chat.freenode.net})}
507 +\item \Large{\twitter}
508 +\end{itemize}
509 +\end{frame}
510 +
511 +\begin{frame}{Bibliography}
512 +\rtxbibliography
43 +\end{frame} 513 +\end{frame}
44 + 514 +
45 +\end{document} 515 +\end{document}
46 diff --git a/com/slides/2013_fosdem/CMakeLists.txt b/com/slides/2013_fosdem/CMakeLists.txt 516 diff --git a/com/slides/2013_fosdem/CMakeLists.txt b/com/slides/2013_fosdem/CMakeLists.txt
47 new file mode 100644 517 new file mode 100644
48 --- /dev/null 518 --- /dev/null
49 +++ b/com/slides/2013_fosdem/CMakeLists.txt 519 +++ b/com/slides/2013_fosdem/CMakeLists.txt
50 @@ -0,0 +1,3 @@ 520 @@ -0,0 +1,6 @@
51 +RATHAXES_COPY_LATEX_CLASSES() 521 +RATHAXES_COPY_LATEX_CLASSES()
52 + 522 +
53 +ADD_LATEX_DOCUMENT(2013_fosdem.tex DEFAULT_PDF MANGLE_TARGET_NAMES) 523 +ADD_LATEX_DOCUMENT(2013_fosdem.tex
524 + BIBFILES
525 + ../../../doc/bibliography.bib
526 + DEFAULT_PDF MANGLE_TARGET_NAMES)
54 diff --git a/com/slides/CMakeLists.txt b/com/slides/CMakeLists.txt 527 diff --git a/com/slides/CMakeLists.txt b/com/slides/CMakeLists.txt
55 --- a/com/slides/CMakeLists.txt 528 --- a/com/slides/CMakeLists.txt
56 +++ b/com/slides/CMakeLists.txt 529 +++ b/com/slides/CMakeLists.txt
57 @@ -1,3 +1,4 @@ 530 @@ -1,3 +1,4 @@
58 ADD_SUBDIRECTORY(2011_lse) 531 ADD_SUBDIRECTORY(2011_lse)
59 ADD_SUBDIRECTORY(2011_lsm) 532 ADD_SUBDIRECTORY(2011_lsm)
60 ADD_SUBDIRECTORY(2012_lsm) 533 ADD_SUBDIRECTORY(2012_lsm)
61 +ADD_SUBDIRECTORY(2013_fosdem) 534 +ADD_SUBDIRECTORY(2013_fosdem)
535 diff --git a/doc/bibliography.bib b/doc/bibliography.bib
536 --- a/doc/bibliography.bib
537 +++ b/doc/bibliography.bib
538 @@ -69,3 +69,59 @@
539 month = feb,
540 note = "\url{http://www.gnu.org/licenses/lgpl-2.1.html}"
541 }
542 +
543 +@InProceedings{kadavasplos12,
544 + author = "{Asim Kadav and Michael M. Swift}",
545 + title = "{U}nderstanding {M}odern {D}evice {D}rivers",
546 + booktitle = {ASPLOS},
547 + address = {London, UK},
548 + month = {March 3-7},
549 + year = {2012},
550 + note = "\url{http://pages.cs.wisc.edu/~kadav/study/}"
551 +}
552 +
553 +@manual{SDV,
554 + title = "{S}tatic {D}river {V}erifier",
555 + organization = "{M}icrosoft / {M}icrosoft {R}easearch",
556 + note = "\url{http://msdn.microsoft.com/en-us/library/windows/hardware/ff552808.aspx}"
557 +}
558 +
559 +@InProceedings{safedrive,
560 + author = "{Feng Zhou, Jeremy Condit, Zachary Anderson, and Ilya Bagrak; Rob Ennals; Matthew Harren, George Necula, and Eric Brewer}",
561 + title = "SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques",
562 + booktitle = "OSDI '06",
563 + address = {Seattle, WA},
564 + month = {November 6-8},
565 + year = {2006},
566 + note = "\url{http://ivy.cs.berkeley.edu/safedrive/}"
567 +}
568 +
569 +@InProceedings{symdrive,
570 + author = "{Matthew J. Renzelmann, Asim Kadav, and Michael M. Swift}",
571 + title = "SymDrive: Testing Drivers without Devices",
572 + booktitle = "OSDI '12",
573 + address = {Hollywood, CA},
574 + month = {October 8-10},
575 + year = {2012},
576 + note = "\url{http://research.cs.wisc.edu/sonar/projects/symdrive/index.shtml}"
577 +}
578 +
579 +@phdthesis{Reveillere:these2001,
580 + author = {R\'eveill\`ere, L.},
581 + title = {Approche langage au d\'eveloppement de pilotes de p\'eriph\'eriques robustes},
582 + school = {Universit{\'e} de Rennes~1, France},
583 + year = {2001},
584 + type = {Th\`{e}se de doctorat},
585 + month = {December},
586 + note = {\url{http://www.labri.fr/perso/reveille/publications/papers/reveillere-thesis.pdf}}
587 +}
588 +
589 +@inproceedings{Ryzhyk_CKSH_09,
590 + title = {Automatic Device Driver Synthesis with {Termite}},
591 + booktitle = {Proceedings of the 22\textsuperscript{nd} ACM Symposium on Operating Systems Principles},
592 + author = {Leonid Ryzhyk and Peter Chubb and Ihor Kuz and Le Sueur, Etienne and Gernot Heiser},
593 + year = {2009},
594 + month = {Oct},
595 + address = {Big Sky, MT, USA},
596 + note = {\url{http://ssrg.nicta.com.au/publications/papers/Ryzhyk_CKSH_09.pdf}}
597 +}
598 diff --git a/maintainers/latex/rathaxes.sty b/maintainers/latex/rathaxes.sty
599 --- a/maintainers/latex/rathaxes.sty
600 +++ b/maintainers/latex/rathaxes.sty
601 @@ -9,6 +9,7 @@
602 \RequirePackage{libertine}
603 \RequirePackage{inconsolata}
604 \RequirePackage{tabularx}
605 +\RequirePackage{natbib}
606 \RequirePackage[fixlanguage]{babelbib}
607 \expandafter\RequirePackage[\@rtxlanguage]{babel}
608
609 diff --git a/maintainers/latex/rtxslides.sty b/maintainers/latex/rtxslides.sty
610 --- a/maintainers/latex/rtxslides.sty
611 +++ b/maintainers/latex/rtxslides.sty
612 @@ -6,19 +6,31 @@
613 \RequirePackage{inconsolata}
614 \RequirePackage[utf8]{inputenc}
615 \RequirePackage[T1]{fontenc}
616 +\RequirePackage[fixlanguage]{babelbib}
617
618 \newcommand{\rtx}{Rathaxes}
619 +% Useful in tikz:
620 +\newcommand{\bgcolor}{black}
621 +\newcommand{\fgcolor}{white}
622 +\newcommand{\twitter}{\raisebox{-0.3ex}{\includegraphics[height=1em]{twitter-bird-dark-bgs}} \href{https://twitter.com/rathaxes}{@rathaxes}}
623
624 \definecolor{rathaxesred}{RGB}{190,36,31}
625 \setbeamercolor{normal text}{fg=white,bg=black}
626 \setbeamercolor{structure}{fg=rathaxesred}
627
628 -\DeclareOption{reverse}{\setbeamercolor{normal text}{fg=black,bg=white}}
629 +\DeclareOption{reverse}{
630 +\setbeamercolor{normal text}{fg=black,bg=white}
631 +\renewcommand{\bgcolor}{white}
632 +\renewcommand{\fgcolor}{black}
633 +\renewcommand{\twitter}{\raisebox{-0.3ex}{\includegraphics[height=1em]{twitter-bird-light-bgs}} \href{https://twitter.com/rathaxes}{@rathaxes}}
634 +}
635 \ProcessOptions\relax
636
637 \setbeamerfont{abstract}{family=\rmfamily,shape=\itshape}
638
639 \useoutertheme{infolines}
640 +\setbeamertemplate{navigation symbols}{}
641 +\setbeamertemplate{bibliography item}[text]
642
643 \addtobeamertemplate{title page}{%
644 \begin{center}%
645 @@ -27,3 +39,10 @@
646 \end{center}}{}
647
648 \graphicspath{{@RATHAXES_SOURCE_DIR@/com/images/}}
649 +
650 +\newcommand{\rtxbibliography}{%
651 +\bibliographystyle{abbrv}
652 +\scriptsize{
653 +\bibliography{@RATHAXES_SOURCE_DIR@/doc/bibliography}
654 +}
655 +}