Diff: 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


Difference between version 11 and version 1:
Lines 4-6 were replaced by lines 4-8
- one list when adding a new feature. Let us start with an
- example: You have written a new environment driver, and you
- want to add it to the system...
+ 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.
Line 8 was replaced by lines 10-12
- !Adding a new feature
+ 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:
At line 9 added 46 lines.
+ 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 ''CreatePsi''XXX 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.

Back to SicsInitializer, or to the Page History.