home *** CD-ROM | disk | FTP | other *** search
- #include <arpbase.h>
- #include <arp_proto.h>
- #include "Launch.h"
- #include "LaunchPriv.h"
-
-
- /*
- * NAME
- * FlushProcesses -- free all children that are dead.
- *
- * SYNOPSIS
- * FlushProcesses ()
- *
- * void FlushProcesses (void);
- *
- * DESCRIPTION
- * Scan the process pair list and if the parent is te current
- * process and the child is dead, it removes the pair and frees
- * the memory.
- *
- * After the scan, we check if the current process is still a
- * parent. If not, we free its signal bit.
- *
- * We then check if the list is empty and free it.
- *
- * INPUT
- * None.
- *
- * OUTPUT
- * None.
- *
- * HISTORY
- * 1992/09/07 Pierre Baillargeon Creation
- */
-
- void FlushProcesses (void)
- {
- struct ProcPair *pp;
- struct Process *Proc;
- LONG Bit;
-
- Bit = -1L;
- Proc = (struct Process *)FindTask (NULL);
-
- Forbid ();
- if (NULL != ProcPairList)
- {
- for (pp = (struct ProcPair *)ProcPairList->lh_Head; pp->pp_Node.ln_Succ; pp = (struct ProcPair *)pp->pp_Node.ln_Succ)
- {
- if (Proc == pp->pp_Parent && NULL == pp->pp_ChildEntry)
- {
- Bit = pp->pp_ParentBit;
- Remove (&pp->pp_Node);
- FreeMem (pp, sizeof (struct ProcPair));
- }
- }
- }
-
- FreeParentSignal (Bit);
- FreeProcPairList ();
-
- Permit ();
- }
-