summaryrefslogtreecommitdiffstats
path: root/src/usr/initservice/baseinitsvc/initservice.C
diff options
context:
space:
mode:
authorMark Wenning <wenning@us.ibm.com>2011-07-10 21:14:46 -0500
committerMark W. Wenning <wenning@us.ibm.com>2011-07-14 16:54:12 -0500
commit353cc0391b0982b936fe0437fbaa0439f775a6dd (patch)
treedd892737420cecffec8104a0eeef3dd2282a23a5 /src/usr/initservice/baseinitsvc/initservice.C
parent5530b7609c0351deb5d707c5950a56309842a325 (diff)
downloadtalos-hostboot-353cc0391b0982b936fe0437fbaa0439f775a6dd.tar.gz
talos-hostboot-353cc0391b0982b936fe0437fbaa0439f775a6dd.zip
IStep Dispatcher
- remove refs to include/src/usr/taskargs/ dir - use _start() macro in IStepDispatcher - post-review fixes - fixed - inadvertently ran copyright script on staged files Change-Id: I2b256524746d0eb25ed04e0835450e220dc65492 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/191 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com>
Diffstat (limited to 'src/usr/initservice/baseinitsvc/initservice.C')
-rw-r--r--src/usr/initservice/baseinitsvc/initservice.C83
1 files changed, 76 insertions, 7 deletions
diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C
index 0c3617023..de96ea922 100644
--- a/src/usr/initservice/baseinitsvc/initservice.C
+++ b/src/usr/initservice/baseinitsvc/initservice.C
@@ -65,14 +65,9 @@ errlHndl_t InitService::startTask( const TaskInfo *i_ptask,
assert(i_ptask->taskflags.task_type == START_TASK);
tidrc = task_exec( i_ptask->taskname, io_pargs ); // launch the child
-
- if ( io_pargs )
- {
- io_pargs->waitParentSync(); // sync up childtask
- }
-
if ( static_cast<int16_t>(tidrc) < 0 )
{
+ // task failed to launch, post an errorlog and dump some trace
io_rerrl = new ERRORLOG::ErrlEntry(
ERRORLOG::ERRL_SEV_CRITICAL_SYS_TERM, // severity
i_ptask->taskflags.module_id, // moduleid
@@ -91,6 +86,7 @@ errlHndl_t InitService::startTask( const TaskInfo *i_ptask,
} // endif tidrc
else
{
+ // task launched OK.
TRACDBIN( g_trac_initsvc,
"Task finished OK :",
i_ptask->taskname,
@@ -98,12 +94,85 @@ errlHndl_t InitService::startTask( const TaskInfo *i_ptask,
TRACDCOMP( g_trac_initsvc,
"task number %d, errlog p = %p",
tidrc, io_rerrl );
- }
+
+ if ( io_pargs )
+ {
+ io_pargs->waitParentSync(); // sync up childtask
+ }
+
+ }
return io_rerrl;
}
+errlHndl_t InitService::executeFn( const TaskInfo *i_ptask,
+ TaskArgs *io_pargs
+) const
+{
+ tid_t tidrc = 0;
+ errlHndl_t errl = NULL;
+
+ if ( i_ptask->taskfn == NULL )
+ {
+ TRACDBIN( g_trac_initsvc,
+ "ERROR: NULL function pointer:",
+ i_ptask->taskname,
+ strlen(i_ptask->taskname) );
+
+ errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_CRITICAL_SYS_TERM, // severity
+ i_ptask->taskflags.module_id, // moduleid
+ INITSERVICE::NULL_FN_PTR, // reason Code
+ 0,
+ 0 );
+
+ return errl;
+ }
+
+
+ // valid function, launch it
+ tidrc = task_create( i_ptask->taskfn, io_pargs );
+ if ( static_cast<int16_t>(tidrc) < 0 )
+ {
+ errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_CRITICAL_SYS_TERM, // severity
+ i_ptask->taskflags.module_id, // moduleid
+ INITSERVICE::START_FN_FAILED, // reason Code
+ tidrc, // user1 = tidrc
+ 0 );
+
+ TRACDBIN( g_trac_initsvc,
+ ENTER_MRK "ERROR starting function:",
+ i_ptask->taskname,
+ strlen(i_ptask->taskname) );
+ TRACDCOMP( g_trac_initsvc,
+ EXIT_MRK "tidrc=%d, errlog p = %p" ,
+ (int16_t)tidrc, errl );
+
+ } // endif tidrc
+ else
+ {
+ TRACDBIN( g_trac_initsvc,
+ ENTER_MRK "function launched OK :",
+ i_ptask->taskname,
+ strlen(i_ptask->taskname) );
+ TRACDCOMP( g_trac_initsvc,
+ EXIT_MRK "task number %d, errlog p = %p",
+ tidrc, errl );
+
+ // task launched OK.
+ if ( io_pargs )
+ {
+ io_pargs->waitParentSync(); // sync up parent task
+ }
+ }
+
+ return errl;
+
+}
+
+
void InitService::reportError(errlHndl_t &io_rerrl ) const
{
OpenPOWER on IntegriCloud