Sign in Join
Wiki copytemporary

System unit structure/es: what changed

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

Title: System unit structure/es

OldNewLine
1+## Estructura de la unidad System
2+
3+(trabajo en progreso - ¡incompleto!)
4+
5+   Esta página trata de documentar funciones y procedimientos que sirven como [interfaz](http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&LEMA=interfaz) entre las partes comunes y las específicas de cada plataforma de la unidad **system**, así como de las subrutinas habitualmente utilizadas para tareas particulares durante el inicio de la unidad *system* y así especificar su comportamiento. Esto es útil como especificación para mantenedores de plataformas, existentes o nuevas, con el fin de asegurar un comportamiento completamente compatible (tanto como sea posible teniendo en consideración las limitaciones de cada una de las plataformas).
6+
7+   Todas las rutinas enumeradas son obligatorias (al menos su declaración) a menos que se especifique otra cosa. Si no se menciona el nombre del archivo fuente habitual que contiene la implementación de la rutina, supondremos que se hace referencia a *system.pas* para las partes específicas de una plataforma y a *system.inc* para las rutinas compartidas entre plataformas.
8+
9+## Tipos
10+
11+Los siguientes tipos se asume que están definidos en el interface de la unidad System para plataformas específicas:
12+
13+- THandle
14+- TThreadID
15+- TRTLCriticalSection
16+- PRTLCriticalSection
17+
18+## Constantes y variables
19+
20+El siguiente listado incluye contantes y variables mandatorias que han de ser declaradas (y habitualmente inicializadas con valores razonables acordes a una plataforma en particular) para todas las plataformas:
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+\<EN ESPERA DE EDICIÓN\>
43+
44+## Initialization
45+
46+### Shared
47+
48+#### InitHeap
49+
50+Implementado en heap.inc.
51+
52+Inicialización de estructuras internas utilizadas por el gestor por defecto de la memoria del heap (montón). No es posible utilizar el heap (montón) sin antes llamar a InitHeap.
53+
54+#### SysInitExceptions
55+
56+Inicialización de estructuras internas utilizadas por el soporte de excepciones.
57+
58+\<EN ESPERA DE EDICIÓN\>
59+
60+#### Apertura estandar de entrada/salida: OpenStdIO (Open Standard Input/Output)
61+
62+Parte común de la inicialización para variables de fichero estandar. Es similar a las llamadas **Assign** y **Reset/Rewrite** utilizadas con ficheros de texto, pero los ficheros son asociados con nombres de fichero vacios y no se hacen intentos de apertura de ficheros (se asume que ya están abiertos).
63+
64+\<EN ESPERA DE EDICIÓN\>
65+
66+#### InitSystemThreads
67+
68+\<EN ESPERA DE EDICIÓN\>
69+
70+#### SetThreadManager
71+
72+\<EN ESPERA DE EDICIÓN\>
73+
74+#### InitHeapMutexes
75+
76+\<EN ESPERA DE EDICIÓN\>
77+
78+#### InitVariantManager
79+
80+\<EN ESPERA DE EDICIÓN\>
81+
82+#### InitWideStringManager
83+
84+\<EN ESPERA DE EDICIÓN\>
85+
86+### Platform specific
87+
88+#### Inicialización de la unidad
89+
90+Se llevan a cabo las siguientes tareas:
91+
92+- Inicialización de la variable IsLibrary (true utilizando una librería compartida, false en cuaquier otro caso)
93+- Inicialización de las variables ProcessID y ThreadID.
94+- Inicialización de la variable IsConsole (true si está funcionando en una consola de texto, false si está funcionando en una aplicación de ventana bajo un Interface Gráfico de Usuario (GUI)).
95+- Inicialización de la variable ExitProc \<POR HACER\>
96+- Inicialización del Heap (llamando a InitHeap compartido)
97+- Inicialización de procedimientos y variables potenciales y/o parámetros necesarios para soportar System unidad rutina que requieren distintas implementaciones dependiendo de la versión de sistema operativo detectada (posiblemente incluyendo una carga dinámica de procedimientos y funciones de librerias compartidas donde se requiera) - ver [[OS aware RTL]]
98+- InOutRes variable initialization (set to 0)
99+- Inicialización de variables de entorno (EnvC y EnvP), usualmente llamando a initEnvironment - solamente necesario para plataformas que no proveen acceso nativo a estas variables.
100+- El Internal thread manager se inicializa llamando a InitSystemThreads
101+- El Internal variant manager se inicializa llamando a InitVariantManager
102+- El Internal widestring manager se inicializa llamando a InitWideStringManager
103+
104+#### Inicialización del entorno (InitEnvironment)
105+
106+Solamente necesario para aquellas plataformas que no aportan acceso nativo a las variables EnvC y EnvP.
107+
108+El procedimiento chequea las variables de entorno y las almacena en EnvC. Entonces se asigna memoria para EnvP^ desde la heap (matriz de EnvC + 1 elementos del tipo PChar (puntero a carácter) - the list pointer will point to nil). Finalmente los elementos individuales en la matriz se inicializan con PCHARS apuntando a cadenas finalizadas con null que contienen el nombre de variable de entornoe, equal sign and the environment variable value. Memory for the individual null terminated strings may be allocated from heap for these strings and they may be copied there if needed (i.e. if the particular platform doesn't provide pointer to a fixed location for these strings in required format).
109+
110+#### Argumentos de inicio (InitArguments)
111+
112+Solamente se necesitan en plataformas que no aportan acceso a variables ArgC, ArgV y/o CmdLine en modo nativo.
113+
114+\<EN ESPERA DE EDICIÓN\>
115+
116+#### SysInitStdIO
117+
118+Inicialización de variables estandar de fichero (Input, Output, ErrOutput, StdOut and StdErr).
119+
120+\<EN ESPERA DE EDICIÓN\>
121+
122+#### InitSystemThreads
123+
124+\<EN ESPERA DE EDICIÓN\>
125+
126+## General tasks
127+
128+### Platform specific
129+
130+#### Manejo de ficheros
131+
132+Usualmente implementado en el fichero sysfile.inc.
133+
134+##### Do_Close
135+
136+##### Do_Erase
137+
138+##### Do_Rename
139+
140+##### Do_Read
141+
142+##### Do_Write
143+
144+##### Do_FilePos
145+
146+##### Do_Seek
147+
148+##### Do_SeekEnd
149+
150+##### Do_FileSize
151+
152+##### Do_Truncate
153+
154+##### Do_Open
155+
156+##### Do_IsDevice
157+
158+#### Heap management
159+
160+##### SysOSAlloc
161+
162+##### SysOSFree
163+
164+#### Threading Support
165+
166+##### SysInitThreadVar
167+
168+##### SysRelocateThreadVar
169+
170+#### Other
171+
172+##### System_Exit
173+
174+## Rutinas públicas
175+
176+Las siguientes rutinas son parte del interface de la unidad System y se suponen implementadas completamente en plataformas específicas. Su especificación está disponible en la documentación de FPC, por que que son listadas aquí mayormente para aportar una lista completa en vista a su portabilidad.
177+
178+### Manejo de directorios
179+
180+Usualmente implementado en sysdir.inc.
181+
182+- MkDir
183+- RmDir
184+- ChDir
185+- GetDir
186+
187+### Otros
188+
189+- Randomize
190+- ParamCount, ParamStr (posiblemente para ser movido a common - \<EN ESPERA DE EDICIÓN\>)
191+
192+## Finalization
193+
194+### Shared
195+
196+#### InternalExit
197+
198+\<EN ESPERA DE EDICIÓN\>
199+
200+#### FinalizeHeap
201+
202+\<EN ESPERA DE EDICIÓN\>
203+
204+### Platform specific
205+
206+#### FinalDeallocation
207+
208+\<EN ESPERA DE EDICIÓN\>
209+
210+---
211+*From the Free Pascal wiki, page "System unit structure/es", as it stood on 2010-01-08 after a change by Iskraelectrica, 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).*
212+Category: Castellano
213+Category: Español

Back to history