.
This commit is contained in:
		
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +1,14 @@ | |||||||
| __pycache__/ | __pycache__/ | ||||||
| *.tar | *.tar | ||||||
| *.class | *.class | ||||||
|  | *.toc | ||||||
|  | *.synctex.gz | ||||||
|  | *.snm | ||||||
|  | *.out | ||||||
|  | *.aux | ||||||
|  | *.fbd_latexmk | ||||||
|  | *.fls | ||||||
|  | *.log | ||||||
|  | *.nav | ||||||
|  | *.fdb_latexmk | ||||||
|  | a.out | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								bac2/latex/beamer-umons
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								bac2/latex/beamer-umons
									
									
									
									
									
										Submodule
									
								
							 Submodule bac2/latex/beamer-umons added at 4eda91b637
									
								
							
							
								
								
									
										49
									
								
								bac2/latex/beamercolorthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								bac2/latex/beamercolorthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | % Copyright 2009 by C. Troestler <Christophe.Troestler@umons.ac.be> | ||||||
|  | % This file is under GNU GPL v3 or later. | ||||||
|  |  | ||||||
|  | \mode<presentation> | ||||||
|  |  | ||||||
|  | \definecolor{umons-red}{RGB}{168, 0, 57} | ||||||
|  | \definecolor{umons-turquoise}{RGB}{0, 171, 204} | ||||||
|  | \definecolor{umons-gray}{RGB}{150, 150, 150} | ||||||
|  |  | ||||||
|  | \setbeamercolor{alerted text}{fg=umons-red} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{palette primary}{fg=black, bg=umons-turquoise} | ||||||
|  | \setbeamercolor*{palette secondary}{fg=black, bg=umons-turquoise} | ||||||
|  | \setbeamercolor*{palette tertiary}{fg=umons-gray!30, bg=umons-red!80!black} | ||||||
|  | \setbeamercolor*{palette quaternary}{fg=black, bg=umons-gray!15} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{upper separation line head left}{parent=palette tertiary} | ||||||
|  | \setbeamercolor*{upper separation line head right}{parent=palette primary} | ||||||
|  | \setbeamercolor{title}{fg=umons-red} | ||||||
|  | %\setbeamercolor*{titlelike}{fg=umons-red} | ||||||
|  | \setbeamercolor{frametitle}{fg=umons-red, bg=white} | ||||||
|  | \setbeamercolor{frametitle right}{bg=yellow!60!orange} | ||||||
|  | \setbeamercolor{structure}{fg=umons-turquoise} | ||||||
|  |  | ||||||
|  | \setbeamercolor{block title}{fg=umons-turquoise, bg=umons-gray!30} | ||||||
|  | \setbeamercolor{block body}{fg=black, bg=umons-gray!15} | ||||||
|  | \setbeamercolor{block title example}{fg=black, bg=umons-gray!30} | ||||||
|  | \setbeamercolor{block body example}{fg=black, bg=umons-gray!15} | ||||||
|  | \setbeamercolor{block title alerted}{fg=white, bg=umons-red} | ||||||
|  | \setbeamercolor{block body alerted}{fg=black, bg=umons-red!10} | ||||||
|  |  | ||||||
|  | \setbeamercolor{itemize subitem}{fg=umons-gray} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | \setbeamercolor*{separation line}{} | ||||||
|  | \setbeamercolor*{fine separation line}{} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{sidebar}{fg=umons-red,bg=orange!75!white} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{sidebar}{fg=umons-red,bg=orange!75!white} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{palette sidebar primary}{fg=umons-red!10!black} | ||||||
|  | \setbeamercolor*{palette sidebar secondary}{fg=white} | ||||||
|  | \setbeamercolor*{palette sidebar tertiary}{fg=umons-red!50!black} | ||||||
|  | \setbeamercolor*{palette sidebar quaternary}{fg=yellow!10!orange} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | \mode | ||||||
|  | <all> | ||||||
							
								
								
									
										91
									
								
								bac2/latex/beamerouterthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								bac2/latex/beamerouterthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | |||||||
