Differences between revisions 4 and 5
Revision 4 as of 2014-07-01 06:52:58
Size: 1341
Editor: HungTa
Comment:
Revision 5 as of 2014-07-01 06:55:02
Size: 1343
Editor: HungTa
Comment:
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
== APIs == === APIs ===

SAFplus initialization

SAFplus provides library initialization infrastructure: log, utils, osal, timer... They're the basic libraries that most applications should use. However, not all of them would be used. Furthermore, it's necessary to be able to explicitly link individual libraries for highly embedded users.

Implementation

SAFplus initialization can be implemented in 2 methods:

According to GNU weak attribute declaration, we can declare initialization functions as the weak linked functions. Therefore, their definitions can be omitted (in case they're not used), or replaced by different libraries (in case they're used). The linker will fill in NULL for undefined weak symbols.

#include <clGlobals.hxx>

APIs

   1 namespace SAFplus
   2 {
   3   extern void utilsInitialize() __attribute__((weak));
   4   extern void logInitialize() __attribute__((weak));
   5   // TODO: other initialization functions declaration here
   6 
   7   enum
   8   {
   9     RPC=1,
  10     CKPT=2,
  11     IOC=4,
  12     UTILS=8,
  13     OSAL=16,
  14     LOG=32
  15   };
  16 
  17   void safplusInitialize(uint16_t svc)
  18   {
  19     if(svc&LOG)
  20       if(logInitialize) logInitialize();
  21     if(svc&UTILS)
  22       if(utilsInitialize) utilsInitialize();
  23     // TODO: other ones here
  24   }
  25     
  26 }

SAFplus: SAFplus-initialization (last edited 2014-07-22 14:00:44 by AndrewStone)