diff -r 4816d766a08a -r f345bda72bc4 Symbian3/PDK/Source/GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita --- a/Symbian3/PDK/Source/GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita Tue Mar 30 11:42:04 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita Tue Mar 30 11:56:28 2010 +0100 @@ -1,97 +1,97 @@ - - - - - -Limitations -

Some APIs of the Standard C Library are not implemented because of the -constraints or limitations of Symbian platform:

-
    -
  • AF_LOCAL sockets only support SO_SNDBUF and SO_RCVBUF in setsockopt and SO_TYPE, SO_SNDBUF and SO_RCVBUF in getsockopt. -No ioctl commands are available.

  • -
  • AF_LOCAL sockets do not support shutdown().

  • -
  • The stdioserver does not support per-process configurations.

  • -
  • Signals cannot be directed at an individual thread.

  • -
  • kill(self)/sigqueue(self)/raise() is -not synchronous in the current implementation.

  • -
  • Semantics of signal delivery is different from that of *nix OSes.

  • -
  • The tm_tzname in the struct tm is -not updated by localtime() and mktime(). -This is owing to a limitation of localisation resource files in these platforms. -The field will always be set to "UTC".

  • -
  • On S60 emulators started in textshell mode, the time -zone offset returns the wrong value. In GUI mode, the offset is set correctly.

  • -
  • The tm_isdst field in the struct tm (used in localtime() and mktime()) -is not updated properly on the S60 3rd Edition SDK and devices; the field -is simply set to -1.

  • -
  • mktime() and localtime() APIs -are about 3 times slower on the S60 3rd Edition SDK and devices, because of -lack of native support for more efficient code that is used for S60 3rd Edition, -Feature Pack 1 and later SDKs.

  • -
  • In text mode stdio, fseek() to -the return value of ftell() does not behave as expected.

  • -
  • In text-mode, fread(), fwrite() and -their siblings will take approximately twice the time compared to binary mode. -This is because of extra code required to perform newline-translations in -text-mode.

  • -
  • P.I.P.S. applications built using the plug-in with this SDK, will not -run on earlier versions of runtimes.

  • -
  • stat() retrieves the modification time of a directory -incorrectly, if it was set (by utime()) to an odd value.

  • -
  • Owing to the difference in the Symbian platform model (when compared -to UNIX -like OS), fork() and exec() functions -are not supported.

  • -
  • Since fork() and exec() are not -supported, popen() is not complete. It will create a child -process and open a pipe between a parent and a child process either in read -or write mode. It does not copy the address space to a child.

  • -
  • The following are the limitations with waitpid(pid_t waitpid(pid_t -pid, int *stat_loc, int options);

      -
    • On OpenC there is no process group Ids. So, passing pid as 0 and -less than -1 does not work as intended.

    • -
    • On OpenC, support is provided only for options - WNOHANG. -Others are not supported.

    • -
    • The macros which related to job control which work on the stat_loc do -not work:

        -
      • WIFSIGNALED

      • -
      • WTERMSIG

      • -
      • WIFSTOPPED

      • -
      • WSTOPSIG

      • -
      • WIFCONTINUED.

      • -
    • -
    • On Symbian, the following additional macros that work on the stat_loc are -provided:

        -
      • WIFTERMINATED

      • -
      • WTERMINATESTATUS

      • -
      • WIFPANICED

      • -
      • WPANICCODE

      • -
    • -
  • -
  • For int dup2(int oldfd, int newfd);, the return value -of dup2 can be different from the one the developer expected -it to be (newfd). So, the developer of dup2 should -use the return value of dup2 as the new allocated fd rather -than the one passed to dup2 (newfd). According to the standard, newfd and -return values are the same, if dup2 is successful.

  • -
  • Some of the APIs of Open C assume that a cleanup stack is created and -there is a top-level TRAP for the current thread. All the threads created -using RThread::Create() should create them explicitly.

  • -
  • In case of Open C, libc will have its own console -object maintained and all threads console I/O will be routed to the console. -In case of a hybrid application, if the application creates one more console, -then switching between these consoles will be a problem. The user may not -be aware of this problem.

  • -
  • In case of an emulator, the developer can configure the window size -dynamically. But the console maintained by Open C libc will -remain the same. So, if the configuration is changed, data displayed on the -console may not be aligned properly.

  • -
-

More detailed information about the limitations can be found in the P.I.P.S. -API reference documentation.

+ + + + + +Limitations +

Some APIs of the Standard C Library are not implemented because of the +constraints or limitations of Symbian platform:

+
    +
  • AF_LOCAL sockets only support SO_SNDBUF and SO_RCVBUF in setsockopt and SO_TYPE, SO_SNDBUF and SO_RCVBUF in getsockopt. +No ioctl commands are available.

  • +
  • AF_LOCAL sockets do not support shutdown().

  • +
  • The stdioserver does not support per-process configurations.

  • +
  • Signals cannot be directed at an individual thread.

  • +
  • kill(self)/sigqueue(self)/raise() is +not synchronous in the current implementation.

  • +
  • Semantics of signal delivery is different from that of *nix OSes.

  • +
  • The tm_tzname in the struct tm is +not updated by localtime() and mktime(). +This is owing to a limitation of localisation resource files in these platforms. +The field will always be set to "UTC".

  • +
  • On S60 emulators started in textshell mode, the time +zone offset returns the wrong value. In GUI mode, the offset is set correctly.

  • +
  • The tm_isdst field in the struct tm (used in localtime() and mktime()) +is not updated properly on the S60 3rd Edition SDK and devices; the field +is simply set to -1.

  • +
  • mktime() and localtime() APIs +are about 3 times slower on the S60 3rd Edition SDK and devices, because of +lack of native support for more efficient code that is used for S60 3rd Edition, +Feature Pack 1 and later SDKs.

  • +
  • In text mode stdio, fseek() to +the return value of ftell() does not behave as expected.

  • +
  • In text-mode, fread(), fwrite() and +their siblings will take approximately twice the time compared to binary mode. +This is because of extra code required to perform newline-translations in +text-mode.

  • +
  • P.I.P.S. applications built using the plug-in with this SDK, will not +run on earlier versions of runtimes.

  • +
  • stat() retrieves the modification time of a directory +incorrectly, if it was set (by utime()) to an odd value.

  • +
  • Owing to the difference in the Symbian platform model (when compared +to UNIX -like OS), fork() and exec() functions +are not supported.

  • +
  • Since fork() and exec() are not +supported, popen() is not complete. It will create a child +process and open a pipe between a parent and a child process either in read +or write mode. It does not copy the address space to a child.

  • +
  • The following are the limitations with waitpid(pid_t waitpid(pid_t +pid, int *stat_loc, int options);

      +
    • On OpenC there is no process group Ids. So, passing pid as 0 and +less than -1 does not work as intended.

    • +
    • On OpenC, support is provided only for options - WNOHANG. +Others are not supported.

    • +
    • The macros which related to job control which work on the stat_loc do +not work:

        +
      • WIFSIGNALED

      • +
      • WTERMSIG

      • +
      • WIFSTOPPED

      • +
      • WSTOPSIG

      • +
      • WIFCONTINUED.

      • +
    • +
    • On Symbian, the following additional macros that work on the stat_loc are +provided:

        +
      • WIFTERMINATED

      • +
      • WTERMINATESTATUS

      • +
      • WIFPANICED

      • +
      • WPANICCODE

      • +
    • +
  • +
  • For int dup2(int oldfd, int newfd);, the return value +of dup2 can be different from the one the developer expected +it to be (newfd). So, the developer of dup2 should +use the return value of dup2 as the new allocated fd rather +than the one passed to dup2 (newfd). According to the standard, newfd and +return values are the same, if dup2 is successful.

  • +
  • Some of the APIs of Open C assume that a cleanup stack is created and +there is a top-level TRAP for the current thread. All the threads created +using RThread::Create() should create them explicitly.

  • +
  • In case of Open C, libc will have its own console +object maintained and all threads console I/O will be routed to the console. +In case of a hybrid application, if the application creates one more console, +then switching between these consoles will be a problem. The user may not +be aware of this problem.

  • +
  • In case of an emulator, the developer can configure the window size +dynamically. But the console maintained by Open C libc will +remain the same. So, if the configuration is changed, data displayed on the +console may not be aligned properly.

  • +
+

More detailed information about the limitations can be found in the P.I.P.S. +API reference documentation.

\ No newline at end of file