|  | % Based on the "infolines" outer theme. | ||||||
|  |  | ||||||
|  | \newif\ifbeamer@UMONS@navigation | ||||||
|  | \beamer@UMONS@navigationfalse | ||||||
|  |  | ||||||
|  | \DeclareOptionBeamer{navigation}[true]{% | ||||||
|  |   \csname beamer@UMONS@navigation#1\endcsname} | ||||||
|  |  | ||||||
|  | \newif\ifbeamer@UMONS@nosubsection | ||||||
|  | \beamer@UMONS@nosubsectionfalse | ||||||
|  | \DeclareOptionBeamer{no-subsection}[true]{% | ||||||
|  |   \csname beamer@UMONS@nosubsection#1\endcsname} | ||||||
|  |  | ||||||
|  | \newif\ifbeamer@UMONS@nototalframenumber | ||||||
|  | \beamer@UMONS@nototalframenumberfalse | ||||||
|  |  | ||||||
|  | \DeclareOptionBeamer{no-totalframenumber}[true]{% | ||||||
|  |   \csname beamer@UMONS@nototalframenumber#1\endcsname} | ||||||
|  |  | ||||||
|  | \ProcessOptionsBeamer | ||||||
|  |  | ||||||
|  |  | ||||||
|  | \mode<presentation> | ||||||
|  |  | ||||||
|  | \setbeamercolor*{author in head/foot}{parent=palette tertiary} | ||||||
|  | \setbeamercolor*{title in head/foot}{parent=palette secondary} | ||||||
|  | \setbeamercolor*{date in head/foot}{parent=palette primary} | ||||||
|  |  | ||||||
|  | \setbeamercolor*{section in head/foot}{parent=palette quaternary} | ||||||
|  | \setbeamercolor*{subsection in head/foot}{parent=palette primary} | ||||||
|  |  | ||||||
|  | \defbeamertemplate*{footline}{UMONS theme} | ||||||
|  | { | ||||||
|  |   \leavevmode% | ||||||
|  |   \hbox{% | ||||||
|  |   % Left box (author and institute) | ||||||
|  |   \begin{beamercolorbox}[wd=.25\paperwidth,ht=2.25ex,dp=1ex,center]{% | ||||||
|  |       author in head/foot}% | ||||||
|  |     \usebeamerfont{author in head/foot}% | ||||||
|  |     \insertshortauthor | ||||||
|  |     \beamer@ifempty{\insertshortinstitute}{}{~~\insertshortinstitute}% | ||||||
|  |   \end{beamercolorbox}% | ||||||
|  |   % Central box (presentation title) | ||||||
|  |   \begin{beamercolorbox}[wd=.52\paperwidth,ht=2.25ex,dp=1ex,center]{% | ||||||
|  |       title in head/foot}% | ||||||
|  |     \usebeamerfont{title in head/foot}\insertshorttitle | ||||||
|  |   \end{beamercolorbox}% | ||||||
|  |   % Right box (date and pages) | ||||||
|  |   \begin{beamercolorbox}[wd=.23\paperwidth,ht=2.25ex,dp=1ex,right]{% | ||||||
|  |       date in head/foot}% | ||||||
|  |     \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em} | ||||||
|  |     \insertframenumber | ||||||
|  |     \ifbeamer@UMONS@nototalframenumber\else ~/~\inserttotalframenumber\fi | ||||||
|  |     \hspace*{2ex} | ||||||
|  |   \end{beamercolorbox}}% | ||||||
|  |   \vskip0pt% | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \defbeamertemplate*{headline}{UMONS theme} | ||||||
|  | { | ||||||
|  |   \leavevmode% | ||||||
|  |   \hbox{% | ||||||
|  |     \begin{beamercolorbox}[wd=.25\paperwidth,ht=1ex,dp=0ex]{% | ||||||
|  |         upper separation line head left}% | ||||||
|  |     \end{beamercolorbox}% | ||||||
|  |     \begin{beamercolorbox}[wd=.75\paperwidth,ht=1ex,dp=0ex]{% | ||||||
|  |         upper separation line head right}% | ||||||
|  |     \end{beamercolorbox}}% | ||||||
|  |   \vskip0pt | ||||||
|  |   \ifbeamer@UMONS@navigation | ||||||
|  |   \begin{beamercolorbox}[colsep=1.5pt]{upper separation line head} | ||||||
|  |   \end{beamercolorbox}% | ||||||
|  |   % Box for section titles and possibly subtitles (for fast navigation) | ||||||
|  |   \begin{beamercolorbox}{section in head/foot} | ||||||
|  |     \ifbeamer@UMONS@nosubsection | ||||||
|  |     \insertsectionnavigationhorizontal{\paperwidth}{% | ||||||
|  |       \vspace*{2pt}}{\vspace*{2pt}}% | ||||||
|  |     \else | ||||||
|  |     \vspace*{2pt}\insertnavigation{\paperwidth}\vspace*{2pt}% | ||||||
|  |     \fi | ||||||
|  |   \end{beamercolorbox}% | ||||||
|  |   \begin{beamercolorbox}[colsep=1.5pt]{lower separation line head} | ||||||
|  |   \end{beamercolorbox}% | ||||||
|  |   \fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | \setbeamertemplate{mini frames}[box] | ||||||
|  | \setbeamersize{text margin left=1em,text margin right=1em} | ||||||
|  |  | ||||||
|  | \mode | ||||||
|  | <all> | ||||||
							
								
								
									
										30
									
								
								bac2/latex/beamerthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								bac2/latex/beamerthemeUMONS.sty
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | % Copyright 2009 by C. Troestler <Christophe.Troestler@umons.ac.be> | ||||||
|  | % This file is under GNU GPL v3 or later. | ||||||
|  |  | ||||||
|  | \mode<presentation> | ||||||
|  |  | ||||||
|  | % Display a navigation bar | ||||||
|  | \def\beamer@themeUMONS@navigation{false} | ||||||
|  | \DeclareOptionBeamer{navigation}[true]{% | ||||||
|  |   \def\beamer@themeUMONS@navigation{#1}} | ||||||
|  |  | ||||||
|  | % Do not display "boxes" to go to subsections in the navigation bar. | ||||||
|  | \def\beamer@themeUMONS@nosubsection{false} | ||||||
|  | \DeclareOptionBeamer{no-subsection}[true]{% | ||||||
|  |   \def\beamer@themeUMONS@nosubsection{#1}} | ||||||
|  |  | ||||||
|  | % Do not display the total number of pages. | ||||||
|  | \def\beamer@themeUMONS@nototalframenumber{false} | ||||||
|  | \DeclareOptionBeamer{no-totalframenumber}[true]{% | ||||||
|  |   \def\beamer@themeUMONS@nototalframenumber{#1}} | ||||||
|  |  | ||||||
|  | \ProcessOptionsBeamer | ||||||
|  |  | ||||||
|  | \useinnertheme{rectangles} | ||||||
|  | \usecolortheme{UMONS} | ||||||
|  | \useoutertheme[navigation=\beamer@themeUMONS@navigation, | ||||||
|  |                no-subsection=\beamer@themeUMONS@nosubsection, | ||||||
|  |                no-totalframenumber=\beamer@themeUMONS@nototalframenumber]{UMONS} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | \mode<all> | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/latex/lesson3.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/latex/lesson3.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										81
									
								
								bac2/latex/lesson3.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								bac2/latex/lesson3.tex
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | |||||||
|  | \documentclass{beamer} | ||||||
|  |  | ||||||
|  | \usepackage{tikz} | ||||||
|  | \usepackage[utf8]{inputenc} | ||||||
|  | \usepackage[T1]{fontenc} | ||||||
|  | \usepackage[french]{babel} | ||||||
|  | \usepackage{amsmath, amsfonts, amssymb, amsthm} | ||||||
|  |  | ||||||
|  | \usetheme{Umons} | ||||||
|  |  | ||||||
|  | \title{Un petit exemple de Beamer} | ||||||
|  | \author{Debucquoy Anthony} | ||||||
|  | \institute{Universit\'e de Mons} | ||||||
|  |  | ||||||
|  | \section{Figure} | ||||||
|  | \section{Formules math\'ematiques disponibles} | ||||||
|  | \section{Sur deux colonnes} | ||||||
|  |  | ||||||
|  | \begin{document} | ||||||
|  |  | ||||||
|  | \begin{frame}[t] | ||||||
|  | 	\maketitle | ||||||
|  | \end{frame} | ||||||
|  |  | ||||||
|  | \begin{frame}[t] | ||||||
|  | 	\frametitle{Table des mati\'eres} | ||||||
|  | 	\tableofcontents | ||||||
|  | \end{frame} | ||||||
|  |  | ||||||
|  | \begin{frame}[t] | ||||||
|  | 	\frametitle{Pentagone} | ||||||
|  | 	\framesubtitle{Un pentagone est un polygone \`a cinq sommets et cinq cot\'es.} | ||||||
|  | 	\begin{block}{Pentagone r\'egulier} | ||||||
|  | 		Un pentagone r\'egulier est un pentagone dont tous les cot\'es sont de m\^eme longeur et dont tous les angles internes valent 108 degr\'es. | ||||||
|  | 	\end{block} | ||||||
|  |  | ||||||
|  | 	\begin{block}{Construction d'un pentagone r\'egulier avec Tikz} | ||||||
|  | 		On demande: | ||||||
|  | 		\begin{itemize} | ||||||
|  | 			\item que les cot\'es du pentagone mesurent 1.5 centim\`etre | ||||||
|  | 			\item Que le pentagone soit colori\'e en gris | ||||||
|  | 				\begin{center} | ||||||
|  | 				\begin{tikzpicture}[scale=1, transform shape] | ||||||
|  | 					\fill[gray] (0*360/5:1) -- (1*360/5:1) -- (2*360/5:1) -- (3*360/5:1) -- (4*360/5:1) -- cycle; | ||||||
|  | 					\draw (0*360/5:1) -- (1*360/5:1) -- (2*360/5:1) -- (3*360/5:1) -- (4*360/5:1) -- cycle; | ||||||
|  | 				\end{tikzpicture} | ||||||
|  | 				\end{center} | ||||||
|  | 		\end{itemize} | ||||||
|  | 	\end{block} | ||||||
|  | \end{frame} | ||||||
|  |  | ||||||
|  | \begin{frame}[t] | ||||||
|  | 	\frametitle{Formules math\'ematiques disponibles dans TikZ} | ||||||
|  | 	Les op\'erations | ||||||
|  | 	\begin{itemize} | ||||||
|  | 		\item Operations de base : $ x + y, x - y, x * y, x / y, x^y$ | ||||||
|  | 		\item Modulo, maxmum, minimum: $\mod(x,y), \max(x,y) \min(x,y)$ | ||||||
|  | 	\end{itemize} | ||||||
|  | 	Les fonctions | ||||||
|  | 	\begin{enumerate} | ||||||
|  | 		\item $abs(x), exp(x), ln(x), sqrt(x)$ | ||||||
|  | 		\item Arrondi, partie enti\'ere, partie enti\'ere sup\'erieure : round(x), floor(x), ceil(x). | ||||||
|  | 	\end{enumerate} | ||||||
|  | 	\begin{itemize} | ||||||
|  | 		\item sin(x), cos(x), tan(x), cot(x), sec(x), cosec(x) | ||||||
|  | 	\end{itemize} | ||||||
|  | \end{frame} | ||||||
|  |  | ||||||
|  | \begin{frame}[t] | ||||||
|  | 	\frametitle{Une int\'egrale} | ||||||
|  | 	On a que  | ||||||
|  | 	\[ \int^2_1 \frac{1}{x} dx = \ln2 \] | ||||||
|  | 	La valeur $\ln2$ repr\'esente donc l'aire gris\'ee sur le graphe suivant. | ||||||
|  | 	\begin{center} | ||||||
|  | 	\begin{tikzpicture}[scale=1, transform shape] | ||||||
|  | 		\plot{ln x} | ||||||
|  | 	\end{tikzpicture} | ||||||
|  | 	\end{center} | ||||||
|  | \end{frame} | ||||||
|  |  | ||||||
|  | \end{document} | ||||||
| @ -1,5 +1,7 @@ | |||||||
| #!/bin/sh | #!/bin/sh | ||||||
|  |  | ||||||
|  | set -xe | ||||||
|  |  | ||||||
| for i in $(ls *.c); do | for i in $(ls *.c); do | ||||||
| 	gcc $i -o $(echo $i | cut -d '.' -f 1) | 	gcc $i -o $(echo $i | cut -d '.' -f 1) | ||||||
| done | done | ||||||
|  | |||||||
| @ -19,9 +19,16 @@ void handler(int sig, siginfo_t* info, void* context) { | |||||||
| } | } | ||||||
|  |  | ||||||
| int main(int argc, char *argv[]){ | int main(int argc, char *argv[]){ | ||||||
|  |  | ||||||
| 	SIGS context = {.sa_flags = SA_SIGINFO, .sa_sigaction = handler}; | 	SIGS context = {.sa_flags = SA_SIGINFO, .sa_sigaction = handler}; | ||||||
| 	while(1) | 	sigaction(SIGUSR1, &context, NULL); | ||||||
| 		pause(); | 	sigaction(SIGUSR2, &context, NULL); | ||||||
|  |  | ||||||
|  | 	while(1){ | ||||||
|  | 		printf("The program is running...\n"); | ||||||
|  | 		sleep(1); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										33
									
								
								bac2/os/chap1/ex2.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								bac2/os/chap1/ex2.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | #include <signal.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <unistd.h> | ||||||
|  |  | ||||||
|  | typedef struct sigaction SIGS; | ||||||
|  |  | ||||||
|  | uint8_t kill_counter = 0; | ||||||
|  | const char* sentences[] = { | ||||||
|  | 	"Just give me a moment.", | ||||||
|  | 	"I said I need a moment!", | ||||||
|  | 	"Fine. I'm out of here....", | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | void handler(int sig, siginfo_t* info, void* context) { | ||||||
|  | 	printf("%s\n", sentences[kill_counter++]); | ||||||
|  | 	if(kill_counter >= 3) | ||||||
|  | 		abort(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	SIGS event = { | ||||||
|  | 		.sa_sigaction = handler, | ||||||
|  | 		.sa_flags = SA_SIGINFO | ||||||
|  | 	}; | ||||||
|  | 	sigaction(SIGINT, &event, NULL); | ||||||
|  | 	while(1) | ||||||
|  | 		pause(); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										38
									
								
								bac2/os/chap1/ex3.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								bac2/os/chap1/ex3.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | |||||||
|  | #include <stdint.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <signal.h> | ||||||
|  | #include <unistd.h> | ||||||
|  |  | ||||||
|  | int counter=1; | ||||||
|  |  | ||||||
|  | void handler(int sig){ | ||||||
|  | 	if(sig == SIGINT){ | ||||||
|  | 		printf("Early ending. the current ammount of application is : %d\n", counter); | ||||||
|  | 		exit(0); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int collatz(int n){ | ||||||
|  | 	sleep(1); | ||||||
|  | 	if (n % 2 == 0) | ||||||
|  | 		return n / 2; | ||||||
|  | 	return 3 * n  + 1; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | {	 | ||||||
|  | 	signal(SIGINT, handler); | ||||||
|  | 	if (argc != 2) | ||||||
|  | 		exit(1); | ||||||
|  | 	int test = atoi(argv[1]); | ||||||
|  | 	printf("%d\n", test); | ||||||
|  | 	while(test != 1){ | ||||||
|  | 		counter++; | ||||||
|  | 		test = collatz(test); | ||||||
|  | 		printf("%d\n", test); | ||||||
|  | 	} | ||||||
|  | 	printf("---\n%d\n", counter); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								bac2/os/chap1/ex4.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								bac2/os/chap1/ex4.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | #include <signal.h> | ||||||
|  | #include <stdio.h> | ||||||
|  |  | ||||||
|  | typedef struct sigaction SIGS; | ||||||
|  |  | ||||||
|  | void handler(int sig, siginfo_t* info, void* context){ | ||||||
|  | 	if(sig == SIGFPE){ | ||||||
|  | 		printf("Division par zero... rip in peperoni...\n"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	SIGS event = { | ||||||
|  | 		.sa_flags = SA_SIGINFO, | ||||||
|  | 		.sa_sigaction = handler	 | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	sigaction(SIGFPE, &event, NULL); | ||||||
|  |  | ||||||
|  | 	printf("I want to break free... \n"); | ||||||
|  | 	printf("%d\n", 1/0); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								bac2/os/chap1/ex5.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								bac2/os/chap1/ex5.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | #include <signal.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <unistd.h> | ||||||
|  |  | ||||||
|  | void handler(int sig){ | ||||||
|  | 	if(sig == SIGINT) | ||||||
|  | 		while(1) | ||||||
|  | 			printf("I cannot DIE !!!!\n"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	signal(SIGINT, handler); | ||||||
|  | 	signal(SIGQUIT, handler); | ||||||
|  | 	signal(SIGTERM, handler); | ||||||
|  | 	while(1) | ||||||
|  | 		pause(); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								bac2/os/chap1/ex6.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								bac2/os/chap1/ex6.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | #include <signal.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <unistd.h> | ||||||
|  |  | ||||||
|  | void handler(int sig){ | ||||||
|  | 	printf("test"); | ||||||
|  | 	exit(0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	signal(SIGALRM, handler); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	alarm(5); | ||||||
|  | 	 | ||||||
|  | 	getchar(); | ||||||
|  | 	printf("finished without a thing"); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										50
									
								
								bac2/os/chap1/group.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								bac2/os/chap1/group.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | #include <signal.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | #include <termios.h> | ||||||
|  | #include <assert.h> | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
|  | struct { | ||||||
|  | 	int index; | ||||||
|  | 	char tab[1024]; | ||||||
|  | } buf = {0}; | ||||||
|  |  | ||||||
|  | struct termios term, previous; // the previous state has to be restored... if not the term stay in that mode | ||||||
|  |  | ||||||
|  | void handler(int sig){ | ||||||
|  | 	switch (sig) { | ||||||
|  | 		case SIGALRM: | ||||||
|  | 			for (int i = 0; i < buf.index; ++i) { | ||||||
|  | 				if(!buf.tab[i]) | ||||||
|  | 					continue; | ||||||
|  | 				printf("%c", buf.tab[i] + 'A' - 'a'); | ||||||
|  | 			} | ||||||
|  | 			alarm(5); | ||||||
|  | 			break; | ||||||
|  | 		default: | ||||||
|  | 			tcsetattr(STDIN_FILENO, TCSANOW, &previous); | ||||||
|  | 			raise(sig); | ||||||
|  | 			assert(1); | ||||||
|  | 			break; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  | 	signal(SIGALRM, handler); | ||||||
|  | 	signal(SIGINT, handler); | ||||||
|  |  | ||||||
|  | 	tcgetattr(STDIN_FILENO, &previous); | ||||||
|  |     memcpy(&term, &previous, sizeof(struct termios)); | ||||||
|  | 	term.c_lflag &= ~ICANON; | ||||||
|  | 	tcsetattr(STDIN_FILENO, TCSANOW, &term); | ||||||
|  |  | ||||||
|  | 	alarm(5); | ||||||
|  | 	 | ||||||
|  | 	while(1){ | ||||||
|  | 		buf.tab[buf.index++] = getchar(); | ||||||
|  | 	} | ||||||
|  | 	assert(1); | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								bac2/os/chap2/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								bac2/os/chap2/Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | .PHONY: clean, mrproper | ||||||
|  | CC = gcc | ||||||
|  | CFLAGS = -g -Wall | ||||||
|  |  | ||||||
|  | all: ex3 ex4 | ||||||
|  |  | ||||||
|  | %.o: %.c | ||||||
|  | 	$(CC) $(CFLAGS) -c -o $@ $< | ||||||
|  |  | ||||||
|  | ex3: ex3.o | ||||||
|  | 	$(CC) $(CFLAGS) -o $@ $+ | ||||||
|  |  | ||||||
|  | ex4: ex4.o | ||||||
|  | 	$(CC) $(CFLAGS) -o $@ $+ | ||||||
|  |  | ||||||
|  | ex5: ex5.o | ||||||
|  | 	$(CC) $(CFLAGS) -o $@ $+ | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -f *.o core.* | ||||||
|  |  | ||||||
|  | mrproper: clean | ||||||
|  | 	rm -f ex3 ex4 ex5 | ||||||
|  |  | ||||||
|  | run: ex5 | ||||||
|  | 	./ex5 | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/chapitre2-memoire.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/chapitre2-memoire.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										14
									
								
								bac2/os/chap2/ex1.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								bac2/os/chap2/ex1.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  |  | ||||||
|  | #define TEST_SIZE 100 | ||||||
|  |  | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  | 	char* blop[TEST_SIZE]; | ||||||
|  | 	for (int i = 0; i < TEST_SIZE; ++i) { | ||||||
|  | 		blop[i] = malloc(sizeof(char)); | ||||||
|  | 		printf("%p\n", blop[i]); | ||||||
|  | 	} | ||||||
|  | 	while(1); | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								bac2/os/chap2/ex2.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								bac2/os/chap2/ex2.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
|  | char* expand_tabs(const char* string); | ||||||
|  |  | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  | 	const char* str = "This is a text	This is another one. ' ' <- space; '	' <-tab"; | ||||||
|  | 	printf("%s - %d\n", str, (int)strlen(str)); | ||||||
|  | 	printf("%s - %d\n", expand_tabs(str),(int) strlen(expand_tabs(str))); | ||||||
|  | 	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | char* expand_tabs(const char* string){ | ||||||
|  | 	int tab_count = 0, letter_count = 0; | ||||||
|  | 	for(int i = 0; string[i] != '\0'; i++){ | ||||||
|  | 		letter_count++; | ||||||
|  | 		if(string[i] == '\t') | ||||||
|  | 			tab_count++; | ||||||
|  | 	} | ||||||
|  | 	char* ret = malloc(sizeof(char) * letter_count + 3*tab_count); | ||||||
|  | 	char* filler = ret; | ||||||
|  | 	for(int i = 0; string[i] != '\0'; i++){ | ||||||
|  | 		if(string[i] == '\t'){ | ||||||
|  | 			for (int j = 0; j < 4; ++j) { | ||||||
|  | 				*(filler++) = ' '; | ||||||
|  | 			} | ||||||
|  | 		}else{ | ||||||
|  | 			*(filler++) = string[i]; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/ex3
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/ex3
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										62
									
								
								bac2/os/chap2/ex3.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								bac2/os/chap2/ex3.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | |||||||
|  | #include <stdlib.h> | ||||||
|  | #include <stdio.h> | ||||||
|  |  | ||||||
|  | #define print_vec(vec) for (int i = 0; i < (vec)->size; ++i) { printf("%d, ", (vec)->data[i]); } printf("\n") | ||||||
|  |  | ||||||
|  | struct vec { | ||||||
|  | 	int size; | ||||||
|  | 	int *data; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct vec* new(unsigned int n); | ||||||
|  | struct vec* add(const struct vec *v, const struct vec *w); | ||||||
|  | struct vec* smul(double s, const struct vec *v); | ||||||
|  |  | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  | 	struct vec *v = new(4); | ||||||
|  | 	v->data[0] = 1; | ||||||
|  | 	v->data[1] = 2; | ||||||
|  | 	v->data[2] = 3; | ||||||
|  | 	v->data[3] = 4; | ||||||
|  | 	print_vec(v); | ||||||
|  |  | ||||||
|  | 	struct vec *w = new(4); | ||||||
|  | 	w->data[0] = 5; | ||||||
|  | 	w->data[1] = 6; | ||||||
|  | 	w->data[2] = 7; | ||||||
|  | 	w->data[3] = 8; | ||||||
|  | 	print_vec(w); | ||||||
|  |  | ||||||
|  | 	struct vec *added = add(v, w); | ||||||
|  | 	print_vec(added); | ||||||
|  |  | ||||||
|  | 	struct vec *multiplied = smul(3, v); | ||||||
|  | 	print_vec(multiplied); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | struct vec* new(unsigned int n){ | ||||||
|  | 	struct vec* ret = malloc(sizeof(struct vec)); | ||||||
|  | 	ret->size = n; | ||||||
|  | 	ret->data = malloc(sizeof(int) * n); | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct vec* add(const struct vec *v, const struct vec *w){ | ||||||
|  | 	if(v->size != w->size) | ||||||
|  | 		return NULL; | ||||||
|  | 	struct vec *ret = new(v->size); | ||||||
|  | 	for (int i = 0; i < v->size; ++i) { | ||||||
|  | 		ret->data[i] = v->data[i] + w->data[i]; | ||||||
|  | 	} | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  | struct vec* smul(double s, const struct vec *v){ | ||||||
|  | 	struct vec *ret = new(v->size); | ||||||
|  | 	for (int i = 0; i < v->size; ++i) { | ||||||
|  | 		ret->data[i] = v->data[i] * s; | ||||||
|  | 	} | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/ex3.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/ex3.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/ex4
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/ex4
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										61
									
								
								bac2/os/chap2/ex4.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								bac2/os/chap2/ex4.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | |||||||
|  | #include <inttypes.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  |  | ||||||
|  | #define AT(mat, x, y) ((mat)->data[((x)-1) + ( ((y)-1) * ((mat)->w) )]) | ||||||
|  |  | ||||||
|  | #define PRINT_MAT(mat) for (int i = 1; i <= (mat)->h; ++i) { for (int j = 1; j <= (mat)->w; ++j) { printf("%d,", AT((mat),(j), (i))); } printf("\n"); } printf("\n"); | ||||||
|  |  | ||||||
|  | typedef struct { | ||||||
|  | 	uint8_t w, h; | ||||||
|  | 	int *data; | ||||||
|  | } MAT; | ||||||
|  |  | ||||||
|  | MAT *new(uint8_t, uint8_t); | ||||||
|  | MAT *mul(MAT*, MAT*); | ||||||
|  |  | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  | 	MAT* a = new(3, 2); | ||||||
|  | 	MAT* b = new(3, 3); | ||||||
|  | 	MAT* mult; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	AT(a, 1, 1) = 0; AT(a, 2, 1) = 1; AT(a, 3, 1) = 2; | ||||||
|  | 	AT(a, 1, 2) = 3; AT(a, 2, 2) = 4; AT(a, 3, 2) = 5; | ||||||
|  | 	/* AT(a, 1, 3) = 6; AT(a, 2, 3) = 7; AT(a, 3, 3) = 8; */ | ||||||
|  | 	PRINT_MAT(a); | ||||||
|  |  | ||||||
|  | 	AT(b, 1, 1) = 1; AT(b, 2, 1) = 0; AT(b, 3, 1) = 0; | ||||||
|  | 	AT(b, 1, 2) = 0; AT(b, 2, 2) = 1; AT(b, 3, 2) = 0; | ||||||
|  | 	AT(b, 1, 3) = 0; AT(b, 2, 3) = 0; AT(b, 3, 3) = 1; | ||||||
|  | 	PRINT_MAT(b); | ||||||
|  |  | ||||||
|  | 	mult = mul(a,b); | ||||||
|  | 	PRINT_MAT(mult); | ||||||
|  | 	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | MAT *new(uint8_t w, uint8_t h){ | ||||||
|  | 	MAT* ret = malloc(sizeof(MAT)); | ||||||
|  | 	ret->w = w;  | ||||||
|  | 	ret->h = h;  | ||||||
|  | 	ret->data = malloc(sizeof(int) * w * h); | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | MAT *mul(MAT *a, MAT *b){ | ||||||
|  | 	if(a->w != b->h) | ||||||
|  | 		return NULL; | ||||||
|  | 	MAT* ret = new(b->w, a->h); | ||||||
|  | 	for (int i = 1; i <= a->h; ++i) { | ||||||
|  | 		for (int j = 1; j <= b->w; ++j) { | ||||||
|  | 			int tmp = 0; | ||||||
|  | 			for (int k = 1; k <= a->w; ++k) { | ||||||
|  | 				tmp += AT(a, k, i) * AT(b, j, k); | ||||||
|  | 			} | ||||||
|  | 			AT(ret, j, i) = tmp; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/ex4.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/ex4.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								bac2/os/chap2/ex5.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								bac2/os/chap2/ex5.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | #include <stdlib.h> | ||||||
|  | #include <stdio.h> | ||||||
|  |  | ||||||
|  | struct node{ | ||||||
|  | 	struct node* prev; | ||||||
|  | 	void* data; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | typedef struct node* LIFO;  | ||||||
|  |  | ||||||
|  | LIFO* mklifo (); | ||||||
|  | void push(LIFO* lst , void*); | ||||||
|  | void* pop(LIFO* lst); | ||||||
|  |  | ||||||
|  | int main(void) | ||||||
|  | { | ||||||
|  | 	char* t = "test"; | ||||||
|  | 	LIFO* lifo = mklifo(); | ||||||
|  | 	push(lifo, t); | ||||||
|  | 	printf("%s", (char *)pop(lifo)); | ||||||
|  | 	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | LIFO *mklifo (){ | ||||||
|  | 	LIFO* ret = malloc(sizeof(struct node)); | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void push(LIFO *lst , void *el){ | ||||||
|  | 	LIFO* next = mklifo(); | ||||||
|  | 	(*lst)->data = el; | ||||||
|  | 	(*next)->prev = *lst; | ||||||
|  | 	lst = next; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void *pop(LIFO *lst){ | ||||||
|  | 	void* el; | ||||||
|  | 	(*lst)->data = el; | ||||||
|  | 	*lst = (*lst)->prev; | ||||||
|  | 	return el; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								bac2/os/chap2/ex5.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bac2/os/chap2/ex5.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user