commit 996c665cfd19d3eb89fd56d66619bedf2d2d734f Author: glenux Date: Mon Feb 16 21:25:11 2004 +0000 Initial revision diff --git a/.ssh-agent b/.ssh-agent new file mode 100644 index 0000000..dbd0efd --- /dev/null +++ b/.ssh-agent @@ -0,0 +1,3 @@ +SSH_AUTH_SOCK=/tmp/ssh-QHib2992/agent.2992; export SSH_AUTH_SOCK; +SSH_AGENT_PID=2993; export SSH_AGENT_PID; +echo Agent pid 2993; diff --git a/HEADER b/HEADER new file mode 100644 index 0000000..6ebf63f --- /dev/null +++ b/HEADER @@ -0,0 +1,23 @@ +#-------------------------------------------------------------------% +# +# LIBNAZGUL : Library +# +#-------------------------------------------------------------------% +# +# IUP GMI 2, Module de Système. 2003-2004. +# Cours de J-M. Rifflet. +# +#-------------------------------------------------------------------% +# +# Projet de : +# Glenn ROLLAND, +# Sebastian SCHAWOHL, +# Rivka ZANA +# +# pour plus de détails au sujet du projet, voir le +# fichier README +# +# pour la compilation et execution du projet, veuillez +# vous référer au fichier INSTALL +# +#-------------------------------------------------------------------% diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..18f075a --- /dev/null +++ b/INSTALL @@ -0,0 +1,17 @@ + +1) Compilation du projet + + Pour compiler le projet, taper + + make + +2) Execution + + Pour l'executer + + cd src + make run + +ATTENTION: Il faut que java et javac soient installés sur votre +machine, et que toutes les librairies (SWING, AWT, etc..) dont +dépend le programme soient présentes. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b1a7ebd --- /dev/null +++ b/LICENSE @@ -0,0 +1,342 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a7d3555 --- /dev/null +++ b/Makefile @@ -0,0 +1,54 @@ +### Make file du projet Janat +### HEADER HERE +### + +PRJNAME=Libnazgul +GDATE:= $(shell date +"%Y-%m-%d_r%H%M") +GFILENAME:= $(PRJNAME)-$(GDATE).tar.bz2 +PATH_GFILENAME:= ../$(GFILENAME) +GFILESIZE:= +LOCALDIR=$(shell pwd) +LASTONSERVER = $(shell ssh glenux.ath.cx -l warbrain "ls -rt ~/Projet/Archives/$(PRJNAME)* | tail -n 1") +#MAILS=warbrain@glenux.ath.cx +#MAILS=glenuxian@airpost.net rolland@dptmaths.ens-cachan.fr el_shogun@netcourrier.com rolandgl@ufr-info-p7.jussieu.fr +WGET=wget -P lib/ + +all: subdir + +run: + ( cd src/ ; \ + $(MAKE) run ) + +subdir: + ( cd src/ ; \ + $(MAKE) ) + +doc: + ( cd src/ ; \ + $(MAKE) doc ) + +clean: + $(MAKE) clean -C src/ + @rm -f *.class *~ + +package: clean createpackage sendtoarchives + +#mail: clean createpackage sendpackage sendtoarchives + +createpackage: + mv lib ../lib$(GDATE) + tar -cjvf $(PATH_GFILENAME) -C ../ $(PRJNAME) + mv ../lib$(GDATE) lib + +sendtoarchives: + mv $(PATH_GFILENAME) ../Archives + +#sendpackage: +# (echo -e "\nCi joint le fichier:\n$(shell du -sh $(PATH_GFILENAME))" \ +# && echo -e "\nPour décompresser:" \ +# && echo -e "\n\ttar -xjvf $(GFILENAME)\n" \ +# && echo -e "\n(n'oubliez pas de supprimer l'ancien répertoire du même nom avant de décompresser)" \ +# && echo -e "\n\nHistorique des modifications :\n" \ +# && cat CHANGELOG ) \ +# | mutt $(MAILS) -a $(PATH_GFILENAME) -s "[$(PRJNAME)] $(GDATE)" + diff --git a/NOTES b/NOTES new file mode 100644 index 0000000..fa6290f --- /dev/null +++ b/NOTES @@ -0,0 +1,5 @@ +aller voir du coté des classes: +- GeneralPath +- QuadCurves2D +- ... + diff --git a/README b/README new file mode 100644 index 0000000..5436136 --- /dev/null +++ b/README @@ -0,0 +1,8 @@ + +Un readme qui explique le fonctionnement du projet + +INTERFACE +~~~~~~~~~ + +blabla + diff --git a/doc/enonce.ps b/doc/enonce.ps new file mode 100644 index 0000000..4db937f --- /dev/null +++ b/doc/enonce.ps @@ -0,0 +1,1100 @@ +%!PS-Adobe-2.0 +%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software +%%Title: projet.dvi +%%Pages: 5 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%EndComments +%DVIPSCommandLine: dvips projet.dvi -o projet.ps +%DVIPSParameters: dpi=300, compressed, comments removed +%DVIPSSource: TeX output 2003.11.17:0455 +%%BeginProcSet: texc.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get +round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ +statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 +0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn +begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X +array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo +setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx +FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ +pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} +B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup +length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B +/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp +0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 +index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff +ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice +ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id +ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{ +rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get +/gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp +X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X +adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup +255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv} +B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv +S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string +putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval +adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} +{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ +adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 +chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] +}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup +length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ +cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul +add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage +userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for +65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 +0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V +{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 +getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} +ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley +false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley +scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave +transform round exch round exch itransform moveto rulex 0 rlineto 0 +ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta +0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} +B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ +3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p +-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ +3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +%%BeginProcSet: special.pro +TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N +/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen +false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B +/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit +div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ +/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ +10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B +/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale +true def end /@MacSetUp{userdict /md known{userdict /md get type +/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup +length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} +N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath +clippath mark{transform{itransform moveto}}{transform{itransform lineto} +}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ +itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ +closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 +0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N +/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 +scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get +ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip +not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 +TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR +pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 +-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg +TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg +sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr +0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add +2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp +{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 +div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} +N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict +maxlength dict begin /magscale true def normalscale currentpoint TR +/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts +/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx +psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy +scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR +/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict +begin /SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial +{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath +}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ +end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} +N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ +/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX +SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X +/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad +yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end +%%EndProcSet +%%BeginProcSet: color.pro +TeXDict begin /setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse /TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def /TeXcolorgrey{setgray}def /TeXcolorgray{ +setgray}def /TeXcolorhsb{sethsbcolor}def /currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse /DC{exch dup userdict exch +known{pop pop}{X}ifelse}B /GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC /Goldenrod{0 0.10 0.84 0 setcmykcolor} +DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC /Apricot{0 0.32 0.52 0 +setcmykcolor}DC /Peach{0 0.50 0.70 0 setcmykcolor}DC /Melon{0 0.46 0.50 +0 setcmykcolor}DC /YellowOrange{0 0.42 1 0 setcmykcolor}DC /Orange{0 +0.61 0.87 0 setcmykcolor}DC /BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC /RedOrange{0 0.77 0.87 0 +setcmykcolor}DC /Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC /Maroon{0 +0.87 0.68 0.32 setcmykcolor}DC /BrickRed{0 0.89 0.94 0.28 setcmykcolor} +DC /Red{0 1 1 0 setcmykcolor}DC /OrangeRed{0 1 0.50 0 setcmykcolor}DC +/RubineRed{0 1 0.13 0 setcmykcolor}DC /WildStrawberry{0 0.96 0.39 0 +setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC /CarnationPink{0 +0.63 0 0 setcmykcolor}DC /Magenta{0 1 0 0 setcmykcolor}DC /VioletRed{0 +0.81 0 0 setcmykcolor}DC /Rhodamine{0 0.82 0 0 setcmykcolor}DC /Mulberry +{0.34 0.90 0 0.02 setcmykcolor}DC /RedViolet{0.07 0.90 0 0.34 +setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC /Lavender{0 +0.48 0 0 setcmykcolor}DC /Thistle{0.12 0.59 0 0 setcmykcolor}DC /Orchid{ +0.32 0.64 0 0 setcmykcolor}DC /DarkOrchid{0.40 0.80 0.20 0 setcmykcolor} +DC /Purple{0.45 0.86 0 0 setcmykcolor}DC /Plum{0.50 1 0 0 setcmykcolor} +DC /Violet{0.79 0.88 0 0 setcmykcolor}DC /RoyalPurple{0.75 0.90 0 0 +setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC /Periwinkle +{0.57 0.55 0 0 setcmykcolor}DC /CadetBlue{0.62 0.57 0.23 0 setcmykcolor} +DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC /MidnightBlue{0.98 0.13 +0 0.43 setcmykcolor}DC /NavyBlue{0.94 0.54 0 0 setcmykcolor}DC +/RoyalBlue{1 0.50 0 0 setcmykcolor}DC /Blue{1 1 0 0 setcmykcolor}DC +/Cerulean{0.94 0.11 0 0 setcmykcolor}DC /Cyan{1 0 0 0 setcmykcolor}DC +/ProcessBlue{0.96 0 0 0 setcmykcolor}DC /SkyBlue{0.62 0 0.12 0 +setcmykcolor}DC /Turquoise{0.85 0 0.20 0 setcmykcolor}DC /TealBlue{0.86 +0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC +/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC /Emerald{1 0 0.50 0 +setcmykcolor}DC /JungleGreen{0.99 0 0.52 0 setcmykcolor}DC /SeaGreen{ +0.69 0 0.50 0 setcmykcolor}DC /Green{1 0 1 0 setcmykcolor}DC +/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 +0.25 setcmykcolor}DC /LimeGreen{0.50 0 1 0 setcmykcolor}DC /YellowGreen{ +0.44 0 0.74 0 setcmykcolor}DC /SpringGreen{0.26 0 0.76 0 setcmykcolor} +DC /OliveGreen{0.64 0 0.95 0.40 setcmykcolor}DC /RawSienna{0 0.72 1 0.45 +setcmykcolor}DC /Sepia{0 0.83 1 0.70 setcmykcolor}DC /Brown{0 0.81 1 +0.60 setcmykcolor}DC /Tan{0.14 0.42 0.56 0 setcmykcolor}DC /Gray{0 0 0 +0.50 setcmykcolor}DC /Black{0 0 0 1 setcmykcolor}DC /White{0 0 0 0 +setcmykcolor}DC end +%%EndProcSet +TeXDict begin @defspecial + + TeXDict begin /box{newpath 2 copy moveto 3 copy pop exch lineto 4 +copy pop pop lineto 4 copy exch pop exch pop lineto closepath } bind +def /min{ 2 copy gt { exch } if pop } bind def/max{ 2 copy lt { exch +} if pop } bind def/roundedbox{/radius exch store 3 2 roll 2 copy min +radius sub /miny exch store max radius add /maxy exch store 2 copy +min radius sub /minx exch store max radius add /maxx exch store newpath +minx radius add miny moveto maxx miny maxx maxy radius arcto maxx maxy +minx maxy radius arcto minx maxy minx miny radius arcto minx miny maxx +miny radius arcto 16 {pop} repeat closepath }bind def /rectcartouche{box +gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def /cartouche{roundedbox +gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def end + +@fedspecial end TeXDict begin +39158280 55380996 1000 300 300 (projet.dvi) @start /Fa +15 118 df65 D70 DI< +EAFFF013FCEA381E130E1307A5130E131EEA3FFC13F0EA3800A812FEA210177F9614>80 +D97 D99 D101 +D103 +D108 DI111 D114 DI<1206120EA4EA7F +FC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>II E /Fb 10 118 df<13FEEA038138060180EA0E03381C01 +0090C7FCA5B51280EA1C03AE38FF8FF0141A809915>12 D<121CA2123C1270126012C012 +800607789913>19 D<130CA3131EA2132F1327A2EB4380A3EB81C0A200017F1300A248B4 +7E38020070A2487FA3487FA2003C131EB4EBFFC01A1A7F991D>65 +D<00FEEB7FC0000FEB0E001404EA0B80EA09C0A2EA08E01370A21338131CA2130E1307EB +0384A2EB01C4EB00E4A21474143CA2141C140C121C38FF80041A1A7F991D>78 +D97 D101 D<12FC121CB3A6EAFF80091A80990A>108 +D110 +DI<38FC1F80EA1C03AB1307120CEA0E0B3803F3F01410808F15>117 +D E /Fc 17 118 df71 +D<3907C03F800000EB0C0038016008A21320133000025B1318A2130C00045B1304130613 +0238080340A2EB01C0A23818008012FE19147E9319>78 D<3807FFC03800C07038018030 +1418A338030030A21460EB01C03807FE000006C7FCA35AA45AB4FC15147E9317>80 +D<137E3801C180380300C0000C13605A14305A5AA3481360A314C01480EA60013861C300 +EA322CEA1C383807E080EA0020132114001323133E131C141A7B931A>I97 +D<123C120C5AA45AEA3380EA3C60EA3020EA6030A4EAC060A2EA40C0EA6080EA2300121E +0C147D9310>II<133C130C1318A41330EA07B0EA0C701210EA30601260A3EAC0C013C8 +A21241EA62D0EA3C700E147C9312>II103 +D<120212061200A51238124CA2128C12981218A212301232A21264A2123807147D930B> +105 D<123C120C1218A41230A41260A412C012C8A312D0126006147D9309>108 +D<3830F87838590D8C384E0E0C129CEA980C1218A238301818141914311432EA6030141C +180D7D8C1C>I111 DI<1207EA188013C0EA3080EA3800121E121F +EA0380120112C1EA81001282127C0A0D7D8C0E>115 D117 D E /Fd +25 123 df<1206120E12181230A21260A312C0A71260A31230A21218120E120607177B93 +0F>40 D<128012C012601230A21218A3120CA71218A31230A2126012C0128006177D930F +>I<126012F012F812781218123012E012C005087B830F>44 DI< +126012F0A2126004047B830F>I<120FEA1F80EA30C0EA6060A2EAC030A7EAE070EA6060 +EA70E0EA39C0EA1F80EA0F000C127F910F>48 D<1204120C121C123C12FC124C120CAAEA +7F80A209127E910F>I67 D78 D83 D<12FFA212C0B212FFA208167B930F>91 D<12FFA21203B212FFA208167F930F>93 +D<123EEA7F80EA71C01220121F123F126012C0A21261EA7FF8EA1E780D0C7F8B0F>97 +D<12F0A21230A4EA37C0EA3FE0EA383012301318A4EA38301370EA3FE0EA17800D128091 +0F>II<12 +0FEA3F80EA70C0EA606012C0EAFFE0A2EAC000EA60601230EA1FC0EA0F800B0C7F8B0F> +101 D103 D<1208121C1208C7FCA4127CA2120CA8 +EAFF80A209137D920F>105 D +109 D112 D114 +D +I<12081218A3EA7FC012FFEA1800A51360A3EA0FC0EA07800B107F8F0F>II122 D E /Fe 26 121 df12 D<12C012E0127012181208 +05057C9311>18 D<12181238127012C012800505799311>I<124012E012601220A31240 +A2128003097D9309>39 D<124012E012601220A31240A2128003097D8209>44 +D69 D<38FF81FC381C00701420AD120C000E13400006138038 +038300EA00FC16147F9319>85 D<127FEAE1C0EAE040EA40601200EA07E0EA3860126012 +C01364A2EA61E4EA3E380E0D7E8C11>97 D<12F01230A6EA33E0EA3430EA3808EA300C13 +06A5130CEA3808EA3430EA23E00F147F9312>II<13781318A6EA0F98EA1878EA2038EA601812C0 +A51260EA2038EA1858EA0F9E0F147F9312>II103 D<1220127012201200A512F01230AB12FC06157F9409>105 +D<12F01230B212FC06147F9309>108 D<38F3E1F03834321838381C0CEA3018A938FC7E +3F180D7F8C1B>IIIIIII<1210A312301270EAFF80EA3000A71380 +A3EA1100120E09127F910D>III120 D E /Ff 18 118 df<90B5FC5A7EEB0380EB0700A4130EA45BA45BA45BA45BA338 +7FFF80B5FC7E181E7C9D1A>73 D<9038FE03FC000113070000130390383A00E090387701 +C0A49038E70380A213E3A23901C30700A21487A23803838EA43807039C1301A3000E13B8 +A3387F81F800FF5BEA7F801E1E7F9D1A>78 D97 D<127F5A7E1207120EA45A137CEA1DFEEA1FFF383F8780EA3E03383C01C0 +A212781270A338E00380A2EB0700A2EA700E131EEA787CEA3FF8EA1FE0EA0780121E7A9D +1A>I<133EEBFF8012033807C1C0EA0F03121E383C01800038C7FC5AA35AA4127014C038 +3C03E0383FFFC0000F13803803FC0013157A941A>II<133EEBFF80000313C03807C1E0EA0F00 +121EEA3C01383803C03870FF80007F130013FC00EFC7FC12E0A21270A2007813C0383C03 +E0381FFFC06C13803803FC0013157A941A>I<147EECFF805BECC3C09038038380A2EC80 +00A249C7FCEB7FF8497E6D5A0107C7FCA2130EA65BA55BA65BA4EA60E012F0EAF1C0127F +5B001EC8FC1A297E9D1A>I<1318133CA213181300A6120FEA1FC0123FEA78E0127012E0 +EAE1C012C1EA0380A3EA0700A2EA0E0EA2131C121C1338EA0FF813F0EA03C00F1F789E1A +>105 D108 D110 D<137CEA01FEEA07FF380F8780EA0E03381C01C0123C12381270A338E003 +80A2EB0700A2EA700E131EEA787CEA3FF8EA1FE0EA078012157A941A>III<381C07C0383F1FF0387F7FF83873F83838E3E01CEBC03CA238C7801800071300 +90C7FCA25A120EA35AA45A121816157A941A>I<137F3801FFC04813E0EA0780EA0F0112 +0E90C7FCA2EA07F013FE3801FF8038000FC01301EB00E0127038F001C01303EB0F80387F +FF006C5AEA0FF013157B941A>I<136013E0A3EA01C0A4EA0380EAFFFC13FE13FCEA0700 +A4120EA45AA2130EA2EA381C133C1378EA1FF013E0EA07800F1E789D1A>I<000E13C000 +3F13E05A387381C012E3EAE701A238C70380120EA3381C0700A21438130FEB0E70131E13 +3E380FFFE013F73803C1C015157B941A>I E /Fg 1 45 df<121E123E126012C0A61260 +123E121E070C7D960E>44 D E /Fh 47 121 df<1338137813F0EA01E0EA03C0EA0780EA +0F00120E5AA25AA25AA35AAA1270A37EA27EA27E120FEA0780EA03C0EA01E0EA00F81378 +13380D2878A21A>40 D<126012F012787E7E7EEA07801203EA01C0A2EA00E0A21370A313 +38AA1370A313E0A2EA01C0A2EA03801207EA0F00121E5A5A5A12600D287CA21A>I<13E0 +A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1FFF387EEFC038FCE7E0 +EAF0E13800E000A513157D991A>I<1218123E127E127F123F121F1207120EA2121C12FC +12F81260080D77851A>44 D<387FFFC0B512E0A26C13C013047D901A>I48 +D<13C01201A212031207120F127F12FD12711201B2EA7FFFA3101E7B9D1A>I<1338137C +A2136C13EEA313C6A2EA01C7A3138300031380A4380701C0A213FFA24813E0EA0E00A300 +1E13F0001C1370387F01FC38FF83FE387F01FC171E7F9D1A>65 DIIIIII73 +D<387F03F838FF87FC387F03F8381C01E0EB03C01480EB07005B131E131C5B13785B7F12 +1DEA1FDC139C130EEA1E0F7F001C13801303EB01C0A2EB00E0A21470007F13FC38FF81FE +387F00FC171E7F9D1A>75 DI<00FC137E6C13FEA2383B01B8A31383A200391338A213C7A2EA38C613EEA213 +6CA2137C1338A21300A700FE13FEA3171E7F9D1A>I<38FE03FE12FFA2381D8070A213C0 +121CA213E0A213601370A213301338A21318131CA2130C130EA21306A213071303A238FF +81F0A21380171E7F9D1A>III82 D<3803F8E0EA0FFEEA1FFFEA3C07EA780112F0EAE000A3140012701278EA3F80 +EA1FF8EA07FF38007FC0EB07E0EB00F014701438A2126012E0A214706C13F038FE01E0B5 +12C000EF138038E1FE00151E7E9D1A>I<387FFFFEB5FCA238E0380EA400001300B3A238 +03FF80A3171E7F9D1A>I<38FF83FEA3381C0070B3A26C13E0A2380701C013833803FF80 +6C1300EA007C171E7F9D1A>I<38FF01FEA3381C0070A3001E13F0000E13E0A3EA0F0100 +0713C0A338038380A40001130013C7A3EA00C613EEA3136C137CA21338171E7F9D1A>I< +38FF01FEA3381C00706C13E0A2EA0F01000713C013830003138013C700011300A2EA00EE +A2137CA21338AA48B4FCA3171E7F9D1A>89 D91 D93 D97 D99 +DII<3801F87C3807FFFE5A381E078C381C +0380383801C0A5381C0380EA1E07381FFF005BEA39F80038C7FCA27E381FFF8014E04813 +F83878007C0070131C48130EA40070131C0078133C003E13F8381FFFF0000713C0000113 +0017217F941A>103 D<13C0487EA26C5A90C7FCA6EA7FE0A31200AF387FFF80B512C06C +1380121F7C9E1A>105 D108 D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C1CAC387F1F1F39FFBFBF +80397F1F1F00191580941A>IIII<387F81F838FF8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E1715 +7F941A>114 D<3807FB80EA1FFF127FEA7807EAE003A30078C7FCEA7FC0EA1FFCEA07FE +38003F801307386001C012E0A2EAF00338FC0780B51200EAEFFEEAE3F812157C941A>I< +487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F9B +1A>I<387E07E0EAFE0FEA7E07EA0E00AD1301EA0F033807FFFC6C13FE3800FCFC17157F +941A>I<387F83FC38FFC7FE387F83FC380E00E0A3380701C0A338038380A33801C700A3 +EA00EEA3137CA2133817157F941A>I<38FF83FEA338380038A26C1370A31338137CA238 +0C6C60380EEEE0A413C6000613C0EA07C71383A217157F941A>I<387FC7F8EBCFFCEBC7 +F8380703C038038380EBC700EA01EFEA00FE137C13781338137C13EE120113C738038380 +000713C0EA0F01387FC7FC00FF13FE007F13FC17157F941A>I E +/Fi 21 119 df<91380FC0F8913830718E913860F31EECC0F70101EB660C9138800E0013 +03A35DEB0700A490B612C090390E003800A45D5BA45D5BA44A5A1370A44A5A13E0A292C7 +FC495AA238718E0638F19E0CEB1E1838620C30383C07C0272D82A21E>11 +D<126012F01270A212381218A2120C1204060972A219>18 DI73 D97 +DI<137EEA01C13803 +0180EA0703EA0E07121C003CC7FC12381278A35AA45B12701302EA300CEA1830EA0FC011 +157B9416>I<143CEB03F8EB0038A31470A414E0A4EB01C013F9EA0185EA0705380E0380 +A2121C123C383807001278A3EAF00EA31410EB1C201270133C38305C40138C380F078016 +237BA219>I<13F8EA0384EA0E02121C123C1238EA7804EAF018EAFFE0EAF000A25AA413 +02A2EA6004EA7018EA3060EA0F800F157A9416>I103 D<13C0EA01E013C0A2C7FCA8121E12 +231243A25AA3120EA25AA35AA21340EA7080A3EA71001232121C0B217BA00F>105 +D108 D<391C0F80F8392610C10C39476066063987807807A2EB0070A2000E +EBE00EA44848485AA3ED38202638038013401570168015303A7007003100D83003131E23 +157B9428>I<38380F80384C30C0384E4060388E8070EA8F00128EA24813E0A4383801C0 +A3EB03840070138814081307EB031012E0386001E016157B941B>I<137EEA01C3380381 +80380701C0120E001C13E0123C12381278A338F003C0A21480130700701300130E130CEA +3018EA1870EA07C013157B9419>I<3801C1F0380262183804741C3808780CEB700EA214 +1EEA00E0A43801C03CA3147838038070A2EBC0E0EBC1C038072380EB1E0090C7FCA2120E +A45AA3EAFFC0171F7F9419>I114 D<13FCEA018338020080EA0401EA0C03140090 +C7FC120F13F0EA07FC6C7EEA003E130F7F1270EAF006A2EAE004EA4008EA2030EA1FC011 +157D9414>I<13C01201A4EA0380A4EA0700EAFFF8EA0700A2120EA45AA45AA31310EA70 +20A213401380EA3100121E0D1F7C9E10>I<001E1360002313E0EA4380EB81C01283EA87 +01A238070380120EA3381C0700A31408EB0E101218121CEB1E20EA0C263807C3C015157B +941A>I<381C0180382603C0EA47071303EA8701EA8E00A2000E13805AA338380100A313 +02A25B5B1218EA0C30EA07C012157B9416>I E /Fj 61 123 df<90381FC1F090387037 +189038C03E3C3801807C000313783907003800A9B612C03907003800B2143C397FE1FFC0 +1E2380A21C>11 DI<120E127E121E120EB1EAFFC00A157F94 +0E>16 D<12E0A212F012781238121C12061202120108097BA218>18 +D<1207A2120F121E121C1238126012401280080976A218>I<127012F8A71270AC1220A6 +1200A5127012F8A3127005247CA30E>33 D<127012F812FCA212741204A41208A21210A2 +12201240060F7CA20E>39 D<132013401380EA01005A12061204120CA25AA25AA3127012 +60A312E0AE1260A312701230A37EA27EA2120412067E7EEA0080134013200B327CA413> +I<7E12407E7E12187E12041206A27EA2EA0180A313C01200A313E0AE13C0A312011380A3 +EA0300A21206A21204120C5A12105A5A5A0B327DA413>I<127012F812FCA212741204A4 +1208A21210A212201240060F7C840E>44 DI<127012F8A31270 +05057C840E>I<14801301A2EB0300A31306A35BA35BA35BA35BA35BA3485AA448C7FCA3 +1206A35AA35AA35AA35AA35AA311317DA418>I<13801203120F12F31203B3A9EA07C0EA +FFFE0F217CA018>49 DI +I<1303A25BA25B1317A21327136713471387120113071202120612041208A212101220A2 +124012C0B512F838000700A7EB0F80EB7FF015217FA018>I<00101380381E0700EA1FFF +5B13F8EA17E00010C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A41270 +12F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>I<1270 +12F8A312701200AB127012F8A3127005157C940E>58 D<127012F8A312701200AB127012 +F8A312781208A41210A312201240A2051F7C940E>I61 D<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3497EA2EBC01F497E +A248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003EEB01F839FF800FFF +20237EA225>65 DI<903807E0109038381830EBE0063901C0017039 +038000F048C7FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510 +127C123CA2001C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C +247DA223>I +II73 D76 D<39FF8007FF3907C000F81570D8 +05E01320EA04F0A21378137C133C7F131F7FEB0780A2EB03C0EB01E0A2EB00F014F81478 +143C143E141E140FA2EC07A0EC03E0A21401A21400000E1460121FD8FFE0132020227EA1 +25>78 D +II<3803F020380C0C60EA1802383001E0EA700000 +60136012E0A21420A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E0 +1301EB00F0A214707EA46C1360A26C13C07E38C8018038C60700EA81FC14247DA21B>83 +D<007FB512F839780780780060141800401408A300C0140C00801404A400001400B3A349 +7E3801FFFE1E227EA123>I<39FFFC07FF390FC000F86C4813701520B3A5000314407FA2 +000114806C7E9038600100EB3006EB1C08EB03F020237EA125>I +I<397FF803FF390FE001F83907C000E06C6C5B00015CEBF001D800F890C7FCEB7802EB7C +04133EEB1E08EB1F10EB0FB0EB07A014C06D7E130180497EEB0278EB047CEB0C3EEB081E +EB101F496C7E140701407F496C7E1401D801007F486D7E5AD81F807F3AFFC003FFC02222 +7FA125>88 D<1204120E121F121BEA3180EA60C0EAC060EA80200B087AA218>94 +D97 D<120E12FE121E120EAB131FEB61C0 +EB8060380F0030000E1338143C141C141EA7141C143C1438000F1370380C8060EB41C038 +083F0017237FA21B>II<14E0130F13011300AB +EA01F8EA0704EA0C02EA1C01EA38001278127012F0A7127012781238EA1801EA0C023807 +0CF03801F0FE17237EA21B>I +I<133E13E33801C780EA0387130748C7FCA9EAFFF80007C7FCB27FEA7FF0112380A20F> +I<14703803F198380E1E18EA1C0E38380700A200781380A400381300A2EA1C0EEA1E1CEA +33F00020C7FCA212301238EA3FFE381FFFC06C13E0383000F0481330481318A400601330 +A2003813E0380E03803803FE0015217F9518>I<120E12FE121E120EABEB1F80EB60C0EB +80E0380F0070A2120EAF38FFE7FF18237FA21B>I<121C123EA3121CC7FCA8120E127E12 +1E120EB1EAFFC00A227FA10E>I<13E0EA01F0A3EA00E01300A81370EA07F012001370B3 +A51260EAF0E013C0EA6180EA3F000C2C83A10F>I<120E12FE121E120EB3ADEAFFE00B23 +7FA20E>108 D<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E1338AF +3AFFE3FF8FFE27157F942A>I<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7 +FF18157F941B>III<3801F82038070460EA0E02EA1C01003813 +E0EA7800A25AA71278A2EA3801121CEA0C02EA070CEA01F0C7FCA9EB0FFE171F7E941A> +III<1202A41206A3120E121E123EEAFFFCEA0E +00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD +14F0A238060170380382783800FC7F18157F941B>I<38FF80FE381E00781430000E1320 +A26C1340A2EB80C000031380A23801C100A2EA00E2A31374A21338A3131017157F941A> +I<38FF83FE381F00F0000E13C06C1380EB8100EA0383EA01C2EA00E41378A21338133C13 +4E138FEA0187EB0380380201C0000413E0EA0C00383E01F038FF03FE17157F941A>120 +D<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2 +A31374A21338A31310A25BA35B12F05B12F10043C7FC123C171F7F941A>I<383FFFC038 +380380EA300700201300EA600EEA401C133C1338C65A5B12015B38038040EA07005A000E +13C04813805AEA7801EA7007B5FC12157F9416>I E /Fk 4 55 df14 DI<4B7EA46F7EA2166082A2161C8282B812E0A2C9EA0700160E5E1630A25E +5EA24B5AA42B1A7D9832>33 D<1403A21406A2140CA21418A21430A21460A214C0A3EB01 +80A2EB0300A21306A25BA25BA25BA25BA25BA2485AA248C7FCA31206A25AA25AA25AA25A +A25A1240183079A300>54 D E /Fl 44 125 df12 +D<12F07E7EA2127E121FEA0F80EA03C0EA01800A097AA21C>18 DI<1238127C12FE12FFA2127F123B1203A31206A2 +120C121C12181270122008117CA210>39 D45 +D<13FE3807FFC0380F83E0381F01F0383E00F8A248137CA312FC147EAD007C137CA36C13 +F8A2381F01F0380F83E03807FFC03800FE0017207E9F1C>48 D50 D<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA1F0314F0120014E0EB07C0 +EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE127EB4FCA314FCEA7E0100 +7813F8381E07F0380FFFC03801FE0017207E9F1C>I<1238127C12FEA3127C12381200A8 +1238127C12FEA3127C123807167C9510>58 D<1470A214F8A3497EA2497EA3EB067FA201 +0C7F143FA2496C7EA201307F140F01707FEB6007A201C07F90B5FC4880EB8001A2D80300 +7F14004880000680A23AFFE007FFF8A225227EA12A>65 D67 DI73 +D76 +D80 DII< +3801FE023807FF86381F01FE383C007E007C131E0078130EA200F81306A27E1400B4FC13 +E06CB4FC14C06C13F06C13F86C13FC000313FEEA003F1303EB007F143FA200C0131FA36C +131EA26C133C12FCB413F838C7FFE00080138018227DA11F>I85 D97 +DIII<13FE +3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA212 +7E003E13186C1330380FC0703803FFC0C6130015167E951A>II<3801FE +0F3907FFBF80380F87C7381F03E7391E01E000003E7FA5001E5BEA1F03380F87C0EBFF80 +D809FEC7FC0018C8FCA2121C381FFFE06C13F86C13FE001F7F383C003F48EB0F80481307 +A40078EB0F006C131E001F137C6CB45A000113C019217F951C>II<121C123E127FA3 +123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310>I<1338137C13FEA3137C133813 +00A7EA03FEA2EA003EB3A5127812FC133C137CEA78F8EA7FE0EA1F800F2E83A311>I108 D<3AFF07F007F090391FFC1FFC3A1F303E30 +3E01401340496C487EA201001300AE3BFFE0FFE0FFE0A22B167E9530>I<38FF07E0EB1F +F8381F307CEB403CEB803EA21300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F +83E0381E00F0003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E038 +07FFC03800FE0017167E951C>I<38FF0FE0EB3FF8381FE07CEB803E497E1580A2EC0FC0 +A8EC1F80A29038803F00EBC03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F> +IIII<487EA41203A21207A2120F123FB5FCA2EA0F +80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F16>I<38FF01FEA2381F003EAF14 +7E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<39FFE01FE0A2391F800700000F13 +06EBC00E0007130C13E000035BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5AA26DC7FCA213 +0EA21B167F951E>I<39FFE07FC0A2390F801C006C6C5A6C6C5AEBF0606C6C5A3800F980 +137F6DC7FC7F80497E1337EB63E0EBC1F03801C0F848487E3807007E000E133E39FF80FF +E0A21B167F951E>120 D<39FFE01FE0A2391F800700000F1306EBC00E0007130C13E000 +035BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC38 +13305BEA69C0EA7F80001FC8FC1B207F951E>I123 +DI E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin +%%PaperSize: a4 + +%%EndSetup +%%Page: 1 1 +1 0 bop Black Black Black Black 400 81 a Fl(Univ)n(ersit)o(\023)-27 +b(e)17 b(Denis)h(Diderot)f(-)i(IUP2)g(-)f(Syst)o(\022)-27 +b(emes)595 141 y(Pr)o(\023)g(esen)n(tation)19 b(du)g(pro)s(jet)f(2003) +674 201 y(|||||||||{)-5 308 y Fk(\017)e Fl(In)n(tro)r(duction)p +36 316 309 2 v -5 374 a Fj(Le)c(syst)o(\022)-23 b(eme)11 +b(UNIX)f(prop)q(ose)j(di\013)o(\023)-23 b(eren)o(ts)11 +b(m)o(\023)-23 b(ecanismes)9 b(de)j(comm)o(unic)o(ation)e(en)o(tre)h +(pro)q(cessus)i(\(tub)q(es)-5 435 y(anon)o(ymes)20 b(ou)i(nomm)o(\023) +-23 b(es,)18 b(\014les)j(de)g(messages\))f(qui)h(pr)o(\023)-23 +b(esen)o(ten)o(t)19 b(l'incon)o(v)o(\023)-23 b(enien)o(t)18 +b(de)j(n)o(\023)-23 b(ecessiter)20 b(la)-5 495 y(recopie)d(des)h(donn)o +(\023)-23 b(ees)16 b(\023)-23 b(ec)o(hang)o(\023)g(ees)18 +b(en)o(tre)f(les)g(pro)q(cessus)i(dans)f(des)g Fi(bu\013ers)k +Fj(du)c(syst)o(\022)-23 b(eme)16 b(:)h(un)h(pro-)-5 555 +y(cessus)g(exp)o(\023)-23 b(editeur)17 b(pr)o(\023)-23 +b(epare)18 b(dans)h(son)g(espace)e(d'adressage)i(priv)o(\023)-23 +b(e)17 b(l'information)f(qu'il)h(souhaite)-5 615 y(transmettre,)i(puis) +i(en)f(demande)f(la)i(recopie)f(par)h(le)f(syst)o(\022)-23 +b(eme)18 b(dans)k(l'espace)d(asso)q(ci)o(\023)-23 b(e)21 +b(\022)-24 b(a)21 b(un)g(ob-)-5 675 y(jet)c(de)g(comm)o(uni)o(cation)e +(au)i(tra)o(v)o(ers)f(d'un)h(app)q(el)g(syst)o(\022)-23 +b(eme)16 b(\()p Fh(write)f Fj(ou)i Fh(msgsnd)p Fj(\))e(\(tub)q(e)i(ou)h +(\014le)e(de)-5 736 y(messages\).)i(In)o(v)o(ersemen)n(t,)e(un)j(pro)q +(cessus)g(r)o(\023)-23 b(ecepteur)18 b(demande,)f(par)i(un)g(app)q(el)g +(syst)o(\022)-23 b(eme)17 b(\()p Fh(write)-5 796 y Fj(ou)j +Fh(msgrcv)p Fj(\))c(si)j(des)g(donn)o(\023)-23 b(ees)19 +b(son)o(t)h(disp)q(onibles)f(en)f(lecture)g(dans)i(un)f(ob)s(jet)f(de)h +(comm)o(unication)-5 856 y(donn)o(\023)-23 b(e)22 b(:)g(dans)g(ce)f +(cas)h(le)f(syst)o(\022)-23 b(eme)20 b(pro)q(c)o(\022)-23 +b(ede)22 b(\022)-24 b(a)22 b(la)f(recopie)g(de)h(ces)f(informations)g +(dans)h(l'espace)-5 916 y(d'adressage)17 b(du)g(pro)q(cessus)g(r)o +(\023)-23 b(ecepteur.)-5 982 y(Ces)20 b(di\013)o(\023)-23 +b(eren)o(tes)19 b(recopies)g(son)o(t)h(bien)e(\023)-23 +b(evidemm)o(en)n(t)17 b(p)o(\023)-23 b(enalisan)o(tes)19 +b(du)h(p)q(oin)o(t)g(de)g(vue)f(des)g(p)q(erfor-)-5 1042 +y(mances.)-5 1114 y(L'ob)s(jet)g(du)h(pro)s(jet)f(est)g(d'implan)o(ter) +d(un)j(m)o(\023)-23 b(ecanisme)16 b(de)j(comm)o(unication)d(p)q +(ermettan)o(t)i(la)h(com-)-5 1175 y(m)o(unication)c(de)h(messages)g(en) +o(tre)g(prco)q(essus)h(sans)h(que)e(la)g(recopie)g(dans)h(l'espace)f +(d'adressage)h(du)-5 1235 y(no)o(y)o(eu)k(soit)h(n)o(\023)-23 +b(ecessaire.)20 b(Le)i(m)o(\023)-23 b(ecanisme)18 b(prop)q(os)o(\023) +-23 b(e)23 b(ici)d(est)h(fortemen)o(t)f(inspir)o(\023)-23 +b(e)20 b(des)i Fl(espaces)i(de)-5 1295 y(messages)15 +b Fj(in)o(tro)q(duits)h(dans)h(le)f(syst)o(\022)-23 b(eme)14 +b(ChorusOS.)-5 1367 y(Il)h(est)h(demand)o(\023)-23 b(e)15 +b(de)h(de)f(d)o(\023)-23 b(ev)o(elopp)q(er)15 b(une)h(biblioth)o(\022) +-23 b(eque)15 b(de)g(fonctions)i(p)q(emettan)o(t)d(la)i(comm)o(unic)o +(a-)-5 1427 y(tion)h(de)f(pro)q(cessus)h(d'un)f(m)o(^)-23 +b(eme)13 b(syst)o(\022)-23 b(eme)14 b(au)j(tra)o(v)o(ers)e(de)i(ce)e(m) +o(\023)-23 b(ecanisme.)-5 1505 y Fk(\017)16 b Fl(Princip)r(e)i(g)o +(\023)-27 b(en)o(\023)g(eral)p 36 1523 402 2 v -5 1571 +a Fj(Av)o(ec)14 b(l'appro)q(c)o(he)i(prop)q(os)o(\023)-23 +b(e,)16 b(un)g(pro)q(cessus)h(d)o(\023)-23 b(esiran)o(t)15 +b(transmettre)f(des)i(donn)o(\023)-23 b(ees)16 b(sous)h(forme)d(d'un)-5 +1631 y(message)19 b(commenc)o(era)e(par)i(demander)f(un)h(tamp)q(on)g +(en)g(m)o(\023)-23 b(emoire)16 b(partag)o(\023)-23 b(ee)20 +b(p)q(our)g(lequel)d(il)h(ob-)-5 1692 y(tiendra)f(une)g(adresse)h(dans) +g(son)g(propre)f(espace)g(d'adressage)h(et)f(il)f(y)h(pr)o(\023)-23 +b(eparera)18 b(directemen)n(t)d(les)-5 1752 y(donn)o(\023)-23 +b(ees)17 b(\022)-24 b(a)16 b(transmettre.)f(Une)g(fois)i(les)e(donn)o +(\023)-23 b(ees)17 b(pr)o(^)-23 b(etes)16 b(il)f(en)h(a)o(visera)g(le)g +(syst)o(\022)-23 b(eme.)-5 1814 y(In)o(v)o(ersemen)o(t)18 +b(un)k(pro)q(cessus)h(demandan)o(t)e(\022)-24 b(a)22 +b(recev)o(oir)e(des)i(donn)o(\023)-23 b(ees)22 b(via)f(un)h(tel)f(ob)s +(jet)h(de)f(com-)-5 1874 y(m)o(unication)16 b(recevra)g(directemen)o(t) +e(une)j(adresse)h(de)f(son)h(espace)f(d'adressage)h(qui)f(lui)f(p)q +(ermettra)-5 1935 y(d'acc)o(\023)-23 b(eder)18 b(imm)o(\023)-23 +b(ediatem)n(en)o(t)16 b(aux)k(donn)o(\023)-23 b(ees)19 +b(constituan)o(t)h(le)e(message.)h(Une)f(fois)i(les)f(donn)o(\023)-23 +b(ees)19 b(ex-)-5 1995 y(ploit)o(\023)-23 b(ees,)15 b(il)h(restituera)f +(le)h Fi(bu\013er)22 b Fj(au)17 b(syst)o(\022)-23 b(eme.)-5 +2061 y(P)o(our)14 b(r)o(\023)-23 b(ealiser)13 b(l'implan)o(tation)e(du) +j(service,)e(on)i(p)q(ourra)h(utiliser)d(les)h(m)o(\023)-23 +b(ecanismes)11 b(de)i(m)o(\023)-23 b(emoire)10 b(par-)-5 +2121 y(tag)o(\023)-23 b(eee)19 b(\(segmen)o(ts)f(de)h(m)o(\023)-23 +b(emoire)16 b(System)i(V)g(ou)i(ob)s(jets)f(m)o(\023)-23 +b(emoires)16 b(P)o(osix\),)j(des)g(m)o(\023)-23 b(ecanismes)16 +b(de)-5 2181 y(syc)o(hronisation)h(\(s)o(\023)-23 b(emaphores)15 +b(System)g(V)h(ou)g(P)o(osix\))g(et)g(des)h(signaux)f(P)o(osix.)-5 +2253 y Fk(\017)g Fl(Pr)o(\023)-27 b(esen)n(tation)19 +b(d)o(\023)-27 b(etaill)o(\023)g(ee)p 36 2261 532 2 v +-5 2319 a Fg(,)-8 b Fk(!)16 b Fj(On)i(souhaite)f(p)q(ermettre)e(\022) +-24 b(a)18 b(des)f(pro)q(cessus)h(d')o(\023)-23 b(ec)o(hanger)16 +b(des)h Fl(messages)p 1242 2337 220 2 v -1 w Fj(,)g(c'est-\022)-24 +b(a-dire)16 b(des)h(in-)-5 2380 y(formations)j(structur)o(\023)-23 +b(ees)21 b(don)o(t)g(on)g(souhaite)g(pr)o(\023)-23 b(eserv)o(er)19 +b(la)i(structure)f(:)g(une)h(lecture)e(retournera)-5 +2440 y(exactemen)o(t)14 b(les)h(donn)o(\023)-23 b(ees)17 +b(transmises)e(lors)i(d'une)d(\023)-23 b(ecriture.)p +Black 928 2931 a(1)p Black eop +%%Page: 2 2 +2 1 bop Black Black -5 81 a Fg(,)-8 b Fk(!)16 b Fj(Le)g(concept)g(d')p +Fl(espace)i(de)g(messages)p 355 98 471 2 v -5 147 a Fj(Un)e(espace)g +(de)g(messages)g(est)g(constitu)o(\023)-23 b(e)16 b(de)g(:)p +Black -5 207 a Fk(\016)p Black 25 w Fj(un)21 b(ensem)o(ble)d(de)j +Fi(bu\013ers)p 402 224 142 2 v Fj(,)g(c)o(haque)g Fi(bu\013er)k +Fj(\023)-23 b(etan)o(t)21 b(susceptible)f(de)h(recev)o(oir)e(un)j +(message.)e(Les)44 267 y Fi(bu\013ers)h Fj(son)o(t)16 +b(regroup)o(\023)-23 b(es)17 b(en)f Fi(p)n(o)n(ols)g(de)i(messages)p +595 285 377 2 v 17 w Fj(:)e(les)f(di\013)o(\023)-23 b(eren)o(ts)16 +b Fi(bu\013ers)21 b Fj(d'un)16 b(m)o(^)-23 b(eme)12 b +Fi(p)n(o)n(ol)21 b Fj(on)o(t)44 327 y(la)16 b(m)o(^)-23 +b(eme)13 b(taille.)p Black -5 387 a Fk(\016)p Black 25 +w Fj(un)22 b Fl(espace)c(de)g(messages)p 121 405 471 +2 v 21 w Fj(est)k(constitu)o(\023)-23 b(e)21 b(d'un)h(ensem)o(ble)e(de) +h Fi(p)n(o)n(ols)26 b Fj(:)21 b(le)h(nom)o(bre)e(de)i +Fi(p)n(o)n(ols)44 448 y Fj(constituqn)o(t)11 b(un)h(espace)g(de)g +(messages)f(et)g(les)h(caract)o(\023)-23 b(eristiques)10 +b(de)i(c)o(hacun)f(de)h(ces)f Fi(p)n(o)n(ols)16 b Fj(\(nom)o(bre)44 +508 y(de)21 b Fi(bu\013ers)k Fj(qu'il)20 b(con)o(tien)o(t)f(et)i +(taille)f(comm)o(une)e(de)i(c)o(hacun)h(de)g(ces)f Fi(bu\013ers)26 +b Fj(son)o(t)21 b(\014x)o(\023)-23 b(ees)21 b(\022)-24 +b(a)21 b(la)44 568 y(cr)o(\023)-23 b(eation)22 b(de)g(cet)f(espace)h +(de)g(messages)f(\(on)i(p)q(ourra)g(les)e(regroup)q(er)i(dans)g(un)f +(ob)s(jet)g(de)g(t)o(yp)q(e)44 628 y Fh(msgPool)14 b +Fj(transmis)h(en)h(param)o(\022)-23 b(etre)15 b(\022)-24 +b(a)17 b(la)f(primitiv)o(e)d(de)j(cr)o(\023)-23 b(eation)16 +b(d'un)g(espace)g(de)g(messages\).)p Black -5 688 a Fk(\016)p +Black 25 w Fj(un)23 b(ensem)o(ble)e(de)i Fl(\014les)18 +b(de)g(messages)p 409 706 408 2 v -1 w Fj(.)23 b(Un)g(message)f(sera)i +(d)o(\023)-23 b(ep)q(os)o(\023)g(e)24 b(dans)g(une)f(\014le)g(de)g +(mes-)44 749 y(sages.)c(Le)f(nom)o(bre)e(de)i(\014les)f(de)h(messages)g +(sera)f(\023)-23 b(egalemen)o(t)16 b(une)h(caract)o(\023)-23 +b(eristique)17 b(\014x)o(\023)-23 b(ee)17 b(lors)h(de)44 +809 y(la)e(cr)o(\023)-23 b(eation)16 b(d'un)g(espace)g(de)g(messages.) +-5 869 y Fg(,)-8 b Fk(!)16 b Fl(Iden)n(ti\014cation)i(d'un)g(espace)g +(de)h(messages)p 67 887 941 2 v Black -5 929 a Fk(\016)p +Black 25 w Fj(un)i(espace)g(de)g(messages)f(p)q(oss)o(\022)-23 +b(ede)22 b(un)g Fl(iden)n(ti\014an)n(t)i(externe)19 b +Fj(de)i(t)o(yp)q(e)g Fh(MsgSpaceI)o(d)d Fj(:)j(v)o(ous)44 +989 y(p)q(ouv)o(ez)g(adopter)i(comme)c(tel)i(iden)o(ti\014an)o(t)f(ce)h +(que)g(v)o(ous)h(v)o(oulez,)e(par)i(exemple)d(un)j(en)o(tier)f(ou)44 +1049 y(une)14 b(c)o(ha)-5 b(^)-19 b(\020ne)12 b(de)i(caract)o(\022)-23 +b(eres.)12 b(V)l(ous)i(p)q(ourrez)f(\023)-23 b(ev)o(en)o(tuellem)o(e)o +(n)o(t)11 b(pr)o(\023)-23 b(ev)o(oir)12 b(un)i(iden)o(ti\014an)o(t)f +(particulier)44 1110 y Fh(PRIVATEPOO)o(L)e Fj(p)q(ermettan)o(t)i(la)h +(cr)o(\023)-23 b(eation)14 b(d'un)g(espace)g(de)g(nommage)e(anon)o(yme) +h(\(cet)g(iden)o(ti\014an)o(t)44 1170 y(jouera)k(le)e(r^)-24 +b(ole)16 b(de)g(la)g(cl)o(\023)-23 b(e)15 b Fh(IPC)p +611 1170 16 2 v 18 w(PRIVATE)e Fj(des)k(ip)q(c)f(System)e(V\).)p +Black -5 1230 a Fk(\016)p Black 25 w Fj(un)21 b(espace)f(de)h(messages) +f(p)q(oss)o(\022)-23 b(ede)20 b(\023)-23 b(egalemen)o(t)19 +b(un)i Fl(iden)n(ti\014an)n(t)j(in)n(terne)c Fj(qui)g(sera)h(r)o(\023) +-23 b(ecup)o(\023)g(er)o(\023)g(e)44 1290 y(lors)16 b(de)g(la)h(cr)o +(\023)-23 b(eation)16 b(ou)g(de)g(l'ouv)o(erture)f(d'un)h(espace)g(de)g +(messages)g(\(v)o(oir)f Fh(msgSpaceOpe)o(n)p Fj(\).)-5 +1350 y(On)d(g)o(\023)-23 b(erera)12 b(une)g Fl(table)h(des)h(espaces)f +(de)h(messages)p Fj(,)c(lo)q(calis)o(\023)-23 b(ee)11 +b(en)g(m)o(\023)-23 b(emoire)9 b(partag)o(\023)-23 b(ee)13 +b(a\014n)f(d')o(^)-23 b(etre)-5 1411 y(consultable)18 +b(et)g(mo)q(di\014able)f(par)i(di\013)o(\023)-23 b(eren)o(ts)18 +b(pro)q(cessus,)h(don)o(t)f(c)o(haque)g(en)o(tr)o(\023)-23 +b(ee)17 b(aura)i(comme)d(t)o(yp)q(e)-5 1471 y Fh(msgSpace)d +Fj(:)j(une)g(telle)e(en)o(tr)o(\023)-23 b(ee)15 b(con)o(tiendra)g(tout) +i(ce)e(qu'il)f(faut)j(p)q(our)g(p)q(ouv)o(oir)f(utiliser)e(l'espace)h +(de)-5 1531 y(messages)d(corresp)q(ondan)o(t)h(\022)-24 +b(a)13 b(cette)e(en)o(tr)o(\023)-23 b(ee.)11 b(T)l(outes)i(les)f(op)o +(\023)-23 b(erations)13 b(r)o(\023)-23 b(ealis)o(\023)g(ees)11 +b(par)i(un)f(pro)q(cessus)i(sur)-5 1591 y(un)20 b(espace)f(de)g +(messages)f(seron)o(t)h(r)o(\023)-23 b(ealis)o(\023)g(ees)18 +b(en)h(utilisan)o(t)g(cet)f(iden)o(ti\014an)o(t)g(in)o(terne)g(:)h(une) +g(solution)-5 1651 y(consiste)i(\022)-24 b(a)21 b(adopter)g(un)g(p)q +(oin)o(teur)f(\(dans)i(l'espace)d(d'adressage)j(du)e(pro)q(cessus)i +(utilisateur\))e(sur)-5 1712 y(l'en)o(tr)o(\023)-23 b(ee)13 +b(corresp)q(ondan)o(t)i(\022)-24 b(a)15 b(l'espace)f(de)g(messages)g +(consid)o(\023)-23 b(er)o(\023)g(e,)14 b(ce)g(p)q(oin)o(teur)g(a)o(y)o +(an)o(t)f(\023)-23 b(et)o(\023)g(e)14 b(obten)o(u)h(lors)-5 +1772 y(de)i(l'ouv)o(erture)f(de)h(l'espace)f(de)h(messages)g(par)h(le)f +(pro)q(cessus)h(\(ce)f(princip)q(e)f(est)h(iden)o(tique)f(\022)-24 +b(a)17 b(celui)-5 1832 y(utilis)o(\023)-23 b(e)14 b(par)i(la)f +(biblioth)o(\022)-23 b(eque)14 b(standard)j(iden)o(titian)o(t)c(lo)q +(calemen)o(t)g(les)i(\014c)o(hiers)f(par)i(un)g(p)q(oin)o(teur)f(sur)-5 +1892 y(un)i(ob)s(jet)f(de)g(t)o(yp)q(e)g Fh(FILE)p Fj(\).)-5 +1958 y Fl(A)n(tten)n(tion)p -5 1966 237 2 v 17 w Fj(:)f(la)i(table)f +(des)g(espaces)g(de)g(messages)f(\023)-23 b(etan)o(t)16 +b(susceptible)g(d')o(^)-23 b(etre)15 b(attac)o(h)o(\023)-23 +b(ee)16 b(dans)h(l'es-)-5 2018 y(pace)j(d'adressage)g(de)g(di\013)o +(\023)-23 b(eren)o(ts)19 b(pro)q(cessus,)h(l'utilisation)f(de)g(p)q +(oin)o(teurs)h(absolus)h(dans)f(ce)g(t)o(yp)q(e)-5 2079 +y(est)c(\022)-24 b(a)16 b(\023)-23 b(eviter)8 b(!.)-5 +2151 y Fk(\017)14 b Fl(L'in)n(terface)j(de)h(programmation)p +34 2168 731 2 v 11 w Fj(est)13 b(constitu)o(\023)-23 +b(ee)13 b(des)h(fonctions)f(suiv)m(an)o(tes)h(\(les)f(protot)o(yp)q(es) +-5 2211 y(donn)o(\023)-23 b(es)17 b(son)o(t)g(des)f(suggestions)i(et)d +(v)o(ous)i(p)q(ouv)o(ez)d(\023)-23 b(evidemme)o(n)o(t)13 +b(en)j(adopter)h(d'autres\))g(:)-5 2283 y Fg(,)-8 b Fk(!)16 +b Fh(msgSpace)22 b(*msgSpaceCr)o(eat)o(e\()113 2343 y(msgSpaceId)g +Ff(spaceId)p Fh(,)17 b Fj(//)g(iden)o(ti\014an)o(t)e(externe)g(de)h +(l'espace)g(de)g(messages)113 2403 y Fh(int)25 b Ff(queueNb)p +Fh(,)17 b Fj(//)g(nom)o(bre)e(de)h(\014les)g(de)g(messages)113 +2463 y Fh(int)25 b Ff(poolNb)p Fh(,)17 b Fj(//)g(nom)o(bre)e(de)h +Fi(p)n(o)n(ols)j Fj(de)d Fi(bu\013ers)113 2524 y Fh(msgPool)23 +b Ff(queueNb)10 b Fh([)25 b(])16 b Fj(//)h(caract)o(\023)-23 +b(eristiques)15 b(des)i(di\013)o(\023)-23 b(eren)o(ts)15 +b Fi(p)n(o)n(ols)113 2584 y Fh(\))p Black Black 44 2644 +a Fj(cr)o(\023)-23 b(eation)17 b(et)h(ouv)o(erture)f(d'un)g(espace)g +(de)h(messages)f(d'iden)o(ti\014cation)f(externe)h(donn)o(\023)-23 +b(ee.)17 b(En)h(cas)44 2704 y(d'erreur,)e(la)g(v)m(aleur)h +Fh(NULL)f Fj(est)g(ren)o(v)o(o)o(y)o(\023)-23 b(ee)15 +b(\(table)i(des)g(espaces)g(de)g(messages)f(pleine)g(ou)h(iden)o +(ti\014-)44 2764 y(cation)f(di\013)o(\023)-23 b(eren)o(te)15 +b(de)h Fh(PRIVATEPOOL)d Fj(d)o(\023)-23 b(ej\022)f(a)16 +b(utilis)o(\023)-23 b(ee\))8 b(;)p Black 928 2931 a(2)p +Black eop +%%Page: 3 3 +3 2 bop Black Black -5 81 a Fg(,)-8 b Fk(!)16 b Fh(msgSpace)22 +b(*msgSpaceOp)o(en\()o(ms)o(gSp)o(ace)o(Id)g Ff(spaceId)10 +b Fh(\))p Black Black 44 141 a Fj(ouv)o(erture)20 b(d'un)g(espace)g(de) +g(messages)g(existan)o(t)g(\()p Fi(sp)n(ac)n(eId)5 b +Fk(6)p Fj(=)p Fh(PRIVATEP)o(OOL)o Fj(\).)17 b(La)k(v)m(aleur)g +Fh(NULL)44 201 y Fj(est)16 b(ren)o(v)o(o)o(y)o(\023)-23 +b(ee)14 b(si)i(l'acc)o(\022)-23 b(es)15 b(\022)-24 b(a)17 +b(l'espace)e(de)h(messages)g(est)g(imp)q(ossible.)-5 +320 y Fg(,)-8 b Fk(!)16 b Fh(void)24 b(*msgAlloc)o(ate)o(\()113 +380 y(msgSpace)f(*)p Ff(space)p Fh(,)16 b Fj(//)h(espace)f(de)g +(message)g(concern)o(\023)-23 b(e)113 441 y Fh(int)25 +b Ff(pool)p Fh(,)16 b Fj(//)h(n)o(um)o(\023)-23 b(ero)15 +b(du)i Fi(p)n(o)n(ol)j Fj(o)q(\022)-26 b(u)18 b(r)o(\023)-23 +b(ealiser)15 b(l'allo)q(cation)113 501 y Fh(int)25 b +Ff(taille)p Fh(,)17 b Fj(//)g(si)f(l'argumen)o(t)e(pr)o(\023)-23 +b(ec)o(\023)g(eden)o(t)15 b(est)h Fh(ANYPOOL)p Fj(,)d(taille)i(requise) +113 561 y Fh(int)25 b Ff(option)h Fj(//)17 b Fh(0)f Fj(ou)g +Fh(NONBLOCK)113 621 y(\))p Black Black 44 681 a Fj(allo)q(cation)e +(d'un)g Fi(bu\013er)20 b Fj(soit)15 b(dans)f(le)g Fi(p)n(o)n(ol)k +Fj(sp)o(\023)-23 b(eci\014)o(\023)g(e)13 b(\(v)m(aleur)h(di\013)o(\023) +-23 b(eren)o(te)13 b(de)h Fh(ANYPOOL)p Fj(\),)d(soit)j(dans)44 +741 y(le)22 b Fi(p)n(o)n(ol)28 b Fj(de)22 b Fi(bu\013ers)28 +b Fj(non)23 b(plein)f(don)o(t)h(la)g(taille)f(des)h Fi(bu\013ers)k +Fj(est)c(la)g(plus)g(pro)q(c)o(he)g(\(de)f(v)m(aleur)44 +802 y(sup)o(\023)-23 b(erieure)14 b(ou)g(\023)-23 b(egale\))15 +b(de)g(la)g(taille)f(demand)o(\023)-23 b(ee.)13 b(La)i(fonction)g(ren)o +(v)o(oie)f(l'adresse)g(du)h Fi(bu\013er)21 b Fj(dans)44 +862 y(l'espace)12 b(d'adressage)i(du)g(pro)q(cessus.)g(La)g(primitiv)o +(e)c(est)j(blo)q(quan)o(te)g(\(sauf)h(si)f(l'option)g +Fh(NONBLOCK)44 922 y Fj(est)h(utilis)o(\023)-23 b(ee\))13 +b(dans)i(le)e(cas)h(o)q(\022)-26 b(u)16 b(il)d(n'y)h(a)g(pas)h(de)f +Fi(bu\013er)20 b Fj(disp)q(onible.)14 b(La)h(v)m(aleur)e +Fh(NULL)g Fj(est)h(ren)o(v)o(o)o(y)o(\023)-23 b(ee)44 +982 y(en)16 b(cas)h(d'erreur)e(\(ou)i(en)f(cas)g(de)g(non-allo)q +(cation)i(\022)-24 b(a)16 b(cause)h(de)f Fh(NONBLOCK)p +Fj(\))8 b(;)-5 1101 y Fg(,)-8 b Fk(!)16 b Fh(int)24 b(msgPut\()113 +1162 y(msgSpace)f(*)p Ff(space)p Fh(,)16 b Fj(//)h(espace)f(de)g +(message)g(concern)o(\023)-23 b(e)113 1222 y Fh(int)25 +b Ff(file)p Fh(,)16 b Fj(//)h(n)o(um)o(\023)-23 b(ero)15 +b(de)h(\014le)g(de)g(messages)113 1282 y Fh(void)25 b(*)p +Ff(adresse)g Fj(//)17 b(adresse)g(du)f Fi(bu\013er)113 +1342 y Fh(\))p Black Black 44 1402 a Fj(ins)o(\023)-23 +b(ere)18 b(le)f Fi(bu\013er)24 b Fj(don)o(t)19 b(l'adresse)e(est)h +(donn)o(\023)-23 b(ee)19 b(\(et)f(qui)f(est)h(supp)q(os)o(\023)-23 +b(ee)20 b(a)o(v)o(oir)c(\023)-23 b(et)o(\023)g(e)18 b(obten)o(ue)g(pr)o +(\023)-23 b(ea-)44 1463 y(lablemen)o(t)17 b(lors)i(d'un)h(app)q(el)f +(\022)-24 b(a)20 b Fh(msgAllocate)o Fj(\))d(dans)j(la)f(\014le)g(de)g +(n)o(um)o(\023)-23 b(ero)18 b(sp)o(\023)-23 b(eci\014)o(\023)g(e)19 +b(de)g(l'espace)44 1523 y(de)f(messages)g(d'iden)o(tit)o(\023)-23 +b(e)16 b(donn)o(\023)-23 b(ee.)18 b(La)h(fonction)f(ren)o(v)o(erra)f +Fh(-1)g Fj(en)h(cas)h(d'erreur)e(et)h Fh(0)g Fj(en)g(cas)g(de)44 +1583 y(r)o(\023)-23 b(eussite.)44 1649 y Fl(Remarque)17 +b(:)g Fj(un)h(app)q(el)f(r)o(\023)-23 b(eussi)17 b(de)g(la)g(primitiv)o +(e)d(doit)j(r)o(\023)-23 b(ev)o(eiller,)14 b(s'il)i(en)h(existe,)f(un)h +(pro)q(cessus)44 1709 y(en)f(atten)o(te)g(sur)g(une)g(lecture)f +(\(primitiv)o(e)e Fh(msgGet)p Fj(\))h(sur)j(la)f(\014le)f(de)h(n)o(um)o +(\023)-23 b(ero)15 b(donn)o(\023)-23 b(e.)-5 1829 y Fg(,)-8 +b Fk(!)16 b Fh(void)24 b(*msgGet\()113 1889 y(msgSpace)f(*)p +Ff(space)p Fh(,)16 b Fj(//)h(espace)f(de)g(message)g(concern)o(\023)-23 +b(e)113 1949 y Fh(int)25 b Ff(file)p Fh(,)16 b Fj(//)h(n)o(um)o(\023) +-23 b(ero)15 b(de)h(la)g(\014le)g(de)g(messages)g(concern)o(\023)-23 +b(ee)113 2009 y Fh(int)25 b Ff(option)h Fj(//)17 b Fh(0)f +Fj(ou)g Fh(NONBLOCK)113 2069 y(\))p Black Black 44 2130 +a Fj(ren)o(v)o(oie)d(l'adresse)h(du)g Fi(bu\013er)21 +b Fj(en)14 b(t)o(^)-23 b(ete)13 b(de)i(la)f(\014le)g(de)g(n)o(um)o +(\023)-23 b(ero)13 b(donn)o(\023)-23 b(e)15 b(dans)g(l'espace)e(de)i +(messages)44 2190 y(sp)o(\023)-23 b(eci\014)o(\023)g(e.)17 +b(Le)h(message)f(est)h(e\013ectiv)o(eme)o(n)o(t)d(extrait)i(de)h(la)g +(\014le)f(\(il)g(ne)h(p)q(ourra)g(^)-23 b(etre)17 b(relu)h(que)f(si)h +(il)44 2250 y(est)d(r)o(\023)-23 b(eins)o(\023)g(er)o(\023)g(e)14 +b(explicitem)o(en)o(t)e(dans)k(une)f(\014le\).)f(L'app)q(el)h(est)g +(blo)q(quan)o(t)h(si)f(la)g(\014le)f(est)h(vide)g(\022)-24 +b(a)15 b(moins)44 2310 y(que)h(l'option)g Fh(NONBLOCK)d +Fj(ne)j(soit)g(utilis)o(\023)-23 b(ee)15 b(\(la)h(v)m(aleur)g(retourn)o +(\023)-23 b(ee)16 b(sera)g(alors)h Fh(NULL)p Fj(\).)44 +2370 y(On)f(p)q(ourra)h(\023)-23 b(ev)o(en)o(tuellem)o(e)o(n)o(t)13 +b(donner)k(la)f(p)q(ossibilit)o(\023)-23 b(e)16 b(d'extraire)f(un)h +(message)g(sans)h(sp)o(\023)-23 b(eci\014er)15 b(de)44 +2430 y(n)o(um)o(\023)-23 b(ero)14 b(de)g(\014le)h(\(un)g(argumen)o(t)f +Fh(ANYFILE)e Fj(p)q(ourra)j(^)-23 b(etre)15 b(utilis)o(\023)-23 +b(ee,)12 b(le)j(c)o(hoix)f(de)h(la)f(\014le)f(\023)-23 +b(etan)o(t)16 b(alors)44 2491 y(laiss)o(\023)-23 b(e)16 +b(\022)-24 b(a)17 b(v)o(otre)e(appr)o(\023)-23 b(eciation\).)p +Black 928 2931 a(3)p Black eop +%%Page: 4 4 +4 3 bop Black Black -5 81 a Fg(,)-8 b Fk(!)16 b Fh(int)24 +b(msgFree\()113 141 y(msgSpace)f(*)p Ff(space)9 b Fj(,)16 +b(//)h(espace)f(de)g(message)g(concern)o(\023)-23 b(e)113 +201 y Fh(void)25 b(*)p Ff(adresse)g Fj(//)17 b(adresse)g(du)f +Fi(bu\013er)113 261 y Fh(\))p Black Black 44 321 a Fj(restitue,)c(au)i +Fi(p)n(o)n(ol)k Fj(d'o)q(\022)-26 b(u)14 b(il)f(a)f(\023)-23 +b(et)o(\023)g(e)13 b(extrait)g(\(lors)g(de)g(l'app)q(el)g(\022)-24 +b(a)14 b Fh(msgAlloca)o(te)p Fj(\))o(,)c(le)j Fi(bu\013er)19 +b Fj(d'adresse)44 381 y(donn)o(\023)-23 b(ee.)17 b(Cette)h(fonction)g +(est)f(t)o(ypiquemen)o(t)e(app)q(el)o(\023)-23 b(ee)17 +b(apr)o(\022)-23 b(es)18 b(qu'un)g(pro)q(cessus)g(ait)g(exploit)o(\023) +-23 b(e)17 b(les)44 442 y(informations)e(con)o(ten)o(ues)h(dans)h(un)f +Fi(bu\013er)23 b Fj(d'adresse)16 b(ren)o(v)o(o)o(y)o(\023)-23 +b(ee)14 b(par)j Fh(msgGet)p Fj(.)44 508 y Fl(Remarque)12 +b Fj(Un)i(app)q(el)g(r)o(\023)-23 b(eussi)15 b(de)f(la)g(primitiv)o(e)d +(doit)j(r)o(\023)-23 b(ev)o(eiller,)11 b(s'il)i(en)i(existe,)d(un)j +(pro)q(cessus)g(en)44 568 y(atten)o(te)g(d'allo)q(cation)g(d'un)g +Fi(bu\013er)21 b Fj(dans)16 b(le)f Fi(p)n(o)n(ol)20 b +Fj(sp)o(\023)-23 b(eci\014)o(\023)g(e)14 b(sur)h(la)h(\014le)e(de)h(n)o +(um)o(\023)-23 b(ero)14 b(donn)o(\023)-23 b(e)16 b(\(app)q(el)44 +628 y(de)g(la)g(primitiv)o(e)d Fh(msgGet)p Fj(\))-5 747 +y Fg(,)-8 b Fk(!)16 b Fh(int)24 b(msgSpaceDe)o(let)o(e\(m)o(sgS)o(pa)o +(ceI)o(d)f Ff(spaceId)9 b Fh(\))p Black Black 44 808 +a Fj(supprime)15 b(l'espace)g(de)h(messages)g(d'iden)o(ti\014cation)e +(externe)h(donn)o(\023)-23 b(ee.)44 874 y Fl(Remarque)23 +b(:)f Fj(c'est)f(\022)-24 b(a)23 b(v)o(ous)f(de)g(d)o(\023)-23 +b(ecider)21 b(si)h(la)g(suppression)h(d'un)f(espace)g(de)g(messages)g +(est)44 934 y(imm)o(\023)-23 b(edi)o(ate)16 b(ou)k(di\013)o(\023)-23 +b(er)o(\023)g(ee)18 b(jusqu'\022)-24 b(a)19 b(la)g(fermeture)d(par)k +(tous)f(les)g(pro)q(cessus)h(de)f(l'espace)e(de)i(mes-)44 +994 y(sages.)44 1054 y(Dans)f(le)f(premier)e(cas,)i(la)g(suppression)h +(d'un)f(espace)g(de)g(messages)g(devra)g(pro)o(v)o(o)q(quer)g(le)f(r)o +(\023)-23 b(ev)o(eil)44 1114 y(de)16 b(tous)h(les)f(pro)q(cessus)h(blo) +q(qu)o(\023)-23 b(es)16 b(sur)h(une)f(op)o(\023)-23 b(eration)17 +b(sur)f(cet)g(espace)g(de)g(messages.)44 1175 y(Dans)i(le)f(deuxi)o +(\022)-23 b(eme)14 b(cas,)k(il)e(est)h(n)o(\023)-23 b(ecessaire)17 +b(d'a)s(jouter)g(une)g(primitiv)o(e)d Fh(msgSpaceC)o(los)o(e)g +Fj(de)j(fer-)44 1235 y(meture)c(et)i(de)g(red)o(\023)-23 +b(e\014nir)14 b(une)h(nouv)o(elle)f(primitiv)o(e)d Fh(Exit)j +Fj(ex)o(\023)-23 b(ecut)o(\023)g(ee)13 b(\022)-24 b(a)16 +b(la)f(\014n)g(d'un)g(pro)q(cessus)h(a\014n)44 1295 y(qu'il)f(ferme)f +(les)i(espaces)g(de)g(messages)g(qu'il)e(a)j(ouv)o(erts.)-5 +1414 y Fk(\017)f Fl(Conclusions)p 36 1422 291 2 v -5 +1480 a Fj(-)h(Bien)d(qu'il)h(soit)h(p)q(ossible)g(de)g(faire)f +(autremen)o(t,)f(il)h(p)q(ourra)i(s'a)o(v)o(\023)-23 +b(erer)15 b(plus)h(simple)e(de)i(commenc)o(er)-5 1541 +y(toute)f(application)g(souhaitan)o(t)g(utiliser)f(les)g(m)o(\023)-23 +b(ecanismes)12 b(de)j(comm)o(uni)o(cation)d(d)o(\023)-23 +b(ev)o(elopp)o(\023)g(es)14 b(ici)g(par)-5 1601 y(un)19 +b(app)q(el)g(\022)-24 b(a)19 b(une)f(fonction)h(d'initialisation)e +Fh(msgSpaceIn)o(it)e Fj(r)o(\023)-23 b(ealisan)o(t)18 +b(en)h(particulier)e(l'attac)o(he-)-5 1661 y(men)o(t)e(de)h(la)g(table) +g(des)g(espaces)g(de)g(messages)g(au)h(pro)q(cessus)g(app)q(elan)o(t.) +-5 1727 y(-)f(P)o(ar)f(ailleurs,)f(il)g(s'a)o(v)o(\023)-23 +b(erera)14 b(probablemen)o(t)f(utile)h(de)h(disp)q(oser)h(d'un)f +(utilitaire)e(\(commande\))g(p)q(er-)-5 1787 y(mettan)o(t)i(l'examen)e +(de)k(l')o(\023)-23 b(etat)15 b(d'un)h(espace)g(de)g(messages.)p +Black 928 2931 a(4)p Black eop +%%Page: 5 5 +5 4 bop Black Black -5 81 a Fk(\017)16 b Fl(Quelques)i(sc)n(h)o(\023) +-27 b(emas)18 b(explicatifs)p 36 98 705 2 v -5 200 a +Fg(,)-8 b Fk(!)16 b Fi(un)i(esp)n(ac)n(e)f(de)h(messages)g(imm)o(\023) +-24 b(ediatement)19 b(apr)o(\022)-24 b(es)17 b(sa)g(cr)o(\023)-24 +b(eation)p 67 217 1205 2 v 17 w Fj(:)p Black Black 1 +setlinewidth np 410 768 a 410 812 li st 1 setlinewidth +np 498 768 a 498 812 li st 1 setlinewidth np 498 789 +a 505 789 li st 1 setlinewidth np 516 789 a 523 789 li +st 1 setlinewidth np 533 789 a 540 789 li st 1 setlinewidth +np 550 789 a 557 789 li st 1 setlinewidth np 568 789 +a 575 789 li st 1 setlinewidth np 585 789 a 592 789 li +st 1 setlinewidth np 602 789 a 609 789 li st 1 setlinewidth +np 620 789 a 627 789 li st 1 setlinewidth np 637 789 +a 644 789 li st 1 setlinewidth np 654 789 a 661 789 li +st 1 setlinewidth np 671 789 a 678 789 li st 1 setlinewidth +np 689 789 a 696 789 li st 1 setlinewidth np 695 768 +a 695 812 li st 1 setlinewidth np 322 537 a 893 537 li +893 581 li 322 581 li closepath st 1 setlinewidth np +410 537 a 410 581 li st 1 setlinewidth np 366 537 a 366 +581 li st 1 setlinewidth np 432 558 a 439 558 li st 1 +setlinewidth np 450 558 a 457 558 li st 1 setlinewidth +np 469 558 a 476 558 li st 1 setlinewidth np 487 558 +a 494 558 li st 1 setlinewidth np 505 558 a 512 558 li +st 1 setlinewidth np 523 558 a 530 558 li st 1 setlinewidth +np 541 558 a 548 558 li st 1 setlinewidth np 559 558 +a 566 558 li st 1 setlinewidth np 577 558 a 584 558 li +st 1 setlinewidth np 595 558 a 602 558 li st 1 setlinewidth +np 613 558 a 620 558 li st 1 setlinewidth np 632 558 +a 639 558 li st 1 setlinewidth np 650 558 a 657 558 li +st 1 setlinewidth np 668 558 a 675 558 li st 1 setlinewidth +np 686 558 a 693 558 li st 1 setlinewidth np 704 558 +a 711 558 li st 1 setlinewidth np 722 558 a 729 558 li +st 1 setlinewidth np 740 558 a 747 558 li st 1 setlinewidth +np 758 558 a 765 558 li st 1 setlinewidth np 777 558 +a 784 558 li st 1 setlinewidth np 805 537 a 805 581 li +st 1 setlinewidth np 849 537 a 849 581 li st 1 setlinewidth +np 322 416 a 805 416 li 805 460 li 322 460 li closepath +st 1 setlinewidth np 410 416 a 410 460 li st 1 setlinewidth +np 498 416 a 498 460 li st 1 setlinewidth np 520 437 +a 527 437 li st 1 setlinewidth np 538 437 a 545 437 li +st 1 setlinewidth np 556 437 a 563 437 li st 1 setlinewidth +np 574 437 a 581 437 li st 1 setlinewidth np 592 437 +a 599 437 li st 1 setlinewidth np 610 437 a 617 437 li +st 1 setlinewidth np 628 437 a 635 437 li st 1 setlinewidth +np 646 437 a 653 437 li st 1 setlinewidth np 664 437 +a 671 437 li st 1 setlinewidth np 682 437 a 689 437 li +st 1 setlinewidth np 700 437 a 707 437 li st 1 setlinewidth +np 718 416 a 718 460 li st 1 setlinewidth np 366 867 +a 454 867 li 454 911 li 366 911 li closepath st 1 setlinewidth +np 366 911 a 454 867 li st 1 setlinewidth np 542 867 +a 630 867 li 630 911 li 542 911 li closepath st 1 setlinewidth +np 542 911 a 630 867 li st 1 setlinewidth np 674 888 +a 681 888 li st 1 setlinewidth np 692 888 a 699 888 li +st 1 setlinewidth np 709 888 a 716 888 li st 1 setlinewidth +np 727 888 a 734 888 li st 1 setlinewidth np 745 888 +a 752 888 li st 1 setlinewidth np 762 888 a 769 888 li +st 1 setlinewidth np 780 888 a 787 888 li st 1 setlinewidth +np 798 888 a 805 888 li st 1 setlinewidth np 816 888 +a 823 888 li st 1 setlinewidth np 833 888 a 840 888 li +st 1 setlinewidth np 851 888 a 858 888 li st 1 setlinewidth +np 869 888 a 876 888 li st 1 setlinewidth np 887 888 +a 894 888 li st 1 setlinewidth np 322 768 a 772 768 li +772 812 li 322 812 li closepath st 1 setlinewidth np +937 867 a 1025 867 li 1025 911 li 937 911 li closepath +st 125 602 a Fe(de)11 b(p)q(o)q(ols)p 1 setlinewidth +np 937 911 a 1025 867 li st 1 setlinewidth np 586 591 +a 586 597 li st 1 setlinewidth np 586 611 a 586 617 li +st 1 setlinewidth np 586 630 a 586 636 li st 1 setlinewidth +np 586 649 a 586 655 li st 1 setlinewidth np 586 669 +a 586 675 li st 1 setlinewidth np 586 688 a 586 694 li +st 1 setlinewidth np 586 708 a 586 714 li st 1 setlinewidth +np 586 727 a 586 733 li st 1 setlinewidth np 113 274 +a 1750 274 li 1750 933 li 113 933 li closepath st 1 setlinewidth +np 304 388 a 304 388 li 304 388 li 304 387 li 304 387 +li 303 386 li 303 385 li 302 385 li 301 383 li 300 382 +li 299 381 li 298 380 li 297 379 li 296 378 li 295 377 +li 294 376 li 292 375 li 291 375 li 290 374 li 289 374 +li 288 374 li 287 375 li 286 376 li 286 377 li 285 378 +li 284 380 li 284 382 li 283 385 li 283 388 li 282 391 +li 282 394 li 281 397 li 281 402 li 280 406 li 280 410 +li 280 415 li 279 421 li 279 426 li 279 432 li 278 438 +li 278 445 li 278 451 li 277 458 li 277 465 li 277 472 +li 277 479 li 277 486 li 276 493 li 276 501 li 276 508 +li 275 514 li 275 521 li 275 528 li 275 534 li 274 541 +li 274 547 li 274 552 li 274 557 li 273 562 li 273 567 +li 273 571 li 272 575 li 272 579 li 272 583 li 271 586 +li 271 589 li 271 592 li 271 594 li 270 596 li 270 598 +li 269 599 li 269 600 li 268 601 li 268 601 li 268 601 +li 267 601 li 267 601 li 266 601 li 266 601 li 265 600 +li 265 600 li 265 599 li 264 599 li 264 598 li 263 598 +li 263 597 li 262 596 li 262 596 li 262 596 li 262 595 +li 261 595 li 261 595 li 261 595 li 261 596 li 261 596 +li 260 596 li 260 597 li 260 597 li 261 597 li 261 598 +li 261 598 li 261 598 li 261 598 li 261 598 li 262 598 +li 262 597 li 262 597 li 262 596 li 263 596 li 263 595 +li 264 595 li 264 594 li 265 593 li 265 593 li 265 592 +li 266 592 li 266 591 li 267 591 li 267 591 li 268 591 +li 268 591 li 268 592 li 269 592 li 269 593 li 269 594 +li 270 595 li 270 597 li 271 599 li 271 602 li 271 604 +li 271 607 li 272 611 li 272 614 li 272 618 li 273 622 +li 273 627 li 273 632 li 274 637 li 274 643 li 274 649 +li 274 655 li 275 662 li 275 668 li 275 675 li 275 682 +li 276 690 li 276 697 li 276 705 li 277 712 li 277 720 +li 277 727 li 277 735 li 277 742 li 278 749 li 278 756 +li 278 763 li 279 769 li 279 776 li 279 782 li 280 787 +li 280 793 li 280 797 li 281 802 li 281 806 li 282 810 +li 282 813 li 283 816 li 283 820 li 284 822 li 284 825 +li 285 826 li 286 828 li 286 829 li 287 830 li 288 830 +li 289 831 li 290 830 li 291 830 li 292 829 li 294 829 +li 295 828 li 296 827 li 297 826 li 298 824 li 299 823 +li 300 822 li 301 821 li 302 820 li 303 819 li 303 818 +li 304 817 li 304 817 li 304 817 li 304 817 li 304 816 +li st 125 306 a(Un)g(espace)f(de)i(messages,)e(apr)o(\022)-16 +b(es)11 b(qu'il)j(ait)c(\023)-16 b(et)o(\023)g(e)10 b(cr)o(\023)-16 +b(e)o(\023)g(e)11 b(par)g(l'app)q(el)125 339 y Fd(msgSpaceC)q(re)q(at)q +(e\()q Fc(sp)n(ac)n(eGid)p Fd(,)i Fc(msgQueueNb)p Fd(,)f +Fc(msgPo)n(olNb)p Fd(,)e Fc(msgPo)n(ols)p Fd(\))125 547 +y Fe(Ensem)o(ble)125 657 y(messages)795 811 y(les)h(messages)g(son)o(t) +g(de)g(longueur)h Fc(msgPo)n(ols)p Fd([)p Fc(msgPo)n(olNb)p +Fd(-1].msgSize)795 778 y Fe(il)g(con)o(tien)o(t)f Fc(msgPo)n(ols)p +Fd([)p Fc(msgPo)n(olNb)p Fd(-1].msgNumb)q(er)k Fe(messages)10 +b(et)h(tous)916 580 y(les)g(messages)g(son)o(t)g(de)g(longueur)h +Fc(msgPo)n(ols)p Fd([1].msgSize)916 547 y Fe(il)g(con)o(tien)o(t)f +Fc(msgPo)n(ols)p Fd([1].msgNum)q(ber)k Fe(messages)c(et)g(tous)828 +459 y(les)g(messages)g(son)o(t)g(de)g(longueur)h Fc(msgPo)n(ols)p +Fd([0].msgSize)828 427 y Fe(il)g(con)o(tien)o(t)f Fc(msgPo)n(ols)p +Fd([0].msgNum)q(be)q(r)j Fe(messages)d(et)g(tous)125 +910 y(\014les)g(de)g(messages)125 877 y Fc(msgQueueNb)1047 +899 y Fe(toutes)g(les)h(\014les)f(son)o(t)g(vides)311 +745 y(p)q(o)q(ol)g(de)h(messages)e(d'index)j Fc(msgPo)n(olNb)p +Fd(-1)311 514 y Fe(p)q(o)q(ol)e(de)h(messages)e(d'index)j +Fd(1)311 394 y Fe(p)q(o)q(ol)e(de)h(messages)e(d'index)j +Fd(0)-5 1036 y Fg(,)-8 b Fk(!)16 b Fi(les)i(e\013ets)g(des)g +(primitives)f(de)h(manipulation)g(des)g(messages)p 67 +1054 1152 2 v 17 w Fj(:)p Black Black 1 setlinewidth +np 612 1733 570 247.73 288.18 arc st 1 setlinewidth np +1268 860 472 65.35 118.48 arc st 1 setlinewidth np 568 +817 515 66.25 109.51 arc st 1 setlinewidth np 1281 1792 +615 248.66 287.39 arc st 1 setlinewidth np 916 1247 140 +98 0.00 360.00 ellipse st 1 setlinewidth np 1592 1247 +140 98 0.00 360.00 ellipse st 1 setlinewidth np 272 1247 +140 98 0.00 360.00 ellipse st 1 setlinewidth np 762 1275 +a 790 1275 li st 1 setlinewidth np 790 1275 a 775 1303 +li st 1 setlinewidth np 396 1205 a 424 1205 li st 1 setlinewidth +np 396 1205 a 409 1177 li st 1 setlinewidth np 1437 1289 +a 1465 1289 li st 1 setlinewidth np 1465 1289 a 1451 +1317 li st 1 setlinewidth np 1057 1219 a 1085 1219 li +st 1 setlinewidth np 1057 1219 a 1071 1191 li st 1 setlinewidth +np 1057 1247 a 1451 1247 li st 1 setlinewidth np 1057 +1247 a 1085 1261 li st 1 setlinewidth np 1057 1247 a +1085 1233 li st 232 1289 a Fb(allou)o(\023)-18 b(e)846 +1261 y(Allou)o(\023)g(e)536 1134 y Fa(msgFree)508 1360 +y(msgAllocat)o(e)248 1233 y Fb(Non)1536 1261 y(en)13 +b(\014le)1142 1148 y Fa(msgGet)1156 1373 y(msgPut)p Black +928 2931 a Fj(5)p Black eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/libnzg-ssh b/libnzg-ssh new file mode 100755 index 0000000..61c30dc --- /dev/null +++ b/libnzg-ssh @@ -0,0 +1,8 @@ +#!/bin/sh +if [ -f .ssh-agent ]; then + . .ssh-agent +else + killall ssh-agent + ssh-agent > .ssh-agent + ssh-add ~/.ssh/id_rsa +fi diff --git a/libnzg-tuxfamily b/libnzg-tuxfamily new file mode 100755 index 0000000..ff72154 --- /dev/null +++ b/libnzg-tuxfamily @@ -0,0 +1,9 @@ +#!/bin/bash + +export CVS_RSH=ssh +export CVSROOT=:ext:login@cvs.tuxfamily.org:/cvsroot/libnazgul + +# ci commit +# co new branch +# update +exec $SHELL diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..8679b5b --- /dev/null +++ b/src/Makefile @@ -0,0 +1,32 @@ +### HEADER HERE + +# @CLASSPATH=$(CLASSPATH) $(JAVAC) $(JFLAGS) $< + +#INCLUDES=-I/ +#LIBINC=-L +#LIBS= + +CC=gcc +CFLAGS=-ggdb -O2 -Wall +USER_CLASSPATH:=../bin:../lib +JFLAGS=-d ../bin -g -deprecation +#-verbose +PRJNAME=Libnazgul +GDATE := $(shell date +"-%Y-%m-%d_r%H") +GFILENAME := ../$(PRJNAME)$(GDATE).tar.bz2 +LOCALDIR = $(shell pwd) +BINDIR=../bin +CFILES := $(shell ls *.c) +OFILES := $(patsubst %.c,%.o,$(CFILES)) + +all: build + +build : $(OFILES) + +clean: + @echo -e "Cleaning..." + @rm -f *.o + +%.o : %.c + $(CC) $(CFLAGS) $(INCLUDES) $(LIBINC) $(LIBS) -c $< -o $*.o + diff --git a/src/nzg_create.c b/src/nzg_create.c new file mode 100644 index 0000000..9c0e5ed --- /dev/null +++ b/src/nzg_create.c @@ -0,0 +1,33 @@ +#include +#include "nzg_iface.h" +#include "nzg_proto.h" + +/* + * spaceId : identifiant externe de l'espace de msg + * queueNb : nombre de files de messages + * poolNb : nombre de pool de buffers + * queueNbCar : tableau de caracteristiques des different pool + */ + +msgSpace * msgSpaceCreate( + msgSpaceId spaceId, // identifiant externe de l'espace de msg + int queueNb, // nombre de files de messages + int poolNb, // nombre de pool de buffers + msgPool * queueNbCar // tableau de caracteristiques des different pool + ){ + + // on ajoute spaceId a la liste des msgSpace connus + + // on crée queueNb files de messages + + // on créer poolNb pool de buffers + + // on attache tout ce beau monde au spaceId + + // on renvoie un pointeur sur le bon spaceId + + msgSpace * result=NULL; + return result; +} + + diff --git a/src/nzg_iface.h b/src/nzg_iface.h new file mode 100644 index 0000000..b25710b --- /dev/null +++ b/src/nzg_iface.h @@ -0,0 +1,10 @@ +#include "types.h" + +typedef int msgSpaceId; +typedef int msgSpace; +typedef int msgPool; + + + + +/* */ diff --git a/src/nzg_list.c b/src/nzg_list.c new file mode 100644 index 0000000..ae05e2a --- /dev/null +++ b/src/nzg_list.c @@ -0,0 +1,11 @@ +#include +#include "nzg_iface.h" +#include "nzg_proto.h" + +char ** msgSpaceIdList(){ + // i = le nombre d'id publics disponnibles + int i=0; + char ** idList; + idList=(char **)malloc(i*sizeof(char *)); + return idList; +} diff --git a/src/nzg_main.c b/src/nzg_main.c new file mode 100644 index 0000000..13a2c23 --- /dev/null +++ b/src/nzg_main.c @@ -0,0 +1,8 @@ +#include "nzg_iface.h" +#include "nzg_proto.h" + +int main(void) { + // msgSpaceId mSID=msgSpaceIdGet(""); //renvoie un ID propre au programme + // msgSpace mS=0; + return 0; +} diff --git a/src/nzg_proto.h b/src/nzg_proto.h new file mode 100644 index 0000000..e7a032c --- /dev/null +++ b/src/nzg_proto.h @@ -0,0 +1,18 @@ + +char **msgSpaceIdList(void); + +msgSpace * msgSpaceCreate( + msgSpaceId spaceId, // identifiant externe de l'espace de msg + int queueNb, // nombre de files de messages + int poolNb, // nombre de pool de buffers + msgPool * queueNbCar // tableau de caracteristiques des different pool + ); + +msgSpace * msgSpaceOpen(msgSpaceId spaceId); + +void * msgAllocate( + msgSpace * space, //espace de message concerné + int pool, //numéro de pool ou réaliser l'allocation + int taille, //si l'argument précédent est ANYPOOL, taille requise + int option // 0 ou NONBLOCK + ); diff --git a/src/nzg_show.c b/src/nzg_show.c new file mode 100644 index 0000000..991f6b0 --- /dev/null +++ b/src/nzg_show.c @@ -0,0 +1,9 @@ +#include "nzg_iface.h" +#include "nzg_proto.h" + +int main(void) { + //show existing MsgSpaces + char ** msID=msgSpaceIdList(); //renvoie un msgSpaceId + msID=msID; + return 0; +} diff --git a/src/nzg_state.c b/src/nzg_state.c new file mode 100644 index 0000000..e69de29 diff --git a/src/types.h b/src/types.h new file mode 100644 index 0000000..e69de29