- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/PPAllocator.cdl
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r388 r389 5 5 * Copyright (C) 2008-2013 by TOPPERS Project 6 6 *-- 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã®(1)(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 9 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 10 * å¤ã»åé 11 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 12 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 13 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 14 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 15 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 16 * ç¨ã§ããå½¢ã§åé 17 å¸ããå ´åã«ã¯ï¼åé 18 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 19 * è 20 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 21 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 22 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 23 * ç¨ã§ããªãå½¢ã§åé 24 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 25 * ã¨ï¼ 26 * (a) åé 27 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 28 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 29 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 30 * (b) åé 31 å¸ã®å½¢æ 32 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 33 * å ±åãããã¨ï¼ 34 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 35 * 害ãããï¼ä¸è¨èä½æ¨©è 36 ããã³TOPPERSããã¸ã§ã¯ããå 37 責ãããã¨ï¼ 38 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 39 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ãã 41 * å 42 責ãããã¨ï¼ 7 * 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ 8 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 9 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 10 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 11 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 12 * スコード中に含まれていること. 13 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 14 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 15 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 16 * の無保証規定を掲載すること. 17 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 18 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 19 * と. 20 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 21 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 22 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 23 * 報告すること. 24 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 25 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 26 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 27 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 28 * 免責すること. 43 29 * 44 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 * ã®è²¬ä»»ãè² ããªãï¼ 30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 * の責任を負わない. 50 35 * 51 36 * $Id$ … … 55 40 * PPAlloc: Push Pop Allocator 56 41 * 57 * allocate ããéé 㧠deallocate ããªãã¦ã¯ãªããªã58 * deallocate ã¯ãã¾ã¨ãã¦è¡ããã¨ãã§ãã59 * ä¾ãã°æåã« allocate ãããé åã deallocate ããã¨ããã¹ã¦ã® allocate ãããé åã deallocate ãããã¨ã«ãªã60 * æä»å¶å¾¡ãã¦ããªãããåä¸ã®ã¿ã¹ã¯ã«å²ä»ãã¦ä½¿ç¨ãã42 * allocate した逆順で deallocate しなくてはならない 43 * deallocate は、まとめて行うことができる 44 * 例えば最初に allocate された領域を deallocate すると、すべての allocate された領域を deallocate したことになる 45 * 排他制御していないため単一のタスクに割付けて使用する 61 46 */ 62 47 63 [deviate] // alloc ãé¸è±ã«ãªã48 [deviate] // alloc が逸脱になる 64 49 signature sPPAllocator { 65 50 /* 66 * size ã§æå®ããã大ããã®ã¡ã¢ãªé åãã¢ãã±ã¼ããã67 * ã¡ã¢ãªé åã確ä¿ãããå ´å *ptr ã«ã¡ã¢ãªé åã®ã¢ãã¬ã¹ãæ ¼ç´ã㦠E_OK ãè¿ã68 * ååãªç©ºãé åããªãå ´å E_NOMEM ãè¿ã51 * size で指定された大きさのメモリ領域をアロケートする 52 * メモリ領域が確保された場合 *ptr にメモリ領域のアドレスを格納して E_OK を返す 53 * 十分な空き領域がない場合 E_NOMEM を返す 69 54 */ 70 55 ER alloc( [in]uint32_t size, [out]void **ptr ); 71 56 /* 72 * ã¡ã¢ãªããã¢ãã±ã¼ããã73 * alloc ã§ç²å¾ãããã¤ã³ã¿ãå¼ãæ° ptr ã«æå®ãã74 * alloc ã§ç²å¾ããã¡ã¢ãªé åã alloc ããã®ã¨ã¯éé ã« dealloc ããªãã¦ã¯ãªããªã75 * ãã¹ã¦ã dealloc ããã«ã¯ãæåã« alloc ãããã¡ã¢ãªé åã dealloc ãããã¨ã§è¡ããã¨ãã§ãã76 * alloc ãç²å¾ããã¡ã¢ãªé åããã¹ã¦ dealloc ããåã«ãåã³ alloc ãããã¨ã¯ã§ãã77 * ãã®å ´åã§ããdealloc ãã¦ããªãã¡ã¢ãªé åã alloc ããã®ã¨ã¯éé ã« dealloc ããªãã¦ã¯ãªããªã57 * メモリをデアロケートする 58 * alloc で獲得したポインタを引き数 ptr に指定する 59 * alloc で獲得したメモリ領域を alloc したのとは逆順に dealloc しなくてはならない 60 * すべてを dealloc するには、最初に alloc されたメモリ領域を dealloc することで行うことができる 61 * alloc し獲得したメモリ領域をすべて dealloc する前に、再び alloc することはできる 62 * その場合でも、dealloc していないメモリ領域を alloc したのとは逆順に dealloc しなくてはならない 78 63 * 79 * ptr ã®å¤ã buf <= ptr < buf+allocated_size ãæºãããã©ããæ¤æ»ããã80 * ptr ã®å¤ãä¸æ£ã®å ´å E_PAR ãè¿ã64 * ptr の値が buf <= ptr < buf+allocated_size を満たすかどうか検査される 65 * ptr の値が不正の場合 E_PAR を返す 81 66 */ 82 67 ER dealloc( [in]const void *ptr ); 83 68 84 69 /* 85 * PPAllocator ã»ã«ã®å²ä»ãæ¸ã¿ã¡ã¢ãªããã¹ã¦è§£æ¾ãã 86 * ãã®é¢æ°ã¯å¿ 87 ãæåãã 70 * PPAllocator セルの割付け済みメモリをすべて解放する 71 * この関数は必ず成功する 88 72 */ 89 73 ER dealloc_all(void);
Note:
See TracChangeset
for help on using the changeset viewer.