FreeCalypso > hg > fc-selenite
annotate src/nucleus/pmce.c @ 134:7d50d8d13711
FFS code sync with Magnetite + gcc version fix
This change brings the new flash autodetection for FC and Pirelli targets
from Magnetite, and should also fix the gcc version for C1xx and gtamodem
targets, which were previously broken because they used TI's original
flash autodetect code (which operates at address 0) while the boot ROM
is mapped there.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 11 Dec 2018 08:43:25 +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 /* pmce.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 the error checking routines for the functions */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 /* in the Partition component. This permits easy removal of error */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 /* checking logic when it is not needed. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /* DATA STRUCTURES */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 /* None */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 /* FUNCTIONS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 /* PMCE_Create_Partition_Pool Create a Partition Pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 /* PMCE_Delete_Partition_Pool Delete a Partition Pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 /* PMCE_Allocate_Partition Allocate a partition from a */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 /* pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 /* PMCE_Deallocate_Partition Deallocate a partition from */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 /* a pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* DEPENDENCIES */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 /* cs_extr.h Common Service functions */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 /* tc_extr.h Thread Control functions */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 /* pm_extr.h Partition functions */ |
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 /* HISTORY */ |
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 /* DATE REMARKS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 /* 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
|
52 /* 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
|
53 /* 03-01-1994 Changed name original error */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 /* checking file and changed */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 /* function interfaces, resulting */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 /* in version 1.1 */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 /* 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
|
59 /* 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
|
60 /* 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
|
61 /* 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
|
62 /* 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
|
63 /*************************************************************************/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 #define NU_SOURCE_FILE |
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 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #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
|
68 #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
|
69 #include "pm_extr.h" /* Partition 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 /*************************************************************************/ |
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 /* FUNCTION */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 /* PMCE_Create_Partition_Pool */ |
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 /* DESCRIPTION */ |
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 /* This function performs error checking on the parameters supplied */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 /* to the create partition pool function. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 /* CALLED BY */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 /* Application */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 /* CALLS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 /* PMC_Create_Partition_Pool Actual create partition pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 /* function */ |
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 /* INPUTS */ |
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 /* pool_ptr Partition pool control block */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 /* pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 /* name Partition pool name */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 /* start_address Starting address of the pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 /* pool_size Number of bytes in the pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 /* partition_size Number of bytes in each */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 /* partition of the pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 /* suspend_type Suspension type */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 /* OUTPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 /* NU_INVALID_POOL Pool control block pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 /* is NULL */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 /* NU_INVALID_MEMORY Pool starting address is NULL*/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 /* NU_INVALID_SIZE Partition size is 0 or it is */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 /* larger than the pool area */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 /* NU_INVALID_SUSPEND Suspension selection is not */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /* valid */ |
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 /* HISTORY */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 /* DATE REMARKS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 /* 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
|
118 /* 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
|
119 /* 03-01-1994 Modified function interface, */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 /* resulting in version 1.1 */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 /* 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
|
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 STATUS PMCE_Create_Partition_Pool(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
|
126 VOID *start_address, UNSIGNED pool_size, |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 UNSIGNED partition_size, OPTION suspend_type) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 { |
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 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
|
131 STATUS status; /* Completion status */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 UNSIGNED size; /* Adjusted size of partition*/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 |
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 /* 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
|
136 pool = (PM_PCB *) pool_ptr; |
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 /* Adjust the partition size to something that is evenly divisible by |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 the number of bytes in an UNSIGNED data type. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 size = ((partition_size + sizeof(UNSIGNED) - 1)/sizeof(UNSIGNED)) * |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 sizeof(UNSIGNED); |
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 /* Check for a NULL partition pool control block pointer or a control |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 block that is already created. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 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
|
146 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 /* Invalid partition pool control block pointer. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 status = NU_INVALID_POOL; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 else if (start_address == NU_NULL) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 /* Invalid memory pointer. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 status = NU_INVALID_MEMORY; |
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 else if ((size == 0) || ((size + PM_OVERHEAD) > pool_size)) |
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 /* Pool could not even accommodate one partition. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 status = NU_INVALID_SIZE; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 else if ((suspend_type != NU_FIFO) && (suspend_type != NU_PRIORITY)) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 /* Invalid suspension type. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 status = NU_INVALID_SUSPEND; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 else |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 /* Call the actual service to create the partition pool. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 status = PMC_Create_Partition_Pool(pool_ptr, name, start_address, |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 pool_size, partition_size, suspend_type); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 /* Return completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 return(status); |
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 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 /*************************************************************************/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 /* FUNCTION */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 /* PMCE_Delete_Partition_Pool */ |
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 /* DESCRIPTION */ |
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 /* This function performs error checking on the parameters supplied */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 /* to the delete partition pool function. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 /* CALLED BY */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 /* Application */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 /* CALLS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 /* PMC_Delete_Partition_Pool Actual function to delete a */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 /* partition pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 /* INPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 /* pool_ptr Partition pool control block */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 /* pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 /* OUTPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 /* NU_INVALID_POOL Indicates the supplied pool */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 /* pointer is invalid */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 /* HISTORY */ |
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 /* DATE REMARKS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 /* 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
|
211 /* 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
|
212 /* 03-01-1994 Modified function interface, */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 /* resulting in version 1.1 */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 /* 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
|
216 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 /*************************************************************************/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 STATUS PMCE_Delete_Partition_Pool(NU_PARTITION_POOL *pool_ptr) |
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 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 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
|
222 STATUS status; /* Completion status */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 /* 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
|
226 pool = (PM_PCB *) pool_ptr; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 /* Determine if the partition pool pointer is valid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 if ((pool) && (pool -> pm_id == PM_PARTITION_ID)) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 /* Partition pool pointer is valid, call function to delete it. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 status = PMC_Delete_Partition_Pool(pool_ptr); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 else |
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 /* Partition pool pointer is invalid, indicate in completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 status = NU_INVALID_POOL; |
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 /* Return completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 return(status); |
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 |
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 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 /* FUNCTION */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 /* PMCE_Allocate_Partition */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 /* DESCRIPTION */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 /* This function performs error checking on the parameters supplied */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 /* to the allocate partition function. */ |
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 /* CALLED BY */ |
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 /* Application */ |
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 /* CALLS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 /* PMC_Allocate_Partition Actual partition allocate */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 /* function */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 /* TCCE_Suspend_Error Check for a task suspension */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 /* error */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 /* INPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 /* pool_ptr Memory partition pool pointer*/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 /* return_pointer Pointer to the destination */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 /* memory pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 /* suspend Suspension option if full */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 /* OUTPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 /* NU_INVALID_POOL Indicates the pool pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 /* is invalid */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 /* NU_INVALID_POINTER Indicates the return pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 /* is NULL */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 /* NU_INVALID_SUSPEND Indicates the suspension is */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 /* invalid */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 /* HISTORY */ |
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 /* DATE REMARKS */ |
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 /* 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
|
287 /* 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
|
288 /* 03-01-1994 Modified function interface, */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 /* resulting in version 1.1 */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 /* 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
|
292 /* */ |
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 STATUS PMCE_Allocate_Partition(NU_PARTITION_POOL *pool_ptr, |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 VOID **return_pointer, UNSIGNED suspend) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 { |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 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
|
299 STATUS status; /* Completion status */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 |
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 /* 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
|
303 pool = (PM_PCB *) pool_ptr; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 /* Determine if partition pool pointer is invalid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 if (pool == NU_NULL) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 /* Partition pool pointer is invalid, indicate in completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 status = NU_INVALID_POOL; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 else if (pool -> pm_id != PM_PARTITION_ID) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 /* Partition pool pointer is invalid, indicate in completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 status = NU_INVALID_POOL; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 else if (return_pointer == NU_NULL) |
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 /* Return pointer is invalid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 status = NU_INVALID_POINTER; |
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 else if ((suspend) && (TCCE_Suspend_Error())) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 /* Suspension from a non-task thread. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 status = NU_INVALID_SUSPEND; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 else |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 /* Parameters are valid, call actual function. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 status = PMC_Allocate_Partition(pool_ptr, return_pointer, suspend); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 /* Return the completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 return(status); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 } |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 |
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 /*************************************************************************/ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 /* FUNCTION */ |
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 /* PMCE_Deallocate_Partition */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 /* DESCRIPTION */ |
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 /* This function performs error checking on the parameters supplied */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 /* to the deallocate partition function. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 /* CALLED BY */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 /* Application */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 /* CALLS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 /* PMC_Deallocate_Partition Deallocate a partition */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 /* INPUTS */ |
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 /* partition Pointer to partition memory */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 /* OUTPUTS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 /* NU_INVALID_POINTER Indicates the supplied */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 /* partition pointer is NULL, */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 /* or otherwise invalid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 /* NU_SUCCESS */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 /* HISTORY */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 /* */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 /* DATE REMARKS */ |
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 /* 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
|
371 /* 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
|
372 /* 03-01-1994 Modified function interface, */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 /* resulting in version 1.1 */ |
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 /* 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
|
376 /* */ |
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 STATUS PMCE_Deallocate_Partition(VOID *partition) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 { |
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 PM_PCB *pool; /* Pool pointer */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 PM_HEADER *header_ptr; /* Pointer to partition hdr */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 STATUS status; /* Completion status */ |
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 /* Pickup the associated pool's pointer. It is inside the header of |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 each partition. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 header_ptr = (PM_HEADER *) (((BYTE_PTR) partition) - PM_OVERHEAD); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 /* Determine if the pointer(s) are NULL. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 if ((header_ptr == NU_NULL) || (partition == NU_NULL)) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 /* Partition pointer is invalid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 status = NU_INVALID_POINTER; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 /* Determine if partition pool pointer is invalid. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 else if ((pool = header_ptr -> pm_partition_pool) == NU_NULL) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 /* Partition pointer is invalid, indicate in completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 status = NU_INVALID_POINTER; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 else if (pool -> pm_id != PM_PARTITION_ID) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 /* Partition pool pointer is invalid, indicate in completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 status = NU_INVALID_POINTER; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 else if (header_ptr -> pm_next_available) |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 /* Partition is still linked on the available list- must not be |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 allocated. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 status = NU_INVALID_POINTER; |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 else |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 /* Parameters are valid, call actual function. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 status = PMC_Deallocate_Partition(partition); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 /* Return the completion status. */ |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 return(status); |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 } |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 |
0f80e1e4dce4
src/nucleus: library C code import from FreeNucleus package
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 |