<big><b>Platform Implementations</b></big>

<br />&nbsp;<br />
This document describes the implementation issues with different platforms
that the SILC Toolkit support.  Some of the supported platforms does not
support all the features delivered with the Toolkit or they may behave
differently from other platforms.

<br />&nbsp;<br />
<li><a href="#unix">Unix & Linux Implementation</a><br />
<li><a href="#windows">Windows Implementation</a><br />
<li><a href="#macosx">Mac OS X Implementation</a>
<li><a href="#symbian">Symbian OS Implementation</a>

<br />&nbsp;<br />&nbsp;<br />
<b>Supported Platforms</b>

<br />&nbsp;<br />
SILC Toolkit supports by default all Unix and Linux platforms, Windows
platforms from Windows 2000 and newer, Mac OS X and Symbian OS.

<br />&nbsp;<br />&nbsp;<br />
<b><a name="unix"></a>Unix Implementation</b>

<br />&nbsp;<br />
All features and components delivered with the SILC Toolkit work on all
Unix and Linux platforms.  There are no special Unix platform related
implementation issues with current version of SILC Toolkit.


<br />&nbsp;<br />&nbsp;<br />
<b><a name="windows"></a>Windows Implementation</b>

<br />&nbsp;<br />
By default all features and components delivered with SILC Toolkit are 
supported on Windows.  However, there are some certain issues with the 
Windows version of the SILC Toolkit.

<br />&nbsp;<br />
<li>Some of the network routines do not support IPv6.


<br />&nbsp;<br />&nbsp;<br />
<b><a name="macosx"></a>Mac OS X Implementation</b>

<br />&nbsp;<br />
All features and components delivered with the SILC Toolkit work on Mac
OS X platform.  There are no special Mac OS X platform related
implementation issues with current version of SILC Toolkit.


<br />&nbsp;<br />&nbsp;<br />
<b><a name="symbian"></a>Symbian OS Implementation</b>

<br />&nbsp;<br />
Symbian OS support in SILC Toolkit is still experimental.  By default all 
features and components delivered with SILC Toolkit are supported and 
should work on Symbian.  However, there are some issues with the Symbian 
version of the SILC Toolkit of what Symbian developers need to be aware.

<br />&nbsp;<br />
<li>The function <tt>silc_schedule</tt> on Symbian will allocate new Active 
Scheduler Waiter and will block the calling thread.  The caller should 
allocate Active Scheduler before calling <tt>silc_schedule</tt>.

<li>When adding timeout tasks to SILC Scheduler the SILC Scheduler is woken 
up after the timeout task has been added.  This allows adding of the 
timeout tasks from Symbian active objects outside the SILC Scheduler loop.  
On other platforms this wakeup operation is not performed.

<li>Adding fd task to SILC Scheduler will not schedule the fd for any 
operation.  Instead, programmer should use SILC Socket Stream API and SILC 
Fd Stream API on Symbian when dealing with file descriptors and sockets.  
These APIs provide asynchronous notification when data is available and can 
be written.

<li>The function <tt>silc_thread_create</tt> on Symbian will install Active 
Scheduler and allocate Cleanup Stack for the new thread.  The created 
thread always shares heap with the parent thread.
