Sign in Join
Wiki copytemporary

System unit structure/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: System unit structure/fr

OldNewLine
1+## Structure de l'unité System
2+
3+(travail en cours - incomplet!)
4+
5+Cette page est censée documenter les fonctions et procédures servant comme "interfaces" entre les parties communes et celles spécifique à une plate-forme de l'unité System aussi bien que les sous-routines utilisée communément pour des tâches particulières réalisées pendant l'initialisation et spécifie leur comportement. Cela pourrait alors servir de spécification pour les mainteneurs des plate-formes existantes ou à venir pour garantir un comportement totalement compatible (en prenant en compte autant que possible les limitations individuelles des plate-formes).
6+
7+Toutes les routines listées sont obligatoires (au moins comme stub) sauf indication contraire. Si le nom du fichier source habituel contenant l'implémentation d'une routine particulière n'est pas mentionné, il est supposé être system.pas pour le code spécifique à une plate-forme et system.inc pour les routines partagées entre les plate-formes.
8+
9+## Types
10+
11+Les types suivants sont supposés définis dans l'interface de la partie spécifique plate-forme de l'unité System.
12+
13+- THandle
14+- TThreadID
15+- TRTLCriticalSection
16+- PRTLCriticalSection
17+
18+## Constantes et variables
19+
20+La liste suivante énumère les constantes et variables qui doivent être déclarées (et habituellement initialisées à une valeur raisonnable pour la plate-forme particulière) pour toutes les plates-formes:
21+
22+- LineEnding
23+- DirectorySeparator
24+- DriveSeparator
25+- PathSeparator
26+- MaxExitCode
27+- MaxPathLen
28+- UnusedHandle
29+- StdInputHandle
30+- StdOutputHandle
31+- StdErrorHandle
32+- LFNSupport
33+- FileNameCaseSensitive
34+- CtrlZMarksEof
35+- sLineBreak
36+- DefaultTextLineBreakStyle
37+- ArgC
38+- ArgV
39+- EnvC
40+- EnvP
41+
42+\<TODO\>
43+
44+## Initialization
45+
46+### Partagé
47+
48+#### InitHeap
49+
50+Implémenté dans heap.inc.
51+
52+Initialisation des structutres internes utilisées par le gestionnaire de tas par défault. Aucun tas ne peut être utilisé avant avoir appelé InitHeap.
53+
54+#### SysInitExceptions
55+
56+Initialisation des structures internes utilisées par le support des exceptions.
57+
58+\<TODO\>
59+
60+#### OpenStdIO
61+
62+Partie commune de l'initialisation des variables fichier standard. C'est similaire aux appels Assign et Reset/Rewrite pour les fichiers texte, mais ces fichiers sont associés à des noms de fichiers vides et aucune tentative n'est faite pour ouvrir les fichiers (ils sont censés être déjà ouverts).
63+
64+\<TODO\>
65+
66+#### InitSystemThreads
67+
68+\<TODO\>
69+
70+#### SetThreadManager
71+
72+\<TODO\>
73+
74+#### InitHeapMutexes
75+
76+\<TODO\>
77+
78+#### InitVariantManager
79+
80+\<TODO\>
81+
82+#### InitWideStringManager
83+
84+\<TODO\>
85+
86+#### Sysinit unit and indirect entry information
87+
88+(note: c'est actuellement en état de démarrage et s'applique seulement à la cible i386-win32)
89+
90+Supporter les paquets d'exécution nécessite de pouvoir relier l'unité System et le programme principal en différents modules exécutables. Par conséquent, l'information globale générée par compilateur, telle que la table d'initialisation de l'unité, ne peut pas être directement référencée à partir de l'unité System. Au lieu de cela, il est référencé à partir d'une petite unité distincte ('sysinit') et transmis à des routines dans l'unité du système via les arguments de fonction. Le point d'entrée du module est placé dans l'unité sysinit, aussi. Une copie de l'unité de sysinit est liée statiquement dans chaque module exécutable, de sorte que chaque module se termine en contenant la table d'initialisation seulement pour les unités qu'il contient réellement.
91+
92+Cette information globale n'est pas limitée à la table d'initialisation de l'unité, voir l'enregistrement TEntryInformation pour une liste complète.
93+
94+Une cible peut avoir plus d'une unité Sysinit, chacune résolvant des tâches d'initialisation spécifiques. Une unité particulière à utiliser est déterminée par le compilateur, voir la méthode InitSysInitUnitName de la classe TLinker. Par exemple, bien qu'utilisant normalement sysinitpas.pp, le compilateur peut utiliser sysinitcyg.pp à la place s'il détecte une liaison avec des bibbliothèques Cygwin.
95+
96+### Spécifique à une plate-forme
97+
98+#### Initialisation de l'unité
99+
100+Les tâches suivantes sont réalisées:
101+
102+- Initialisation de la variable IsLibrary (true si elle s'exécute dans une bibliothèque partagée, false sinon)
103+- Initialisation des variables ProcessID et ThreadID
104+- Initialisation de la variable IsConsole (true si elle x'exécute dans la console texte, false si elle s'exécute dans une application graphique fenêtrée)
105+- Initialisation de la variable ExitProc \<TODO\>
106+- Initialisation du tas (appelant le InitHeap partagé)
107+- Initialisation de variables procédural potentielles et/ou des paramètres nécessaires au support des routines l'unité System requérant différentes implémentation selon le système d'exploitation (intégrant peut-être le chargement dynamique de procédures et fonctions depuis des bibliothèques partagées au besoin) - voir [[OS aware RTL]]
108+- Initialisation de la variable IniInOutRes (set to 0)
109+- Initialisation des variables d'environment (EnvC and EnvP), habituellement par appel de InitEnvironment - seulement requis pour les plates-formes ne fournissant pas d'accès à ces variables nativement.
110+- Le gestionnaire interne de thread est initialisé par l'appel à InitSystemThreads
111+- Le gestionnaire interne de variant est initialisé par l'appel à InitVariantManager
112+- Le gestionnaire interne de widestring est initialisé par l'appel à InitWideStringManager
113+
114+#### InitEnvironment
115+
116+Seulement nécessaire pour les plates-formes ne fournissant pas un accès natif aux variables EnvC et EnvP (OS2, EMX p.ex.).
117+
118+La procédure contrôle la quantité des variables d'environnement et les enregistre dans EnvC. Ensuite, la mémoire est allouée sur le tas (tableau de EnvC+1 articles de type PChar - le pointeur de liste pointera vers Nil). Pour finir, les articles individuel du tableau sont initialisés avec des PChars pointant vers des chaînes à zéro terminal contenant le nom de la variable d'environnement, le signe égal et la valeur de la variable d'environnement. La mémoire pour les chaînes à zéro terminal individuelles peut être allouée sur le tas pour ces chaînes et peuvent être copiées là au besoin (i.e. si la plate-forme particulière ne fournit pas de pointeur vers un emplacement fixé pour ces chaînes dans le bon format).
119+
120+#### InitArguments
121+
122+Seulement nécessaire pour les plates-formes ne fournissant pas un accès natif aux variables ArgC, ArgV et/ou CmdLine.
123+
124+\<TODO\>
125+
126+#### SysInitStdIO
127+
128+Initialisation des variables de fichier standard (Input, Output, ErrOutput, StdOut et StdErr).
129+
130+\<TODO\>
131+
132+#### InitSystemThreads
133+
134+\<TODO\>
135+
136+## Tâches générales
137+
138+### Platform specific
139+
140+#### Manipulation de fichier
141+
142+Habituellement implémenté dans sysfile.inc.
143+
144+##### Do_Close
145+
146+##### Do_Erase
147+
148+##### Do_Rename
149+
150+##### Do_Read
151+
152+##### Do_Write
153+
154+##### Do_FilePos
155+
156+##### Do_Seek
157+
158+##### Do_SeekEnd
159+
160+##### Do_FileSize
161+
162+##### Do_Truncate
163+
164+##### Do_Open
165+
166+##### Do_IsDevice
167+
168+#### Gestion du tas
169+
170+##### SysOSAlloc
171+
172+##### SysOSFree
173+
174+#### Support du Threading
175+
176+##### SysInitThreadVar
177+
178+##### SysRelocateThreadVar
179+
180+#### Autre
181+
182+##### System_Exit
183+
184+## Routines publiques
185+
186+Les routines suivantes font partie de l'interface de l'unité System et sont supposées être pleinement implémentées spécifiquement à chaque plate-forme. Leur spécification est disponible dans la documentation de FPC, donc elles sont listées ici principalement dans un souci de complétude pour fournir une liste complète à des fins de portage.
187+
188+### Manipulation de répertoire
189+
190+Habituellement implémenté dans sysdir.inc.
191+
192+- MkDir
193+- RmDir
194+- ChDir
195+- GetDir
196+
197+### Autres
198+
199+- Randomize
200+- ParamCount, ParamStr (peut-être déplacé dans le commun - \<TODO\>)
201+
202+## Finalization
203+
204+### Partagés
205+
206+#### InternalExit
207+
208+\<TODO\>
209+
210+#### FinalizeHeap
211+
212+\<TODO\>
213+
214+### Platform specific
215+
216+#### FinalDeallocation
217+
218+\<TODO\>
219+
220+---
221+*From the Free Pascal wiki, page "System unit structure/fr", as it stood on 2015-07-17 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
222+Category: FPC internals/fr
223+Category: RTL/fr

Back to history