// IBM_PROLOG_BEGIN_TAG // This is an automatically generated prolog. // // $Source: src/include/usr/hwas/hwas.H $ // // IBM CONFIDENTIAL // // COPYRIGHT International Business Machines Corp. 2011 // // p1 // // Object Code Only (OCO) source materials // Licensed Internal Code Source Materials // IBM HostBoot Licensed Internal Code // // The source code for this program is not published or other- // wise divested of its trade secrets, irrespective of what has // been deposited with the U.S. Copyright Office. // // Origin: 30 // // IBM_PROLOG_END /** * @subpage Generating new HWP * * Hopefully we can automate this, if not, the tag file should still be * generated by the HWP writer. * template files for istep<@istepnum>list.H, and <@istepname.H> have have * been provided. * * Please consult the latest version of Dean's document * HostBoot IPL Flow for VPL and PgP * to get IStep names, IStep numbers, substep numbers, etc. * * Note: * <@istepname> is the IStep name stated in Dean's document, with * '_' substituted for spaces. * For example, dmi_training. * <@substepname> is the substep name stated in Dean's document, with '_' * substituted for spaces. * for example, proc_cen_framelock * * To set up to run a new HWP, follow these directions * ( or have your perlscript do it from the tag block ) * * Make up a new directory src/usr/HWPs/<@istepname> * Make up a new directory src/usr/HWPs/<@istepname>/<@substepname> * Copy code for new HWP to src/usr/HWPs/<@istepname>/<@substepname>. using git. * For example, to set up for istep 11.7, proc_gen_framelock : * ## cutNpaste the fetch comand from Gerrit. See the webpage at * ## http://gfw160.austin.ibm.com:8080/gerrit/#change,597 * git fetch ssh://wenning@gfw160.austin.ibm.com:29418/hwp_review_centaur refs/changes/97/597/3 * ## then run the git command to put the code in the right directory: * git diff FETCH_HEAD FETCH_HEAD~1 -R | git apply --directory=src/usr/HWPs/dmi_training/proc_gen_framelock * * Part of the HWP source should be a <@substep>.xml file . * Add the <@substep>.xml file (actually any xml files) to src/usr/hwpf/hwp * and update hwpf/makefile to process the xml file * * Make up a new file src/usr/HWPs/<@istepname>/<@istepname.H> (use src/usr/HWPs/template.H as a template) * Make up a new file src/usr/HWPs/<@istepname>/<@istepname.C> (use src/usr/HWPs/template.C as a template) * Make up new makefile src/usr/HWPs/<@istepname>/makefile to compile the HWP and wrapper * Make sure you add the lines * ## pointer to common HWP files * EXTRAINCDIR += ${ROOTPATH}/src/usr/HWPs/include * to the makefiles. * * * * Update all the other makefiles: * src/usr/HWPs/makefile * src/usr/makefile * src/makefile * * * Add a tag block inside <@istepname>.H ( for now, I would like to see this * inside the HWP source) with all the information on the * istep. An example tag block for IStep 11.7, DMI Training, proc_cen_framelock * is below. * The tag block will be used to modify and create framework files * to support the hardware procedure. * * Modify: * src/include/usr/istepmasterlist.H * src/usr/HWPs/<@istepname>/<@istepname>.H * src/usr/HWPs/<@istepname>/<@istepname>.C * Create: * src/include/usr/istep<@istepname>list.H * * The tag block keywords, with explanations, are as follows: * * @tag isteplist * - should be at the beginning of the block to tell the (mythical) perl * script that this will generate an IStep wrapper for an HWP * * * @docversion (version # of Dean's IPL document) * - adds a comment to istep<@istepname>list.H * * * @istepname ( istep name from Dean's IPL document ) * - creates a namespace ISTEP_NAME, i.e. uppercased <@istepame> * in <@istepname>.C and <@istepname>.H * - creates a new module id in src/include/usr/initsvcreasoncodes.H * - creates a modulename string "<@istepname>.so" for istep<@istepnum>list.H * - ? * * * @istepnum (istep number from Dean's IPL document) * - creates a new istep<@istepnum>list.H file in /usr/include/isteps/ * - adds the new istep<@istepnum>list.H file to src/include/usr/istepmasterlist.H * in the correct place in the master istep list. * - sets the istep number in the ISTEPNAME() macro in istep<@istepnum>list.H * * @istepdesc ( description of istep from Dean's document ) * - creates comments in istep<@istepnum>list.H file * * -- one or more substep blocks enclosed by @{ .. @} * @{ * * @substepname (substepname from Dean's document) * - creates a prototype for <@substepname> * * * @substepnum ( number of substep from Dean's document ) * - sets the istep number in the ISTEPNAME() macro in istep<@istepnum>list.H * * @target_sched ( serial or parallel ) * - will attempt to run each target either serially or in parallel * * -- 0 or more target types to be used as parameters to HWP * TBD needs work * @target_type (type or class of targets that this HWP should run under) * - adds code to find the targets used in TARGETING * @} */ #ifndef __<@istepname>_<@istepname>_H #define __<@istepname>_<@istepname>_H /** * @file <@istepname>.H * * <@istepname> * * All of the following routines are "named isteps" - they are invoked as * tasks by the @ref IStepDispatcher. * */ /******************************************************************************/ // Includes /******************************************************************************/ #include namespace <@istepname> { /** * @brief <@substepname> * * <@istepnum>.<@substepnum> : <@substepdesc> * * param[in,out] io_pArgs - (normally) a pointer to a TaskArgs struct, * or NULL. * return none * */ void call_<@substepname>( void * io_pArgs ); }; // end namespace #endif