Symbian3/SDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita
changeset 13 48780e181b38
parent 8 ae94777fff8f
equal deleted inserted replaced
12:80ef3a206772 13:48780e181b38
     7     Nokia Corporation - initial contribution.
     7     Nokia Corporation - initial contribution.
     8 Contributors: 
     8 Contributors: 
     9 -->
     9 -->
    10 <!DOCTYPE concept
    10 <!DOCTYPE concept
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    12 <concept id="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B" xml:lang="en"><title>Build
    12 <concept id="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B" xml:lang="en"><title>Build Process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
    13 Process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
       
    14 <ul>
    13 <ul>
    15 <li id="GUID-1F561425-9B98-544A-A0CB-086E0931313E"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F">Introduction</xref>  </p> </li>
    14 <li id="GUID-1F561425-9B98-544A-A0CB-086E0931313E"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F">Introduction</xref>  </p> </li>
    16 <li id="GUID-DE26248D-27DE-5B38-9BFA-FE4CBAB676F6"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-423A00CF-D668-5114-860D-B30185DAB0B2">P.I.P.S. target types</xref>  </p> </li>
    15 <li id="GUID-DE26248D-27DE-5B38-9BFA-FE4CBAB676F6"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-423A00CF-D668-5114-860D-B30185DAB0B2">P.I.P.S. target types</xref>  </p> </li>
    17 <li id="GUID-9EC5C68C-CDFC-5608-A26C-FD6001822217"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D">Symbol information</xref>  </p> </li>
    16 <li id="GUID-9EC5C68C-CDFC-5608-A26C-FD6001822217"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D">Symbol information</xref>  </p> </li>
    18 <li id="GUID-6EDF3969-49B8-5F74-BFBF-C323D2C8480C"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E">Mapping POSIX handles to the Symbian platform resource objects</xref>  </p> <ul>
    17 <li id="GUID-6EDF3969-49B8-5F74-BFBF-C323D2C8480C"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E">Mapping POSIX handles to the Symbian platform resource objects</xref>  </p> <ul>
    19 <li id="GUID-30586541-C6EB-5794-8171-2302C53AAE45"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE">Using non-system calls</xref>  </p> </li>
    18 <li id="GUID-30586541-C6EB-5794-8171-2302C53AAE45"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE">Using non-system calls</xref>  </p> </li>
    20 <li id="GUID-E146BFE8-FDFE-551D-B280-5AD5303996C7"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-FBF12198-B501-5525-86AF-5517A012FDF1">Using the System Call Adaptation Layer</xref>  </p> </li>
    19 <li id="GUID-E146BFE8-FDFE-551D-B280-5AD5303996C7"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-FBF12198-B501-5525-86AF-5517A012FDF1">Using the System Call Adaptation Layer</xref>  </p> </li>
    21 </ul> </li>
    20 </ul> </li>
    22 </ul>
    21 </ul>
    23 <section id="GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F"><title>Introduction</title> <p>Symbian
    22 <section id="GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F"><title>Introduction</title> <p>Symbian currently builds its emulator code with the Metrowerks
    24 currently builds its emulator code with the Metrowerks CodeWarrior compiler.
    23 CodeWarrior compiler. This is known as the <codeph>WINSCW</codeph> build target. Binaries built with this compiler are put in the <filepath>epoc32\release\winscw</filepath> and <filepath>epoc32\winscw</filepath> directory trees. </p> <p>You can build your programs for the emulator
    25 This is known as the <codeph>WINSCW</codeph> build target. Binaries built
    24 using Metrowerks CodeWarrior. The build tools also support the Microsoft®
    26 with this compiler are put in the <filepath>epoc32\release\winscw</filepath> and <filepath>epoc32\winscw</filepath> directory
    25 Visual Studio .NET 2003 and Microsoft Visual Studio v6 IDEs. Note that licensees or third-parties may supply additional
    27 trees. </p> <p>You can build your programs for the emulator using Metrowerks
    26 tools, or extend support to additional compilers, which are not described
    28 CodeWarrior. The build tools also support the Microsoft® Visual Studio .NET
    27 here. </p> <p>The following sections describe the Symbian platform
    29 2003 and Microsoft Visual Studio v6 IDEs. For further information, see the <xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build tools guide</xref> section.
    28 target types introduced with P.I.P.S.. </p> <p>When using tool chains
    30 Note that licensees or third-parties may supply additional tools, or extend
    29 for pre-Symbian OS v9.3, the <filepath>.mmp</filepath> file has to
    31 support to additional compilers, which are not described here. </p> <p>The
    30 be manually changed to link in various libraries. </p> <p>For Symbian
    32 following sections describe the Symbian platform target types
    31 OS v9.3 onwards the tool chain supports the new <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> target types for P.I.P.S. EXEs and DLLs.
    33 introduced with P.I.P.S.. For further information see <xref href="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita">the
    32 See the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation of STDEXE, STDDLL and STDLIB</xref> section for further
    34 native build targets</xref> section. </p> <p>When using tool chains for pre-Symbian
    33 explanation of the new target types introduced with P.I.P.S.. </p> </section>
    35 OS v9.3, the <filepath>.mmp</filepath> file has to be manually changed to
    34 <section id="GUID-423A00CF-D668-5114-860D-B30185DAB0B2"><title>P.I.P.S.
    36 link in various libraries. </p> <p>For Symbian OS v9.3 onwards the tool chain
    35 target types</title> <p>P.I.P.S. EXEs require adaptation logic to
    37 supports the new <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> target
    36 set up the C program environment and the P.I.P.S. run-time C library
    38 types for P.I.P.S. EXEs and DLLs. See the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation
    37 context - this is performed by the <codeph>CRT0</codeph> library (also
    39 of STDEXE, STDDLL and STDLIB</xref> section for further explanation of the
    38 known as glue code, see the <xref href="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita#GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D/GUID-49C7F951-8317-5F41-B1B9-9F7B8803E655">Glue code (CRT0)</xref> section for further details). </p> <p>P.I.P.S.
    40 new target types introduced with P.I.P.S.. </p> </section>
    39 executables are implemented using native Symbian platform executables
    41 <section id="GUID-423A00CF-D668-5114-860D-B30185DAB0B2"><title>P.I.P.S. target
    40 linked statically to the glue code. The new target types for P.I.P.S.
    42 types</title> <p>P.I.P.S. EXEs require adaptation logic to set up the C program
    41 include the glue code by default. The glue code provides the linking
    43 environment and the P.I.P.S. run-time C library context - this is performed
    42 code between the <codeph>E32Main()</codeph> entry point and the <codeph>main()</codeph> entry point used in 'C' P.I.P.S. EXEs. </p> <p>For
    44 by the <codeph>CRT0</codeph> library (also known as glue code, see the <xref href="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita#GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D/GUID-49C7F951-8317-5F41-B1B9-9F7B8803E655">Glue
    43 further information see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita">Target Types</xref> section. </p> </section>
    45 code (CRT0)</xref> section for further details). </p> <p>P.I.P.S. executables
    44 <section id="GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D"><title>Symbol
    46 are implemented using native Symbian platform executables linked statically
    45 information</title> <p>When building a P.I.P.S. DLL (that is, when
    47 to the glue code. The new target types for P.I.P.S. include the glue code
    46 the target type is <codeph>STDDLL</codeph>), function and data symbols
    48 by default. The glue code provides the linking code between the <codeph>E32Main()</codeph> entry
    47 with <codeph>extern</codeph> linkage will be exported or imported
    49 point and the <codeph>main()</codeph> entry point used in 'C' P.I.P.S. EXEs. </p> <p>For
    48 by default, without any requirement for <xref href="GUID-BD292953-36BF-3C7D-AA93-98E6CB38968E.dita"><apiname>IMPORT_C</apiname></xref> /<xref href="GUID-2F78C3AC-7330-34C0-8A83-75D7345F2DC8.dita"><apiname>EXPORT_C</apiname></xref> declarations in the header or source
    50 further information see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita">Target
    49 files. </p> <p>Exporting of symbols with <codeph>extern</codeph> linkage
    51 Types</xref> section. </p> </section>
    50 is the assumed default on other platforms and enables the source code
    52 <section id="GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D"><title>Symbol information</title> <p>When
    51 to be easily ported. Although this may normally be undesirable in
    53 building a P.I.P.S. DLL (that is, when the target type is <codeph>STDDLL</codeph>),
    52 the embedded world, it is supported for <codeph>STDDLL</codeph> to
    54 function and data symbols with <codeph>extern</codeph> linkage will be exported
    53 avoid portable source code having to include excessive decoration
    55 or imported by default, without any requirement for <xref href="GUID-BD292953-36BF-3C7D-AA93-98E6CB38968E.dita"><apiname>IMPORT_C</apiname></xref> /<xref href="GUID-2F78C3AC-7330-34C0-8A83-75D7345F2DC8.dita"><apiname>EXPORT_C</apiname></xref> declarations
    54 (that is, the <codeph>IMPORT_C</codeph> /<codeph>EXPORT_C</codeph> macros) for the Symbian platform. </p> <p> <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> provide symbol name information. For
    56 in the header or source files. </p> <p>Exporting of symbols with <codeph>extern</codeph> linkage
    55 more information on the Symbian platform target types see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation of STDEXE, STDDLL and STDLIB</xref> section. </p> </section>
    57 is the assumed default on other platforms and enables the source code to be
    56 <section id="GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E"><title>Mapping
    58 easily ported. Although this may normally be undesirable in the embedded world,
    57 POSIX handles to the Symbian platform resource objects</title> <p id="GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE"><b>Using non-system
    59 it is supported for <codeph>STDDLL</codeph> to avoid portable source code
    58 calls</b> </p> <p>Several P.I.P.S. APIs that directly manipulate the
    60 having to include excessive decoration (that is, the <codeph>IMPORT_C</codeph> /<codeph>EXPORT_C</codeph> macros)
    59 Symbian platform (native) resources are implemented in the System
    61 for the Symbian platform. </p> <p> <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> provide
    60 Call Adaptation Layer (SCAL). The exceptions to this are <codeph>pthread</codeph> s, and memory maps. The <codeph>pthread</codeph> APIs use <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> s and <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref> es directly from
    62 symbol name information. For more information on the Symbian platform target
    61 within <codeph>libpthread</codeph>. Similarly, <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> s that are used to provide support for memory maps are directly
    63 types see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation
    62 manipulated from within <codeph>libc</codeph>. Note that none of these
    64 of STDEXE, STDDLL and STDLIB</xref> section. </p> </section>
    63 APIs allow direct access to the underlying native resources. References
    65 <section id="GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E"><title>Mapping POSIX
    64 to these are wrapped in POSIX-defined data structures. These data
    66 handles to the Symbian platform resource objects</title> <p id="GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE"><b>Using
    65 structures are intended to be treated as opaque and no attempt must
    67 non-system calls</b> </p> <p>Several P.I.P.S. APIs that directly manipulate
    66 be made to dereference or use the underlying resource reference directly. </p> <p>All IPC calls enter the SCAL, but are handled in a separate IPC
    68 the Symbian platform (native) resources are implemented in the System Call
    67 library. This is a component distinction. The IPC library is logically
    69 Adaptation Layer (SCAL). The exceptions to this are <codeph>pthread</codeph> s,
    68 still part of the SCAL. </p> <p id="GUID-FBF12198-B501-5525-86AF-5517A012FDF1"><b>Using the System
    70 and memory maps. The <codeph>pthread</codeph> APIs use <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> s
    69 Call Adaptation Layer</b> </p> <p>One of the supports provided by
    71 and <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref> es directly from within <codeph>libpthread</codeph>.
    70 the System Call Adaptation Layer (SCAL) is the mapping of operations
    72 Similarly, <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> s that are used to provide support for
    71 on UNIX® file descriptors to the corresponding Symbian platform resource
    73 memory maps are directly manipulated from within <codeph>libc</codeph>. Note
    72 objects. The section below discusses the file descriptors case. </p> <p id="GUID-1A1FC433-B9F6-5998-9622-14B961F477E2"><b>Creating a
    74 that none of these APIs allow direct access to the underlying native resources.
    73 new file descriptor</b> </p> <p>The porting of the 'C' POSIX <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function, below, is a good example of mapping POSIX
    75 References to these are wrapped in POSIX-defined data structures. These data
    74 handles to native Symbian platform resource objects. The mapping is
    76 structures are intended to be treated as opaque and no attempt must be made
    75 done through a file descriptor table. As a reminder, every application/process
    77 to dereference or use the underlying resource reference directly. </p> <p>All
    76 has its own file descriptor table. </p> <p>This example shows a call
    78 IPC calls enter the SCAL, but are handled in a separate IPC library. This
    77 to the <codeph>fopen()</codeph> function: </p> <codeblock id="GUID-F9681B44-A1E6-5971-9C5E-147D4281DBF0" xml:space="preserve">//myapp.cpp
    79 is a component distinction. The IPC library is logically still part of the
       
    80 SCAL. </p> <p id="GUID-FBF12198-B501-5525-86AF-5517A012FDF1"><b>Using the
       
    81 System Call Adaptation Layer</b> </p> <p>One of the supports provided by the
       
    82 System Call Adaptation Layer (SCAL) is the mapping of operations on UNIX®
       
    83 file descriptors to the corresponding Symbian platform resource objects. The
       
    84 section below discusses the file descriptors case. </p> <p id="GUID-1A1FC433-B9F6-5998-9622-14B961F477E2"><b>Creating
       
    85 a new file descriptor</b> </p> <p>The porting of the 'C' POSIX <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function,
       
    86 below, is a good example of mapping POSIX handles to native Symbian platform
       
    87 resource objects. The mapping is done through a file descriptor table. As
       
    88 a reminder, every application/process has its own file descriptor table. </p> <p>This
       
    89 example shows a call to the <codeph>fopen()</codeph> function: </p> <codeblock id="GUID-F9681B44-A1E6-5971-9C5E-147D4281DBF0" xml:space="preserve">//myapp.cpp
       
    90 int foo()
    78 int foo()
    91 {
    79 {
    92    //open the test.tx , fd=7 in this example
    80    //open the test.tx , fd=7 in this example
    93    int fd = fopen("c:/test.txt", "r+");
    81    int fd = fopen("c:/test.txt", "r+");
    94    ...
    82    ...
    95    //writes to file referenced by the file descriptor  
    83    //writes to file referenced by the file descriptor  
    96    ret = write (fd, buf, size_t);
    84    ret = write (fd, buf, size_t);
    97 
    85 
    98 }</codeblock> <p>When <i>myapp</i> tries to open the file with <codeph>fopen()</codeph>,
    86 }</codeblock> <p>When <i>myapp</i> tries to open the file with <codeph>fopen()</codeph>, the application makes a call to the equivalent
    99 the application makes a call to the equivalent Symbian platform function, <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-72470A68-7E07-30EF-A3C8-AA855CDAF60E"><apiname>RFile::Open()</apiname></xref>,
    87 Symbian platform function, <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-72470A68-7E07-30EF-A3C8-AA855CDAF60E"><apiname>RFile::Open()</apiname></xref>, and returns
   100 and returns the next free entry in the file descriptor table. </p> <p>In each
    88 the next free entry in the file descriptor table. </p> <p>In each
   101 table, the values <codeph>0</codeph>, <codeph>1</codeph> and <codeph>2</codeph> are
    89 table, the values <codeph>0</codeph>, <codeph>1</codeph> and <codeph>2</codeph> are reserved for <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref>, <xref href="GUID-0441C351-4A8B-3A23-9255-D7C8CEA2A67F.dita"><apiname>sdtout()</apiname></xref> and <xref href="GUID-4FF97B50-2C1E-37EC-888B-FB8D3F14B5B8.dita"><apiname>stderr()</apiname></xref>. The figure below
   102 reserved for <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref>, <xref href="GUID-0441C351-4A8B-3A23-9255-D7C8CEA2A67F.dita"><apiname>sdtout()</apiname></xref> and <xref href="GUID-4FF97B50-2C1E-37EC-888B-FB8D3F14B5B8.dita"><apiname>stderr()</apiname></xref>.
    90 shows an example file descriptor table. </p> <fig id="GUID-4CEA6881-49E0-5211-8258-C44A8E8F3CDE">
   103 The figure below shows an example file descriptor table. </p> <fig id="GUID-4CEA6881-49E0-5211-8258-C44A8E8F3CDE">
    91 <image href="GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e154936_href.png" placement="inline"/>
   104 <image href="GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e149865_href.png" placement="inline"/>
    92 </fig> <p>According to the descriptor table the file descriptor equals <codeph>7</codeph>, as this was the next free entry in the table, and the
   105 </fig> <p>According to the descriptor table the file descriptor equals <codeph>7</codeph>,
    93 write function will be writing to the file referenced by <codeph>7</codeph>. </p> <p> <b>Note:</b> A POSIX descriptor is an index in the process
   106 as this was the next free entry in the table, and the write function will
    94 open file table and represents, for example, an open file, socket
   107 be writing to the file referenced by <codeph>7</codeph>. </p> <p> <b>Note:</b> A
    95 or pipe. A Symbian descriptor represents data which can reside in
   108 POSIX descriptor is an index in the process open file table and represents,
    96 any memory location, either in ROM or RAM. A descriptor object maintains
   109 for example, an open file, socket or pipe. A Symbian descriptor represents
    97 pointer and length information to describe the data. All access to
   110 data which can reside in any memory location, either in ROM or RAM. A descriptor
    98 the data is made through the descriptor object. </p> <p id="GUID-79958B57-8C71-5875-9C5B-8C313A96D13A"><b>Descriptors shared
   111 object maintains pointer and length information to describe the data. All
    99 across multiple threads within the same process</b> </p> <p>Originally
   112 access to the data is made through the descriptor object. </p> <p id="GUID-79958B57-8C71-5875-9C5B-8C313A96D13A"><b>Descriptors
       
   113 shared across multiple threads within the same process</b> </p> <p>Originally
       
   114 on the Symbian platform, resources were thread specific and multi-tasking
   100 on the Symbian platform, resources were thread specific and multi-tasking
   115 was achieved using servers and active objects. In other operating systems,
   101 was achieved using servers and active objects. In other operating
   116 such as Linux, resources are process-local and multi-tasking is achieved by
   102 systems, such as Linux, resources are process-local and multi-tasking
   117 multi-threading. The purpose of the POSIX server in the original <codeph>STDLIB</codeph> was
   103 is achieved by multi-threading. The purpose of the POSIX server in
   118 to allow system-wide data, resources and descriptors to be shared across multiple
   104 the original <codeph>STDLIB</codeph> was to allow system-wide data,
   119 threads. This means there was context switching between the calling thread
   105 resources and descriptors to be shared across multiple threads. This
   120 and the server thread which added latency. </p> <p>With the introduction of
   106 means there was context switching between the calling thread and the
   121 the EKA2 kernel, session handles can now be shared across multiple threads
   107 server thread which added latency. </p> <p>With the introduction of
   122 and processes. </p> <p>P.I.P.S. takes advantage of EKA2 and re-factors the
   108 the EKA2 kernel, session handles can now be shared across multiple
   123 SCAL to allow descriptors to be shared across multiple threads within the
   109 threads and processes. </p> <p>P.I.P.S. takes advantage of EKA2 and
   124 same process, without the use of the POSIX server. </p> </section>
   110 re-factors the SCAL to allow descriptors to be shared across multiple
       
   111 threads within the same process, without the use of the POSIX server. </p> </section>
   125 </conbody></concept>
   112 </conbody></concept>