📄 ggt_func.lst
字号:
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 1
ARM COMPILER V2.32a, COMPILATION OF MODULE GGT_Func
OBJECT MODULE PLACED IN .\Output\GGT_Func.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\Kernel\GGT_Func.c ARM BROWSE DEBUG PRINT(.\LIST\GGT_FUN
-C.LST) TABS(4) OBJECT(.\Output\GGT_Func.obj)
stmt level source
1 /****************************************************************************************************
2 ** Gogoto OS
3 ** (c) Copyright 2007-2008, luyigui(卢益贵)
4 ** All Rights Reserved
5 ** V1.00.0
6 **
7 ** 狗狗兔嵌入式多任务系统(基于消息机制)
8 ** 绿城代码、GGT-OS、Gogoto OS、狗狗兔嵌入式、狗狗兔系统
9 ** QQ:48092788
10 **
11 **------------------文件信息------------------------------------------------------------------------
12 ** 文件名: GGT_Func.c
13 ** 创建人: 卢益贵
14 ** 日 期: 2007年12月8日
15 ** 版 本: V1.00.0
16 ** 描 述: Gogoto OS 功能 函数单元
17 **
18
19 **------------------修改记录------------------------------------------------------------------------
20 ** 修改人: 卢益贵
21 ** 版 本: 1.80.0
22 ** 日 期: 2008年1月8日
23 ** 描 述: 增加常用的功能函数
24 **
25
26 ****************************************************************************************************/
27
28 #include "GGT_OS.h"
29 #include "GGT_SysType.h"
30
31 /****************************************************************************************************
32 ** 函数名: ListFirst
33 ** 描 述: 链表头
34 ** 输 入: pFirst:链表头变量地址
35 pNode:节点地址
36 ** 输 出: 无
37 ** 创建人: 卢益贵
38 ** 日 期: 2007年12月8日
39
40 **------------------修改记录------------------------------------------------------------------------
41 ** 修改人:
42 ** 日 期:
43 ** 说 明:
44 ** 原代码:
45 **--------------------------------------------------------------------------------------------------
46 ****************************************************************************************************/
47 void ListFirst(void *pFirst, void *pNode)
48 {
49 1 *(void **)pNode = *(void **)pFirst;
50 1 *(void **)pFirst = pNode;
51 1 }
52
53 /****************************************************************************************************
54 ** 函数名: ListAppend
55 ** 描 述: 链表挂尾
56 ** 输 入: pFirst:链表头变量地址
57 pNode:节点地址
58 ** 输 出: 无
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 2
59 ** 创建人: 卢益贵
60 ** 日 期: 2007年12月8日
61
62 **------------------修改记录------------------------------------------------------------------------
63 ** 修改人:
64 ** 日 期:
65 ** 说 明:
66 ** 原代码:
67 **--------------------------------------------------------------------------------------------------
68 ****************************************************************************************************/
69 void ListAppend(void *pFirst, void *pNode)
70 {
71 1 *(void **)pNode = 0;
72 1 while(*(void **)pFirst)
73 1 pFirst = (void **)(*(void **)pFirst);
74 1 *(void **)pFirst = pNode;
75 1 }
76
77 /****************************************************************************************************
78 ** 函数名: ListDelete
79 ** 描 述: 链表节点删除
80 ** 输 入: pFirst:链表头变量地址
81 pNode:节点地址
82 ** 输 出: 无
83 ** 创建人: 卢益贵
84 ** 日 期: 2007年12月8日
85
86 **------------------修改记录------------------------------------------------------------------------
87 ** 修改人:
88 ** 日 期:
89 ** 说 明:
90 ** 原代码:
91 **--------------------------------------------------------------------------------------------------
92 ****************************************************************************************************/
93 void ListDelete(void *pFirst, void *pNode)
94 {
95 1 while(*(void **)pFirst)
96 1 {
97 2 if(*(void **)pFirst == pNode)
98 2 {
99 3 *(void **)pFirst = *(void **)pNode;
100 3 return;
101 3 }
102 2 pFirst = (void **)(*(void **)pFirst);
103 2 }
104 1 }
105
106 /****************************************************************************************************
107 ** 函数名: ListInsert
108 ** 描 述: 链表节点插入
109 ** 输 入: pFirst:链表头变量地址
110 pNode:节点地址
111 pIsHere:判断插入点函数
112 ** 输 出: 无
113 ** 创建人: 卢益贵
114 ** 日 期: 2007年12月8日
115
116 **------------------修改记录------------------------------------------------------------------------
117 ** 修改人:
118 ** 日 期:
119 ** 说 明:
120 ** 原代码:
121 **--------------------------------------------------------------------------------------------------
122 ****************************************************************************************************/
123 void ListInsert(void *pFirst, void *pNode,
124 BOOL (*pIsHere)(void *pNode, void *pNodeIns))
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 3
125 {
126 1 while(*(void **)pFirst)
127 1 {
128 2 if(NULL == (*pIsHere)(*(void **)pFirst, pNode))
129 2 {
130 3 *(void **)pNode = *(void **)pFirst;
131 3 *(void **)pFirst = pNode;
132 3 return;
133 3 }
134 2 pFirst = (void **)(*(void **)pFirst);
135 2 }
136 1 *(void **)pNode = 0;
137 1 *(void **)pFirst = pNode;
138 1 }
139
140 /****************************************************************************************************
141 ** 函数名: BoxInit
142 ** 描 述: 内存合初始化
143 ** 输 入: pBoxHead:盒子头
144 BoxSize:盒子空间大小
145 BoxSize:块空间大小
146 ** 输 出: 无
147 ** 创建人: 卢益贵
148 ** 日 期: 2007年12月8日
149
150 **------------------修改记录------------------------------------------------------------------------
151 ** 修改人:
152 ** 日 期:
153 ** 说 明:
154 ** 原代码:
155 **--------------------------------------------------------------------------------------------------
156 ****************************************************************************************************/
157 void BoxInit(void *pBoxHead, INT32 BoxSize, INT32 BlockSize)
158 {
159 1 void *pEnd, *pBlock, *pNext;
160 1
161 1 if((sizeof(UINT32) > BlockSize) || ((BlockSize + sizeof(_BoxHead) > BoxSize)))
162 1 return;
163 1
164 1 pBlock = ((UINT8 *)pBoxHead) + sizeof(_BoxHead);
165 1 ((_pBoxHead)pBoxHead)->pFree = pBlock;
166 1 pEnd = ((UINT8 *)pBoxHead) + BoxSize;
167 1
168 1 pEnd = ((UINT8 *)pEnd) - BlockSize;
169 1 while(1)
170 1 {
171 2 pNext = ((UINT8 *)pBlock) + BlockSize;
172 2 if(pNext > pEnd)
173 2 break;
174 2 *((void **)pBlock) = pNext;
175 2 pBlock = pNext;
176 2 }
177 1
178 1 *((void **)pBlock) = 0;
179 1 }
180
181 /****************************************************************************************************
182 ** 函数名: BoxAlloc
183 ** 描 述: 内存块分配
184 ** 输 入: pBoxHead:盒子头
185 ** 输 出: 无
186 ** 创建人: 卢益贵
187 ** 日 期: 2007年12月8日
188
189 **------------------修改记录------------------------------------------------------------------------
190 ** 修改人:
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 4
191 ** 日 期:
192 ** 说 明:
193 ** 原代码:
194 **--------------------------------------------------------------------------------------------------
195 ****************************************************************************************************/
196 void *BoxAlloc(void *pBoxHead)
197 {
198 1 void **pFree;
199 1
200 1 pFree = ((_pBoxHead)pBoxHead)->pFree;
201 1 if(pFree)
202 1 ((_pBoxHead)pBoxHead)->pFree = *pFree;
203 1
204 1 return(pFree);
205 1 }
206
207 /****************************************************************************************************
208 ** 函数名: BoxFree
209 ** 描 述: 内存块释放
210 ** 输 入: pBoxHead:盒子头
211 pBox:块地址
212 ** 输 出: 无
213 ** 创建人: 卢益贵
214 ** 日 期: 2007年12月8日
215
216 **------------------修改记录------------------------------------------------------------------------
217 ** 修改人:
218 ** 日 期:
219 ** 说 明:
220 ** 原代码:
221 **--------------------------------------------------------------------------------------------------
222 ****************************************************************************************************/
223 void BoxFree(void *pBoxHead, void *pBox)
224 {
225 1 *((void **)pBox) = ((_pBoxHead)pBoxHead)->pFree;
226 1 ((_pBoxHead)pBoxHead)->pFree = pBox;
227 1 }
228
229 void ClearBuf(UINT8 *pBuf, INT32 Len)
230 {
231 1 while(Len--)
232 1 *pBuf++ = 0;
233 1 }
234
235 void FullBuf(UINT8 *pBuf, INT32 Len, UINT8 Data)
236 {
237 1 while(Len--)
238 1 *pBuf++ = Data;
239 1 }
240
241 UINT32 StrToDWord(UINT8 *pStr)
242 {
243 1 UINT32 R;
244 1
245 1 R = 0;
246 1 while(*pStr)
247 1 {
248 2 R = R * 10 + (*pStr - '0');
249 2 pStr++;
250 2 }
251 1 return(R);
252 1 }
253
254 INT32 StrToInt(UINT8 *pStr)
255 {
256 1 if('-' == *pStr)
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 5
257 1 return(-((int)StrToDWord(pStr + 1)));
258 1 else
259 1 return((int)StrToDWord(pStr));
260 1 }
261
262 UINT32 HexCharToDWord(UINT8 Char)
263 {
264 1 if(('0' <= Char) && ('9' >= Char))
265 1 return(Char - '0');
266 1 else
267 1 if(('A' <= Char) && ('F' >= Char))
268 1 return(10 + (Char - 'A'));
269 1 else
270 1 if(('a' <= Char) && ('f' >= Char))
271 1 return(10 + (Char - 'a'));
272 1 else
273 1 return(0);
274 1 }
275
276 UINT32 HexToDWord(UINT8 *pStr)
277 {
278 1 UINT32 R;
279 1
280 1 R = 0;
281 1 while(*pStr)
282 1 {
283 2 R = R * 16 + HexCharToDWord(*pStr);
284 2 pStr++;
285 2 }
286 1 return(R);
287 1 }
288
289 float StrToFloat(UINT8 *pStr)
290 {
291 1 float R, RR;
292 1 UINT8 IsFloat;
293 1
294 1 R = 0;
295 1 IsFloat = 0;
296 1
297 1 if('-' == *pStr)
298 1 {
299 2 RR = -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -