source: svn/trunk/newcon3bcm2_21bu/dst/dhl/api/include/DHL_OSAL.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 17.4 KB
Line 
1/**
2        @file
3                DHL_OSAL.h
4       
5        @brief 
6                OS Abstraction Layer Interface 
7
8        Copyright 2006~2010 Digital STREAM Technology, Inc.
9        All Rights Reserved
10
11        Release History:
12       
13*/
14
15
16#ifndef __DHL_OSAL_H__
17#define __DHL_OSAL_H__
18
19
20#include "DHL_Types.h"
21#include "DHL_OSAL_Impl.h"
22#include "ministd.h"
23#include "bkni.h"
24
25
26
27#ifndef USE_ADS_TOOLCHAIN
28/**
29        ADS toolchainÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â __func__°¡ ±âº»ÀûÀ¸·Î »ç¿ëµÇ¹Ç·Î
30        ¾Æ·¡¿¡¼­ ¹®Á¦°¡ Àֱ⠶§¹®¿¡ ¸·µµ·Ï ÇÑ´Ù.
31*/
32  #define __func__ __FUNCTION__
33#endif
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39
40#if COMMENT
41____Overview____(){}
42#endif
43
44/** \file DHL_OSAL.h
45        DHL_OSAL Çì´õÆÄÀÏ ³»¿ë ¼³¸í
46       
47        module overview
48                OS Abstract Layer¸¦ Á¦°øÇÏ´Â Çì´õ ÆÄÀÏÀÌ´Ù.
49                       
50        OS Heap
51                ¸Þ¸ð¸® ÇÒ´ç, ÇØÁ¦ ÇÏ´Â API
52               
53
54        implementations
55               
56        dependencies           
57               
58*/
59
60#if COMMENT
61____Config____(){}
62#endif
63
64/**
65        task´Â system ÀüüÀûÀ¸·Î °ü¸®µÇ¾î¾ß ÇÏ´Â ¸®¼Ò½ºÀÌ´Ù.
66        ƯÈ÷ priority´Â ´Ù¸¥ taskµé°úÀÇ »ó´ëÀûÀÎ °ü°è¸¦ °í·ÁÇØ¾ß ÇϹǷÎ,
67        ÇϳªÀÇ ÆÄÀÏ¿¡¼­ °ü¸®Çϵµ·Ï ÇÑ´Ù.
68*/
69#include "DHL_OSAL_Config.h"
70
71
72
73#if COMMENT
74____Types____(){}
75#endif
76
77/*
78        ŽºÅ©, ¼¼¸¶Æ÷¾î, ¸Þ½ÃÁöÅ¥¿¡ ´ëÇÑ °£·«ÇÑ ¼³¸í.
79*/
80
81/** \typedef DHL_OS_TASK_ID
82       
83        ŽºÅ©:
84       
85                RTOS¿¡¼­ µ¿½Ã ó¸® °¡´ÉÇÑ ½ÇÇà ´ÜÀ§¸¦ ÀǹÌÇÑ´Ù.
86                ÀÏ¹Ý OS¿¡¼­ process, thread, task µîÀÇ °³³ä°ú À¯»çÇϸç,
87                È¥µ¿À» ¹æÁöÇϱâ À§ÇØ Task¶ó´Â ¿ë¾î·Î ÅëÀÏÇÏ¿© »ç¿ëÇÑ´Ù.
88               
89                RTOS¿¡¼­ ¸ðµç task´Â ÁÖ¼Ò °ø°£À» °øÀ¯ÇÑ´Ù. ÀÌ·± Á¡¿¡¼­´Â process¿Í´Â
90                ±¸º°µÈ´Ù.
91               
92                ŽºÅ©¸¦ »ý¼ºÇÒ ¶§¿¡ stack Å©±â¿Í ¿ì¼±¼øÀ§¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
93
94*/
95/** \typedef DHL_OS_SEMA_ID
96
97        ¼¼¸¶Æ÷¾î:
98       
99                °¢Á¾ ŽºÅ© µ¿±âÈ­¿¡ »ç¿ëµÈ´Ù.
100                ¼¼ Á¾·ùÀÇ ¼¼¸¶Æ÷¾î¸¦ Áö¿øÇÑ´Ù.
101               
102                -# CountingSemaphore
103                        - Á¦ÇÑµÈ ¼öÀÇ ¸®¼Ò½º¸¦ ¼­·Î ¾ÈÀüÇÏ°Ô °øÀ¯Çϱâ À§ÇØ »ç¿ëµÈ´Ù.
104                -# BinarySemaphore
105                        - Counting ¼¼¸¶Æ÷¾îÀÇ ³»ºÎ count°ªÀÌ ÃÖ´ë 1ÀÎ °æ¿ì¿¡ ÇØ´çµÈ´Ù.
106                -# MutexSemaphore
107                        - critical section¿¡ µ¿½Ã ÁøÀÔÀÌ µÇÁö ¾Êµµ·Ï º¸È£Çϴµ¥ »ç¿ëµÈ´Ù.
108               
109                ¸ðµç ¼¼¸¶Æ÷¾î´Â »ý¼º½Ã¿¡´Â ¼­·Î ´Ù¸¥ API¸¦ »ç¿ëÇÏÁö¸¸,
110                »ç¿ë½Ã¿¡´Â Take/Give ¿Í °°Àº ¿ë¾îÀÇ ÅëÀÏµÈ API¸¦ »ç¿ëÇÑ´Ù.
111               
112                ¼¼¸¶Æ÷¾îÀÇ Take ´Â lockÀÇ °³³äÀ̰í,
113                ¼¼¸¶Æ÷¾îÀÇ Give ´Â unlockÀÇ °³³äÀÌ´Ù.
114               
115*/
116/**     \typedef DHL_OS_MSGQ_ID
117
118        ¸Þ½ÃÁöÅ¥:
119       
120                ÀÓÀÇ Å¸ÀÔÀÇ µ¥ÀÌÅ͸¦ ÀÔÃâ·Â ÇÒ ¼ö ÀÖ´Â FIFO ¹öÆÛ.
121                ¼±ÀÔ¼±Ãâ ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù.
122               
123                Å¥°¡ ¸¸µé¾î Áú ¶§ ÀÔ·Â °¡´ÉÇÑ ÃÖ´ë µ¥ÀÌÅÍÅ©±â¸¦ ÁöÁ¤ÇØ¾ß Çϸç,
124                ¸ðµç input/output ¸Þ½ÃÁö´Â ±× ÁöÁ¤µÈ Å©±âº¸´Ù ÀÛ¾Æ¾ß ÇÑ´Ù.
125                µû¶ó¼­ ÀÌ ¸Þ½ÃÁöÅ¥´Â °¡º¯ Å©±âÀÇ ¸Þ½ÃÁö¸¦ ó¸®Çϴµ¥¿¡´Â
126                ±×´ÙÁö ÀûÇÕÇÏÁö´Â ¾Ê´Ù.
127               
128                Å¥°¡ ¸¸µé¾î Áú ¶§ ÀÔ·Â °¡´ÉÇÑ ÃÖ´ë µ¥ÀÌÅÍ °¹¼öµµ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
129                output ÀÌ µÇÁö ¾ÊÀ¸¸é¼­ °è¼Ó input ¸¸ µÇ´Â °æ¿ì
130                que overflow°¡ µÉ ¼ö ÀÖ´Ù.
131               
132        º¸´Ù »ó¼¼ÇÑ ¼³¸íÀº ±¸±Û ¹®¼­ÀÇ "OSAL API µðÀÚÀÎ" ¹®¼­¸¦ Âü°íÇÑ´Ù.
133               
134*/
135
136#if     1//def UCOS_II
137typedef os_taskfunction OS_TASKFUNCTION;
138typedef os_task_id DHL_OS_TASK_ID;
139typedef os_semaphore_id DHL_OS_SEMA_ID;
140typedef os_messagequeue_id DHL_OS_MSGQ_ID;
141
142#define OS_SEMAPHORE_ID DHL_OS_SEMA_ID
143
144#else
145typedef UINT32 DHL_OS_TASK_ID;
146typedef UINT32 DHL_OS_SEMA_ID;
147typedef UINT32 DHL_OS_MSGQ_ID;
148#endif
149
150
151#define NO_WAIT 0
152#define WAIT_FOREVER (UINT32)-1
153
154
155/** @brief
156        DHL_OS_CreateTask() API¿¡ ÁöÁ¤ÇÏ´Â task main ÇÔ¼öÀÇ prototype.
157
158*/
159typedef void (*DHL_OS_TASKFUNCTION)(void* arg);
160
161
162/** @brief
163        DHL_OS_GetTaskInfo() API¿¡¼­ »ç¿ëµÇ´Â task Á¤º¸ ±¸Á¶Ã¼.
164
165*/
166typedef struct
167{
168        DHL_OS_TASK_ID tid; ///< [out] ÀÌ ±¸Á¶Ã¼ Á¤º¸°¡ ¼³¸íÇϰí Àִ ŽºÅ©
169        const char *name;   ///< [out] ŽºÅ©ÀÇ À̸§. pointerÀÓ¿¡ À¯ÀÇ.
170        int priority;       ///< [out] ŽºÅ© priority.
171       
172        /*
173                if there are more common attributes, add here..
174        */
175
176} DHL_OS_TASK_INFO;
177
178
179/** @brief
180        DHL_OS_GetHeapStatus() API¿¡¼­ »ç¿ëµÇ´Â Heap »óÅ Á¤º¸ ±¸Á¶Ã¼.
181*/
182typedef struct
183{
184        UINT32 size_heap; // size of entire heap
185
186        UINT32 num_alloc_chunk; // number of alloc chunk
187        UINT32 size_alloc;       // total byte size alloc chunk
188
189        UINT32 num_free_chunk;  // number of free chunk
190        UINT32 size_free;        // total byte size free chunk
191} DHL_OS_HEAP_STATUS;
192
193
194
195#if COMMENT
196____Defines____(){}
197#endif
198
199/** @brief ¹«ÇѴ븦 ÀǹÌÇϴ Ưº°ÇÑ timeout
200
201        °¢Á¾ suspend (blocking) API µéÀÇ timeout ÀÎÀÚ¿¡ ÀÌ °ªÀ» »ç¿ëÇϸé
202        wait foreverÀÇ Àǹ̷Π»ç¿ëµÈ´Ù.
203*/
204#define DHL_TIMEOUT_FOREVER ((UINT32)-1)
205
206
207/** @name
208        Ưº°ÇÑ OS object ID
209        @{
210*/
211
212#define DHL_INVALID_TASK_ID (DHL_OS_TASK_ID)0
213#define DHL_INVALID_SEMA_ID (DHL_OS_SEMA_ID)0
214#define DHL_INVALID_MSGQ_ID (DHL_OS_MSGQ_ID)0
215
216/*@}*/
217
218
219
220
221#if COMMENT
222____Task_API____(){}
223#endif
224
225/**
226        @name OS Task API
227        @{
228*/
229
230/**
231        @brief ŽºÅ©¸¦ »ý¼ºÇÑ´Ù.
232       
233        »ý¼ºµÈ ŽºÅ©´Â ¿ì¼± ¼øÀ§ Á¶°Ç¿¡ µû¶ó ÀÌ API ÇÔ¼ö°¡ ¸®ÅÏÇϱ⵵ Àü¿¡ ¸ÕÀú
234        ½ÇÇà µÉ ¼öµµ ÀÖ´Ù.
235       
236        ÀÎÀÚ·Î ÁöÁ¤ÇÑ Å½ºÅ© ÇÔ¼öÀÇ ½ÇÇàÀÌ ³¡³ª¸é ŽºÅ©´Â ÀÚµ¿À¸·Î Á¾·áµÇ¾î¾ß ÇÑ´Ù.
237        (DHL_OS_SelfDeleteTask ¸¦ È£ÃâÇÑ °Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ ³»¾ß ÇÑ´Ù)
238       
239        @param[in] func        »ý¼ºµÉ ŽºÅ© ÇÔ¼ö º»Ã¼.
240        @param[in] name        ŽºÅ© À̸§.     
241        @param[in] priority    ŽºÅ© ¿ì¼± ¼øÀ§.
242        @param[in] stackSize   BYTE ´ÜÀ§ÀÇ Å½ºÅ© ½ºÅà ũ±â.
243        @param[in] arg1        ŽºÅ© ÇÔ¼ö º»Ã¼¿¡ ³Ñ°ÜÁú ÀÎÀÚ.
244       
245        @return
246                DHL_OS_TASK_ID ŸÀÔÀÇ Å½ºÅ© ID ¸¦ ¸®ÅÏÇÑ´Ù.
247                »ý¼º¿¡ ½ÇÆÐÇÒ °æ¿ì DHL_INVALID_TASK_ID ¸¦ ¸®ÅÏÇÑ´Ù.
248
249        @todo: name À̸§ ±æÀÌ Á¦ÇÑ ÁöÁ¤ ÇÊ¿ä?
250*/
251DHL_OS_TASK_ID DHL_OS_CreateTask(DHL_OS_TASKFUNCTION func, const char *name, 
252                                 int priority, int stackSize, UINT32 arg1);
253
254/**
255        @brief ÇöÀç ½ÇÇàÁßÀΠŽºÅ©¸¦ »èÁ¦ÇÑ´Ù.
256*/
257void DHL_OS_SelfDeleteTask(void);
258
259/**
260        @brief ÁÖ¾îÁø ŽºÅ©ÀÇ ¿ì¼± ¼øÀ§¸¦ º¯°æÇÑ´Ù.
261
262        @param[in] tid          ¿ì¼±¼øÀ§¸¦ º¯°æ ÇÒ Å½ºÅ©ÀÇ ID.
263        @param[in] newPrio      »õ·Î Àû¿ëÇÒ ¿ì¼±¼øÀ§.
264        @param[out] pOldPrio    º¯°æµÇ±â Àü ¿ì¼±¼øÀ§¸¦ ÀúÀåÇÒ ÁÖ¼Ò.
265*/
266void DHL_OS_SetTaskPriority(DHL_OS_TASK_ID tid, UINT32 newPrio, UINT32 *pOldPrio);
267
268/**
269        @brief ŽºÅ©ÀÇ À̸§À¸·Î ŽºÅ© ID¸¦ ¾ò´Â´Ù.
270
271        @param[in] name         Ã£°íÀÚ Çϴ ŽºÅ©ÀÇ À̸§
272        @param[out] returnTid   Ã£¾ÆÁø ŽºÅ© ID¸¦ ÀúÀåÇÒ ÁÖ¼Ò.
273
274        @return
275                - DHL_OK: ¼º°ø.
276                - DHL_FAIL_NOT_FOUND: ÇØ´ç ŽºÅ©°¡ Á¸ÀçÇÏÁö ¾ÊÀ½.
277                - DHL_FAIL_INVALID_PARAM: name ¶Ç´Â returnTid Æ÷ÀÎÅͰ¡ À߸øµÊ.         
278*/
279DHL_RESULT DHL_OS_FindTaskByName(const char *name, DHL_OS_TASK_ID *returnTid);
280
281/*
282        @brief ÇöÀç ½ÇÇàÁßÀΠŽºÅ©ÀÇ ID¸¦ ¸®ÅÏÇÑ´Ù.
283                ISR ·çƾÀÌ ½ÇÇà ÁßÀÎ »óŶó¸é ¿¡·¯¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù.
284
285        @return         ÇöÀç ŽºÅ©ÀÇ ½Äº°ÀÚ.
286                - DHL_INVALID_TASK_ID: ÇöÀç ŽºÅ©¸¦ ¾ò¾î ¿Ã ¼ö ¾ø´Â »óȲÀÎ °æ¿ì
287*/
288DHL_OS_TASK_ID DHL_OS_GetTaskID(void);
289
290/**
291        @brief ŽºÅ©ÀÇ »ó¼¼ Á¤º¸¸¦ Á¶È¸ÇÑ´Ù.
292        caller´Â pTaskInfo¿¡ ÀûÀýÇÑ º¯¼öÀÇ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁà¾ß ÇÑ´Ù.
293
294        @param[in]  tid         Á¤º¸ Á¶È¸¸¦ ÇÒ Å½ºÅ©ÀÇ ID.
295        @param[out] pTaskInfo ŽºÅ© Á¤º¸°¡ ä¿öÁú ±¸Á¶Ã¼ Æ÷ÀÎÅÍ.
296       
297        @return               DHL_RESULT ŸÀÔ °á°ú ¸®ÅÏ.
298         - DHL_OK: ¼º°ø.
299         - DHL_FAIL_INVALID_HANDLE: À߸øµÈ ŽºÅ© ID ÀÔ·Â.
300         - DHL_FAIL_NULL_POINTER: pTaskInfo Æ÷ÀÎÅͰ¡ NULLÀÎ °æ¿ì.
301         - DHL_FAIL_NOT_FOUNT: ŽºÅ© Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø´Â °æ¿ì
302*/
303DHL_RESULT DHL_OS_GetTaskInfo(DHL_OS_TASK_ID tid, DHL_OS_TASK_INFO *pTaskInfo);
304
305/**
306        @brief ÇöÀç µ¿ÀÛÁßÀÎ ¸ðµç ŽºÅ©ÀÇ Á¤º¸¸¦ µð¹ö±× ÄÜ¼Ö È­¸é¿¡ Ãâ·ÂÇÑ´Ù.
307       
308        OS_DbgPrintf ¸¦ »ç¿ëÇÏ¿© Ãâ·ÂµÈ´Ù.
309        Shell ¿¡¼­ i ¸í·ÉÀ» ÀÔ·ÂÇÒ °æ¿ì ½ÇÇàµÇ´Â ÇÔ¼öÀÌ´Ù.
310
311        @param[in] level  ¾ó¸¶³ª »ó¼¼È÷ Ãâ·ÂÇÒ °ÍÀÎÁö ÁöÁ¤ÇÏ´Â ·¹º§.
312                0À» ÁöÁ¤ÇÏ¸é µðÆúÆ® Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.
313
314*/
315//void DHL_OS_ShowOSInfo(int level);
316
317char *DHL_OS_TaskName(DHL_OS_TASK_ID tid);
318int DHL_OS_TaskPriority();
319
320
321/*@}*/
322
323/****************************************************/
324#if COMMENT
325____Sem_API____(){}
326#endif
327
328/** @name Semaphore API
329        @{
330*/
331
332/**
333        @brief Counting ¼¼¸¶Æ÷¾î¸¦ »ý¼ºÇÑ´Ù.
334
335        @param[in] name »ý¼ºµÉ ¼¼¸¶Æ÷¾îÀÇ À̸§.
336        @param[in] options suspend type. OS_SEM_PRIO ¶Ç´Â OS_SEM_FIFO.
337        @param[in] count »ý¼ºµÉ ¼¼¸¶Æ÷¾îÀÇ ÃÖ´ë count .
338       
339        @return               
340                »ý¼ºµÈ ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
341                »ý¼º¿¡ ½ÇÆÐÇÒ °æ¿ì DHL_INVALID_SEMA_ID ¸¦ ¸®ÅÏÇÑ´Ù.
342*/
343DHL_OS_SEMA_ID DHL_OS_CreateCountingSemaphore(const char *name, UINT32 options, UINT32 count);
344
345/**
346        @brief Binary ¼¼¸¶Æ÷¾î¸¦ »ý¼ºÇÑ´Ù.
347
348        @param[in] name »ý¼ºµÉ binary ¼¼¸¶Æ÷¾îÀÇ À̸§.
349        @param[in] options suspend type. OS_SEM_PRIO ¶Ç´Â OS_SEM_FIFO.
350        @param[in] flag Ãʱâ count °ª. TRUEÀ̸é 1, ¾Æ´Ï¸é 0ÀÌ´Ù.
351       
352        @return               
353                »ý¼ºµÈ ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
354                »ý¼º¿¡ ½ÇÆÐÇÒ °æ¿ì DHL_INVALID_SEMA_ID ¸¦ ¸®ÅÏÇÑ´Ù.
355*/
356DHL_OS_SEMA_ID DHL_OS_CreateBinarySemaphore(const char *name, UINT32 options, BOOL flag);
357
358/**
359        @brief Mutex ¼¼¸¶Æ÷¾î¸¦ »ý¼ºÇÑ´Ù.
360
361        @param[in] name »ý¼ºµÉ mutex ¼¼¸¶Æ÷¾îÀÇ À̸§.
362       
363        @return               
364                »ý¼ºµÈ ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
365                »ý¼º¿¡ ½ÇÆÐÇÒ °æ¿ì DHL_INVALID_SEMA_ID ¸¦ ¸®ÅÏÇÑ´Ù.
366*/
367DHL_OS_SEMA_ID DHL_OS_CreateMutexSemaphore(const char *name);                           
368
369/**
370        @brief ¼¼¸¶Æ÷¾î¸¦ »èÁ¦ÇÑ´Ù.
371
372        semaphore delete¸¦ Áö¿øÇÏÁö ¾Ê´Â RTOSÀÇ °æ¿ì (ex: uCOS),
373        HAL ³»ºÎ¿¡¼­ emulationÀ» ÇØ¾ß ÇÔ. (free list °ü¸®..)
374
375        @param[in] sem »èÁ¦ÇÒ ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
376*/
377void DHL_OS_DeleteSemaphore(DHL_OS_SEMA_ID sem);
378
379
380/**
381        @brief  ¼¼¸¶Æ÷¾î¸¦ ȹµæÇÑ´Ù.
382
383        ¼¼¸¶Æ÷¾î¸¦ ȹµæÇÒ ¶§±îÁö ÀÌ ÇÔ¼ö´Â ÁߴܵȴÙ. millsecÀÌ
384        Áö³ªµµ·Ï        ȹµæÇÏÁö ¸øÇϸé DHL_FAIL_TIMEOUTÀ» ¸®ÅÏÇÑ´Ù.
385
386        @param[in] sem ȹµæÇÏ·Á°í ÇÏ´Â ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
387        @param[in] millisec timeout±îÁö ´ë±â ½Ã°£.
388                DHL_TIMEOUT_FOREVER ¸¦ ÁöÁ¤Çϸé timeout ¾øÀÌ ¹«ÇÑ ´ë±âÇÑ´Ù.
389       
390        @return         DHL_RESULT ŸÀÔ °á°ú ¸®ÅÏÇÑ´Ù.         
391                - DHL_OK: ¼º°ø.
392                - DHL_FAIL_TIMEOUT: millisec ½Ã°£ ³»¿¡ ¼¼¸¶Æ÷¾î¸¦ ȹµæÇϴµ¥ ½ÇÆÐ.
393                - DHL_FAIL_INVALID_HANDLE: Àß ¸øµÈ ¼¼¸¶Æ÷¾î ID ÀÔ·Â.
394*/
395DHL_RESULT DHL_OS_TakeSemaphore(DHL_OS_SEMA_ID sem, UINT32 millisec);
396
397/**
398        @brief ¼¼¸¶Æ÷¾î¸¦ ¹Ý³³ÇÑ´Ù. ÀÔ·Â ¼¼¸¶Æ÷¾î¸¦ ´ë±âÇϴ ŽºÅ©°¡ ÀÖÀ¸¸é ´Ù½Ã ½ºÄÉÁ층 µÈ´Ù.
399
400        @param[in] sem ¹Ý³³ÇÏ·Á°í ÇÏ´Â ¼¼¸¶Æ÷¾îÀÇ ½Äº°ÀÚ.
401       
402        @return         DHL_RESULT ŸÀÔ °á°ú ¸®ÅÏÇÑ´Ù.         
403                - DHL_OK: ¼º°ø.
404                - DHL_FAIL_INVALID_HANDLE: Àß ¸øµÈ ¼¼¸¶Æ÷¾î ID ÀÔ·Â.
405*/
406DHL_RESULT DHL_OS_GiveSemaphore(DHL_OS_SEMA_ID sem);
407
408/*@}*/
409
410/****************************************************/
411#if COMMENT
412____MsgQ_API____(){}
413#endif
414
415/** @name Message Queue API
416        @{
417*/
418
419/**
420        @brief ¸Þ½ÃÁö Å¥¸¦ »ý¼ºÇÑ´Ù.
421
422        @param[in] name »ý¼ºÇÒ ¸Þ½ÃÁö Å¥ÀÇ À̸§.
423        @param[in] options Suspend Á¤Ã¥. 0À̸é FIFO, 1À̸é Priority ¹æ½Ä.
424        @param[in] maxMessages ÃÖ´ë ¸Þ½ÃÁö °¹¼ö.
425        @param[in] maxMessageLength ¸Þ½ÃÁö ÇϳªÀÇ ÃÖ´ë ±æÀÌ.
426       
427        @return
428                DHL_OS_MSGQ_ID ŸÀÔÀÇ Å½ºÅ© ID ¸¦ ¸®ÅÏÇÑ´Ù.
429                »ý¼º¿¡ ½ÇÆÐÇÒ °æ¿ì DHL_INVALID_MSGQ_ID ¸¦ ¸®ÅÏÇÑ´Ù.
430*/
431DHL_OS_MSGQ_ID DHL_OS_CreateMessageQueue(const char *name, UINT32 options, 
432            UINT32 maxMessages, UINT32 maxMessageLength);
433/**
434        @brief ¸Þ½ÃÁö Å¥¸¦ »èÁ¦ÇÑ´Ù.
435
436        @param[in] qid »èÁ¦ÇÒ ¸Þ½ÃÁö Å¥ÀÇ ID.
437*/
438void DHL_OS_DeleteMessageQueue(DHL_OS_MSGQ_ID qid);
439
440/**
441        @brief ÁÖ¾îÁø ¸Þ½ÃÁö Å¥¿¡ ¸Þ½ÃÁö¸¦ Àü´ÞÇÑ´Ù.
442                ¸Þ½ÃÁö Å¥°¡ ²ËÂù °æ¿ì¿¡´Â suspendµÇÁö ¾Ê°í ¹Ù·Î ¸®ÅÏÇÑ´Ù.
443
444        @param[in] qid ¸Þ½ÃÁö°¡ Àü´ÞµÇ¾îÁú ¸Þ½ÃÁö Å¥ÀÇ ID.
445        @param[in] buffer ¸Þ½ÃÁöÀÇ ½ÃÀÛ ÁÖ¼Ò.
446
447        @return
448                - DHL_OK: ¼º°øÀûÀ¸·Î Àü´Þ.
449                - DHL_FAIL_INVALID_HANDLE: À߸øµÈ ¸Þ½ÃÁö Å¥ ID ÀÔ·Â.
450                - DHL_FAIL_INVALID_PARAM: ÆÄ¶ó¹ÌÅÍ ¿À·ù. buffer°¡ NULLÀÎ °æ¿ìÀÓ.
451                - DHL_FAIL_BUSY: ¸Þ½ÃÁö Å¥°¡ ²ËÂü.
452                - DHL_FAIL: ¾Ë ¼ö ¾ø´Â ¿¡·¯
453*/
454DHL_RESULT DHL_OS_SendMessage(DHL_OS_MSGQ_ID qid, void *buffer, int bytes);
455
456/**
457        @brief ÁÖ¾îÁø ¸Þ½ÃÁö Å¥·ÎºÎÅÍ ¸Þ½ÃÁö¸¦ Àü´Þ¹Þ´Â´Ù.
458
459        @param[in] qid ¸Þ½ÃÁö¸¦ °¡Á®¿Ã ¸Þ½ÃÁö Å¥ÀÇ ID.
460        @param[out] msgBuf ¸Þ½ÃÁö¸¦ ÀúÀåÇÒ °ø°£ÀÇ ÁÖ¼Ò.
461        @param[in] millisec timeout±îÁö ´ë±â ½Ã°£.
462                DHL_TIMEOUT_FOREVER ¸¦ ÁöÁ¤ÇÏ¸é ¹«Á¦ÇÑ ±â´Ù¸°´Ù.
463
464        @return
465                - DHL_OK: ¼º°øÀûÀ¸·Î ȹµæ.
466                - DHL_FAIL_TIMEOUT: millisec ½Ã°£ ³»¿¡ ¸Þ½ÃÁö¸¦ ȹµæÇϴµ¥ ½ÇÆÐ.
467                - DHL_FAIL_INVALID_HANDLE: À߸øµÈ ¸Þ½ÃÁö Å¥ ID ÀÔ·Â.
468                - DHL_FAIL_INVALID_PARAM: À߸øµÈ msgBuf ÁÖ¼Ò ÀÔ·Â.
469*/
470DHL_RESULT DHL_OS_ReceiveMessage(DHL_OS_MSGQ_ID qid, void *msgBuf, UINT32 millisec); 
471
472/*@}*/
473
474/****************************************************/
475#if COMMENT
476____Heap_API____(){}
477#endif
478
479
480/*
481        ÀÌ DHL_OS_USE_HEAP_DEBUG flagÀÇ ½ÇÁ¦ Á¤ÀÇ´Â ÀÌ API Çì´õ¿¡¼­ ÇÏÁö ¸»°í,
482        DHL_OSAL_Config.h ¿¡ Ãß°¡Çϱ⠹ٶ÷.
483        °¢ Ç÷§Æû º°·Î, ¶Ç´Â °³¹ßÀÚ »óȲ¿¡ ¸Â°Ô ¼öÁ¤ÇÏ¿© »ç¿ë.
484*/
485
486#if DHL_OS_USE_HEAP_DEBUG
487
488void *DHL_OS_DbgMalloc(int size, const char *_file, unsigned _line);
489void DHL_OS_DbgFree(void **pptr, const char *_file, unsigned _line);
490
491#define DHL_OS_Malloc(size) DHL_OS_DbgMalloc(size, __FILE__, __LINE__)
492#define DHL_OS_Free(p) DHL_OS_DbgFree(p, __FILE__, __LINE__)
493
494#else
495
496/**
497        @name OS Heap API
498        @{
499*/
500
501/**
502        @brief  ¸Þ¸ð¸® ¿µ¿ªÀ» ÇÒ´çÇÑ´Ù.
503
504        ÇÒ´ç ¹ÞÀº ¸Þ¸ð¸®´Â memset 0 ·Î clear µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
505
506        @param[in] size ÇÒ´ç ¹ÞÀ» ¸Þ¸ð¸® °ø°£ÀÇ »çÀÌÁî.
507       
508        @return         ÇÒ´ç ¹ÞÀº ¸Þ¸ð¸®ÀÇ ½ÃÀÛ ÁÖ¼Ò.         
509*/
510void *DHL_OS_Malloc(int size);
511//#define DHL_OS_Malloc(size) _DHL_OS_Malloc(size, __func__, __LINE__)
512
513/**
514        @brief  ÇÒ´ç ¹ÞÀº ¸Þ¸ð¸®¸¦ ÇØÁöÇÑ´Ù.
515                        ¸Þ¸ð¸®ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ °¡¸®Å°´ø Æ÷ÀÎÅÍ´Â 0À¸·Î ¹Ù²ãÁØ´Ù.
516
517        pptrÀÌ null À̰ųª, *pptrÀÌ null ÀÏ °æ¿ì ¾Æ¹«·± µ¿ÀÛÇÏÁö ¾Ê°í ±×³É ¸®ÅÏÇÑ´Ù.
518        ÀÌ °æ¿ì ½Ã½ºÅÛÀÌ ¿Àµ¿ÀÛ ÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù.
519       
520        @param[in] pptr ÇØÁö ÇÒ ¸Þ¸ð¸® ¿µ¿ªÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ °®°í ÀÖ´Â Æ÷ÀÎÅÍ º¯¼öÀÇ ÁÖ¼Ò.
521                        ÀÌÁß Æ÷ÀÎÅÍ·Î µÇ¾î ÀÖÀ½¿¡ À¯ÀÇÇÑ´Ù.
522*/
523void DHL_OS_Free(void **pptr);
524//#define DHL_OS_Free(p) _DHL_OS_Free(p, __func__, __LINE__)
525
526#endif
527
528
529/** @brief heap »óÅ Á¤º¸ Á¶È¸.
530
531        @param[in] pHeapStatus heap »óÅ Á¤º¸°¡ ä¿öÁú º¯¼ö ÁÖ¼Ò.
532*/
533void DHL_OS_GetHeapStatus(DHL_OS_HEAP_STATUS *pHeapStatus);
534
535/*@}*/
536
537/****************************************************/
538#if COMMENT
539____Tick_API____(){}
540#endif
541
542/**
543        @name OS Tick & Delay API
544        @{
545*/
546
547/**
548        @brief È£ÃâÇÑ Å½ºÅ©¸¦ ÀÔ·Â ½Ã°£ µ¿¾È ´ë±â»óÅ·Π¸¸µç´Ù.
549        @param[in]  millisec         
550                ´ë±â»óŸ¦ À¯ÁöÇÒ ½Ã°£(½Ã½ºÅÛ tick ´ÜÀ§).
551*/
552void DHL_OS_Delay(UINT32 millisec);
553
554/**
555        @brief ºÎÆÃÀÌÈÄ °æ°ú ½Ã°£À» ms ´ÜÀ§·Î ¸®ÅÏÇÑ´Ù.
556        @return ºÎÆÃÀÌÈÄ °æ°ú½Ã°£. ms ´ÜÀ§.
557*/
558UINT32 DHL_OS_GetMsCount(void);
559UINT32 DHL_OS_GetTickCount(void);
560
561UINT32 DHL_OS_GetTicksPerSecond(void);
562#define OS_GetTicksPerSecond DHL_OS_GetTicksPerSecond
563
564
565
566/*@}*/
567
568/****************************************************/
569#if COMMENT
570____IRQ_API____(){}
571#endif
572
573/**
574        @name OS Interrupt API
575        @{
576*/
577
578/**
579        @brief ÀÎÅÍ·´Æ®ÀÇ »óŸ¦ È®ÀÎÇÑ´Ù.
580                ÇöÀç »óŰ¡ ISR »óÅÂÀÎÁö¿Í´Â ´Ù¸£´Ù.
581                ÇöÀç »óŰ¡ ISR »óÅÂÀÎÁö¸¦ ¾Ë·Á¸é DHL_OS_GetTaskID()¸¦ »ç¿ëÇÑ´Ù.
582        @return ÀÎÅÍ·´Æ® Àá±è »óÅ ¸®ÅÏ.
583         - TRUE: ÀÎÅÍ·´Æ®°¡ Àá±ä »óÅÂ
584         - FALSE: ÀÎÅÍ·´Æ®°¡ Ç®¸° »óÅÂ
585*/
586BOOL DHL_OS_GetIntState(void);
587
588/**
589        @brief ÀÎÅÍ·´Æ®¸¦ Àá±Ù´Ù.
590
591        ±× µ¿¾È Áߺ¹ »ç¿ëµÇ´Â °æ¿ì°¡ ¾ø¾úÀ¸¹Ç·Î ´Ü¼øÇÑ Ã³¸®¸¦ À§ÇØ Áߺ¹ È£ÃâÀº Çã¿ëÇÏÁö ¾Êµµ·Ï ÇÑ´Ù.
592        Áߺ¹ È£Ãâ½Ã À߸øµÈ »ç¿ëÀ» °£ÁÖÇÏ¿© ASSERT ¹ß»ý.
593       
594        @return               
595                ÀÎÅÍ·´Æ®¸¦ Àá±×±â ÀüÀÇ mask»óÅÂ.               
596*/
597UINT32 DHL_OS_DisableInterrupts(void);
598
599/**
600        @brief Àá°ÜÀÖ´Â ÀÎÅÍ·´Æ®¸¦ Ǭ´Ù.
601
602        ÀÎÅÍ·´Æ® ¶ôÀÌ ¾Æ´Ñ »óȲ¿¡¼­ È£Ãâ½Ã¿¡´Â ¾Æ¹«·± µ¿ÀÛµµ ÇÏÁö ¾Ê°í Áï½Ã ¸®ÅÏÇÑ´Ù.
603       
604        @param[in]  mask         
605                ÀÎÅÍ·´Æ®¸¦ Àá±×±â ÀüÀÇ mask »óÅÂ.
606*/
607void DHL_OS_RestoreInterrupts(UINT32 mask);
608
609/*@}*/
610
611/****************************************************/
612#if COMMENT
613____DebugIO_API____(){}
614#endif
615
616/**
617        @name OS Debug Console I/O
618        @{
619*/
620
621/**
622        @brief
623        Äֿܼ¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.
624
625        LineFeed (LF, 0xA, '\\n') ¸¸À¸·Îµµ °³ÇàÀÌ µÇ¾î¾ß ÇÑ´Ù.
626        CR LF Á¶ÇÕÀ¸·Î ¾µ °æ¿ì¿¡µµ ¹®Á¦°¡ ¾ø¾î¾ß ÇÑ´Ù.
627
628        @param[in] fmt
629                Ãâ·Â ÇÒ µ¥ÀÌÅÍ. %·Î formatize µÈ ÇüÅÂ.
630        @return
631                Ãâ·ÂµÈ ±ÛÀÚ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. (¸Ç ¸¶Áö¸· NULL ¹®ÀÚ´Â Á¦¿Ü)
632*/
633        //int DHL_OS_Printf(const char *fmt, ...);
634        //int _DHL_OS_Printf(const char *fmt, ...);
635#define DHL_OS_Printf BKNI_Printf
636#define _DHL_OS_Printf BKNI_Printf
637
638
639
640
641
642/** @brief DHL_OS_GetChar()ÀÇ È®ÀåŰ ¿­°Å ŸÀÔ.
643
644        ŸÀÔ À̸§ ÀÚü´Â Áß¿äÇÏÁö ¾ÊÀ¸¹Ç·Î naming ruleÀ» ÁöŰÁö ¾Ê¾ÒÀ½.
645
646        ½ÇÁ¦·Î DHL_OS_GetChar() ÇÔ¼öÀÇ ¸®ÅϰªÀº int ·Î µÇ¾î ÀÖ´Ù.
647        ¸ðµç Ű °ªÀ» enumÀ¸·Î ´Ù Ç¥ÇöÇÒ ¼ö´Â ¾ø±â ¶§¹®.
648
649        À̸§ ¶ÇÇÑ EXTKEY·Î µÇ¾î ÀÖÀ¸³ª ¹Ýµå½Ã È®Àå۸¸ ÀÖ´Â °ÍÀº ¾Æ´Ô.
650        TAB, CR µîÀº È®Àå Ű´Â ¾Æ´ÏÁö¸¸ '\\t', '\\r' ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
651
652        ÁøÂ¥ È®Àå ŰÀÎÁö¸¦ üũÇÏ·Á¸é 0x7F·Î ½ÃÀÛÇÏ´ÂÁö·Î üũÇÏ¸é µÊ. 
653*/
654enum DHL_EXTKEY_t
655{
656        DHL_EXTKEY_NONE = 0x00,
657       
658        DHL_EXTKEY_TAB = 0x09,  // TAB
659        DHL_EXTKEY_CR  = 0x0d,  // CR
660        DHL_EXTKEY_ESC = 0x1b,  // ESC
661       
662        DHL_EXTKEY_F1  = 0x7F31317e, // F1
663        DHL_EXTKEY_F2  = 0x7F31327e, // F2
664        DHL_EXTKEY_F3  = 0x7F31337e, // F3
665        DHL_EXTKEY_F4  = 0x7F31347e, // F4
666        DHL_EXTKEY_F5  = 0x7F31357e, // F5
667        DHL_EXTKEY_F6  = 0x7F31377e, // F6
668        DHL_EXTKEY_F7  = 0x7F31387e, // F7
669        DHL_EXTKEY_F8  = 0x7F31397e, // F8
670        DHL_EXTKEY_F9  = 0x7F32307e, // F9
671        DHL_EXTKEY_F10 = 0x7F32317e, // F10
672        DHL_EXTKEY_F11 = 0x7F32337e, // F11
673        DHL_EXTKEY_F12 = 0x7F32347e, // F12
674       
675        DHL_EXTKEY_DEL = 0x7F00337e, // DEL
676
677        DHL_EXTKEY_UP  = 0x7F000041, // Up
678        DHL_EXTKEY_DN  = 0x7F000042, // Down
679        DHL_EXTKEY_RG  = 0x7F000043, // Right
680        DHL_EXTKEY_LF  = 0x7F000044, // Left
681
682        DHL_EXTKEY_PGUP = 0x7F00357e, // Page Up
683        DHL_EXTKEY_PGDN = 0x7F00367e, // Page Down
684
685        DHL_EXTKEY_HOME = 0x7F000048, // Home
686        DHL_EXTKEY_END  = 0x7F000046, // End
687
688};
689
690
691#define DHL_OS_CheckExtKey(key) (((key)&0xff000000)==0x7f000000)
692
693/**
694        @brief
695        Consol ¿¡¼­ Ű ÀÔ·ÂÀ» Çϳª ¹Þ¾Æ¼­ ¸®ÅÏÇÑ´Ù.
696
697        ¸¸¾à Ű ÀÔ·ÂÀÌ ¾ø´Â °æ¿ì¶ó¸é Ű ÀÔ·ÂÀ» ¹ÞÀ» ¶§ ±îÁö suspend µÈ´Ù.
698        È®Àå ۵µ ÀÔ·ÂÀ» ¹Þ´Â´Ù.
699       
700        @return
701                ÀÔ·ÂµÈ Å° °ªÀ» ¸®ÅÏÇÑ´Ù.
702                ÀÏ¹Ý ¹®ÀÚ, ¼ýÀÚ, ±âÈ£ µîÀ̶ó¸é ASCII ÄÚµå °ªÀ» ¸®ÅÏÇÑ´Ù.
703                È®Àå ۰¡ ÀÔ·Â µÉ °æ¿ì 8-bit º¸´Ù Å« °ªÀÌ ¸®ÅÏ µÈ´Ù.
704*/
705int DHL_OS_GetChar(void);
706
707/*@}*/
708
709/****************************************************/
710#if COMMENT
711____Init____(){}
712#endif
713
714/**
715        @name OS Init
716        @{
717*/
718
719/**
720        @brief OSALÀ» ÃʱâÈ­ ÇÑ´Ù.
721
722        ¸ðµç OSAL ÇÔ¼ö´Â ÀÌ ÃʱâÈ­ ÀÌÈÄ¿¡ »ç¿ëµÇ¾î¾ß ÇÑ´Ù.
723*/
724void DHL_OS_Init(void);
725
726/*@}*/
727
728/****************************************************/
729
730
731#ifdef __cplusplus
732} /* extern "C" */
733#endif
734
735
736#endif  /* __DHL_OSAL_H__ */
737
Note: See TracBrowser for help on using the repository browser.