SicsInitializer

Search SINQ Wiki:
SINQ LIN

SINQ Wiki
- Main Page
- Search SINQ Wiki
- Sample Environment
- Probenumg. Intern
- Troubleshooting SICS

This Page
- Page Info
- Printer Friendly

Referenced by
NewFeaturesInSICS

Wiki Info
- Unused pages
- Undefined pages
- RecentChanges
- Page Index
- System Info
- JSPWiki Docu
- SandBox
- OneMinuteWiki
- Create a New Page




JSPWiki v2.0.52


New Initialization Scheme for SICS

The idea behind this scheme is, to have to edit only one list when adding a new feature. The aim is not to make the source code shorter. In fact, the initialization code is just moved from a central place to the modules. The main goal is to have a better structure of the code, which should be easier to maintain, and less error-prone.

Let us look at the difference when adding a command or driver. Before using this scheme, there were many different places in psi/psi.c where modifications had to be added:

when adding a new command:

  • prototype declaration of the command function or include statement
  • inserting the command to the AddPsiCommands function
  • if it is a startup command, inserting the command to the RemovePsiCommands function

when adding a new driver:

  • prototype declaration of the driver creation function or include statement
  • adding an "else if" clause to the CreatePsiXXX function
  • in the case of an environment driver, also add an "else if" clause to the ConfigureController function.

With the new scheme, for a module one has one init function, with prototype "void (void)" placed in the source file of the module. In this function, you call AddCmd, AddIniCmd or AddCommand(SCinter.h) to insert a standalone command, startup command or an object command. To create a new driver, use either the MakeDriver function, if you want to use the MakeObject command to create the driver, or the functions MakeInitializer/GetInitializer, if you want to do use an other factory command (see initializer.h). The init function has to be added to the system by inserting one line to the SiteInit (psi.c) or InitGeneral (ofac.c) function.

Suggestion by Markus Zolliker

At present, only the new stuff I inserted uses this scheme. I propose to move to the new scheme during next shutdown.

ofac.c:

  • remove InitIniCommands (moving first few lines InitObjectCommands) and RemoveIniCommands
  • move InitGeneral to a new file named inigen.c
  • Create init functions for all modules defining commands, and add calls to the InitGeneral function

psi.c:

  • all stuff (except SiteInit) is moved to the corresponding modules, using MakeInitializer/GetInitializer

These modifications will not change the behaviour of SICS.


Printer Friendly  Page Info
This page last changed on 13-Sep-2005 14:50:20 UTC by MarkusZolliker.