source: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/PPAllocator.cdl@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
File size: 4.3 KB
Line 
1/*
2 * TECS Generator
3 * Generator for TOPPERS Embedded Component System
4 *
5 * Copyright (C) 2008-2013 by TOPPERS Project
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è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49 * の責任を負わない.
50 *
51 * $Id: PPAllocator.cdl 270 2017-02-09 04:03:47Z coas-nagasima $
52 */
53
54/*
55 * PPAlloc: Push Pop Allocator
56 *
57 * allocate した逆順で deallocate しなくてはならない
58 * deallocate は、まとめて行うことができる
59 * 例えば最初に allocate された領域を deallocate すると、すべての allocate された領域を deallocate したことになる
60 * 排他制御していないため単一のタスクに割付けて使用する
61 */
62
63[deviate] // alloc が逸脱になる
64signature sPPAllocator {
65 /*
66 * size で指定された大きさのメモリ領域をアロケートする
67 * メモリ領域が確保された場合 *ptr にメモリ領域のアドレスを格納して E_OK を返す
68 * 十分な空き領域がない場合 E_NOMEM を返す
69 */
70 ER alloc( [in]uint32_t size, [out]void **ptr );
71 /*
72 * メモリをデアロケートする
73 * alloc で獲得したポインタを引き数 ptr に指定する
74 * alloc で獲得したメモリ領域を alloc したのとは逆順に dealloc しなくてはならない
75 * すべてを dealloc するには、最初に alloc されたメモリ領域を dealloc することで行うことができる
76 * alloc し獲得したメモリ領域をすべて dealloc する前に、再び alloc することはできる
77 * その場合でも、dealloc していないメモリ領域を alloc したのとは逆順に dealloc しなくてはならない
78 *
79 * ptr の値が buf <= ptr < buf+allocated_size を満たすかどうか検査される
80 * ptr の値が不正の場合 E_PAR を返す
81 */
82 ER dealloc( [in]const void *ptr );
83
84 /*
85 * PPAllocator セルの割付け済みメモリをすべて解放する
86 * この関数は必
87ず成功する
88 */
89 ER dealloc_all(void);
90};
91
92celltype tPPAllocator {
93 entry sPPAllocator ePPAllocator;
94 attr {
95 uint32_t heapSize;
96 };
97 var {
98 [size_is(heapSize)]
99 int8_t *buf;
100 uint32_t allocatedSize;
101 };
102};
103
Note: See TracBrowser for help on using the repository browser.