FreeCalypso > hg > fc-selenite
annotate src/nucleus/pmf.c @ 50:a9a7d531e673
components: initial support for gcc
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 19 Jul 2018 19:23:19 +0000 | 
| parents | 0f80e1e4dce4 | 
| children | 
| rev | line source | 
|---|---|
| 7 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 /* Copyright Mentor Graphics Corporation 2002 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 /* All Rights Reserved. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 /* THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 /* THE PROPERTY OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 /* SUBJECT TO LICENSE TERMS. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 /* FILE NAME VERSION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 /* pmf.c Nucleus PLUS 1.14 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 /* COMPONENT */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 /* PM - Partition Memory Management */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 /* DESCRIPTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 /* This file contains routines to obtain facts about the Partition */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 /* Memory Management component. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 /* DATA STRUCTURES */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 /* None */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 /* FUNCTIONS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 /* PMF_Established_Partition_Pools Number of partition pools */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 /* PMF_Partition_Pool_Pointers Build partition pool pointer */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 /* list */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 /* PMF_Partition_Pool_Information Retrieve partition pool info */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 /* DEPENDENCIES */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 /* cs_extr.h Common Service functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 /* tc_extr.h Thread Control functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 /* pm_extr.h Partition functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 /* hi_extr.h History functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 /* HISTORY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 /* DATE REMARKS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 /* 03-01-1994 Initial version of partition fact */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 /* service file, version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 /* 03-18-1994 Verified version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 /* 04-17-1996 updated to version 1.2 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 /* 11-18-1996 Protected Informational service */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 /* from NULL Control Block pointers */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 /* creating 1.2a. (SPR220) */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 /* 03-24-1998 Released version 1.3. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 /* 03-26-1999 Released 1.11m (new release */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 /* numbering scheme) */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 /* 04-17-2002 Released version 1.13m */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 /* 11-07-2002 Released version 1.14 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 #define NU_SOURCE_FILE | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 #include "cs_extr.h" /* Common service functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 #include "tc_extr.h" /* Thread control functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 #include "pm_extr.h" /* Partition functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 #include "hi_extr.h" /* History functions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 /* Define external inner-component global data references. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 extern CS_NODE *PMD_Created_Pools_List; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 extern UNSIGNED PMD_Total_Pools; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 extern TC_PROTECT PMD_List_Protect; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 /* FUNCTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 /* PMF_Established_Partition_Pools */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 /* DESCRIPTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 /* This function returns the current number of established */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 /* partition pools. Pools previously deleted are no longer */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 /* considered established. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 /* CALLED BY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 /* Application */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 /* CALLS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 /* [TCT_Check_Stack] Stack checking function */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 /* INPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 /* None */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 /* OUTPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 /* PMD_Total_Pools Number of established */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 /* partition pools */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 /* HISTORY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 /* DATE REMARKS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 /* 03-01-1993 Created initial version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 /* 04-19-1993 Verified version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 /* 03-01-1994 Modified function interface, */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 /* resulting in version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 /* 03-18-1994 Verified version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 UNSIGNED PMF_Established_Partition_Pools(VOID) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 { | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 #ifdef NU_ENABLE_STACK_CHECK | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 /* Call stack checking function to check for an overflow condition. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 TCT_Check_Stack(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 #endif | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 /* Return the number of established partition pools. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 return(PMD_Total_Pools); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 } | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 /* FUNCTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 /* PMF_Partition_Pool_Pointers */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 /* DESCRIPTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 /* This function builds a list of pool pointers, starting at */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 /* the specified location. The number of pool pointers */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 /* placed in the list is equivalent to the total number of */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 /* pools or the maximum number of pointers specified in the */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 /* call. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 /* CALLED BY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 /* Application */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 /* CALLS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 /* [TCT_Check_Stack] Stack checking function */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 /* TCT_Protect Protect created list */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 /* TCT_Unprotect Release protection */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 /* INPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 /* pointer_list Pointer to the list area */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 /* maximum_pointers Maximum number of pointers */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 /* OUTPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 /* pointers Number of partition pools */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 /* placed in the list */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 /* HISTORY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 /* DATE REMARKS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 /* 03-01-1993 Created initial version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 /* 04-19-1993 Verified version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 /* 08-09-1993 Corrected pointer retrieval */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 /* loop, resulting in version 1.0a */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 /* 08-09-1993 Verified version 1.0a */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 /* 03-01-1994 Modified function interface, */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 /* resulting in version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 /* 03-18-1994 Verified version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 UNSIGNED PMF_Partition_Pool_Pointers(NU_PARTITION_POOL **pointer_list, | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 UNSIGNED maximum_pointers) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 { | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 CS_NODE *node_ptr; /* Pointer to each PCB */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 UNSIGNED pointers; /* Number of pointers in list*/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 NU_SUPERV_USER_VARIABLES | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 /* Switch to supervisor mode */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 NU_SUPERVISOR_MODE(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 #ifdef NU_ENABLE_STACK_CHECK | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 /* Call stack checking function to check for an overflow condition. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 TCT_Check_Stack(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 #endif | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 /* Initialize the number of pointers returned. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 pointers = 0; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 /* Protect against access to the list of created partition pools. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 TCT_Protect(&PMD_List_Protect); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 /* Loop until all pool pointers are in the list or until the maximum | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 list size is reached. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 node_ptr = PMD_Created_Pools_List; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 while ((node_ptr) && (pointers < maximum_pointers)) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 { | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 /* Place the node into the destination list. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 *pointer_list++ = (NU_PARTITION_POOL *) node_ptr; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 /* Increment the pointers variable. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 pointers++; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 /* Position the node pointer to the next node. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 node_ptr = node_ptr -> cs_next; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 /* Determine if the pointer is at the head of the list. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 if (node_ptr == PMD_Created_Pools_List) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 /* The list search is complete. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 node_ptr = NU_NULL; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 } | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 /* Release protection against access to the list of created pools. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 TCT_Unprotect(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 /* Return to user mode */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 NU_USER_MODE(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 /* Return the number of pointers in the list. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 return(pointers); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 } | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 /* FUNCTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 /* PMF_Partition_Pool_Information */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 /* DESCRIPTION */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 /* This function returns information about the specified partition */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 /* pool. However, if the supplied partition pool pointer is */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 /* invalid, the function simply returns an error status. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 /* CALLED BY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 /* Application */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 /* CALLS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 /* [TCT_Check_Stack] Stack checking function */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 /* TCT_System_Protect Protect partition pool */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 /* TCT_Unprotect Release protection */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 /* INPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 /* pool_ptr Pointer to the partition pool*/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 /* name Destination for the name */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 /* start_address Destination for the starting */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 /* memory address of the pool */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 /* pool_size Destination for the pool's */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 /* total size */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 /* partition_size Destination for the size of */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 /* each partition */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 /* available Destination for the available*/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 /* number of partitions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 /* allocated Destination for the number */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 /* of allocated partitions */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 /* suspend_type Destination for the type of */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 /* suspension */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 /* tasks_waiting Destination for the tasks */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 /* waiting count */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 /* first_task Destination for the pointer */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 /* to the first task waiting */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 /* OUTPUTS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 /* NU_SUCCESS If a valid pool pointer */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 /* is supplied */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 /* NU_INVALID_POOL If pool pointer invalid */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 /* HISTORY */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 /* DATE REMARKS */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 /* 03-01-1993 Created initial version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 /* 04-19-1993 Verified version 1.0 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 /* 03-01-1994 Modified function interface, */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 /* resulting in version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 /* 03-18-1994 Verified version 1.1 */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 /* 11-18-1996 Corrected SPR220. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 /* */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 /*************************************************************************/ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 STATUS PMF_Partition_Pool_Information(NU_PARTITION_POOL *pool_ptr, CHAR *name, | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 VOID **start_address, UNSIGNED *pool_size, | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 UNSIGNED *partition_size, UNSIGNED *available, | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 UNSIGNED *allocated, OPTION *suspend_type, | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 UNSIGNED *tasks_waiting, NU_TASK **first_task) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 { | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 PM_PCB *pool; /* Pool control block ptr */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 INT i; /* Working integer variable */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 STATUS completion; /* Completion status */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 NU_SUPERV_USER_VARIABLES | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 /* Switch to superisor mode */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 NU_SUPERVISOR_MODE(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 /* Move input pool pointer into internal pointer. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 pool = (PM_PCB *) pool_ptr; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 #ifdef NU_ENABLE_STACK_CHECK | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 /* Call stack checking function to check for an overflow condition. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 TCT_Check_Stack(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 #endif | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 /* Determine if this partition pool id is valid. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 if ((pool != NU_NULL) && (pool -> pm_id == PM_PARTITION_ID)) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 { | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 /* Setup protection of the partition pool. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 TCT_System_Protect(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 /* The partition pool pointer is valid. Reflect this in the completion | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 status and fill in the actual information. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 completion = NU_SUCCESS; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 /* Copy the partition pool's name. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 for (i = 0; i < NU_MAX_NAME; i++) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 *name++ = pool -> pm_name[i]; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 /* Determine the suspension type. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 if (pool -> pm_fifo_suspend) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 *suspend_type = NU_FIFO; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 else | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 *suspend_type = NU_PRIORITY; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 /* Retrieve information directly out of the control structure. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 *start_address = pool -> pm_start_address; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 *pool_size = pool -> pm_pool_size; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 *partition_size = pool -> pm_partition_size; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 *available = pool -> pm_available; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 *allocated = pool -> pm_allocated; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 /* Retrieve the number of tasks waiting and the pointer to the | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 first task waiting. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 *tasks_waiting = pool -> pm_tasks_waiting; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 if (pool -> pm_suspension_list) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 /* There is a task waiting. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 *first_task = (NU_TASK *) | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 (pool -> pm_suspension_list) -> pm_suspended_task; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 else | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 /* There are no tasks waiting. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 *first_task = NU_NULL; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 /* Release protection of the partition pool. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 TCT_Unprotect(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 } | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 else | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 /* Indicate that the partition pool pointer is invalid. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 completion = NU_INVALID_POOL; | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 /* Return to user mode */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 NU_USER_MODE(); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 /* Return the appropriate completion status. */ | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 return(completion); | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 } | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 | 
| 
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 | 
