source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/rpc/tPPAllocator.c@ 388

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

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
File size: 4.9 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: tPPAllocator.c 388 2019-05-22 11:25:18Z coas-nagasima $
52 */
53
54/* #[<PREAMBLE>]#
55 * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
56 * tecsmerge によるマージに使用されます
57 *
58 * 属性アクセスマクロ #_CAAM_#
59 * heap_size uint32_t ATTR_heap_size
60 * buf int8_t* VAR_buf
61 * allocated_size uint32_t VAR_allocated_size
62 *
63 * #[</PREAMBLE>]# */
64
65#include "tPPAllocator_tecsgen.h"
66
67#ifndef E_OK
68#define E_OK 0 /* success */
69#define E_ID (-18) /* illegal ID */
70#endif
71
72/* 受け口関数 #_TEPF_# */
73/* #[<ENTRY_PORT>]# ePPAllocator
74 * entry port: ePPAllocator
75 * signature: sPPAllocator
76 * context: task
77 * #[</ENTRY_PORT>]# */
78
79/* #[<ENTRY_FUNC>]# ePPAllocator_alloc
80 * name: ePPAllocator_alloc
81 * global_name: tPPAllocator_ePPAllocator_alloc
82 * oneway: false
83 * #[</ENTRY_FUNC>]# */
84ER
85ePPAllocator_alloc(CELLIDX idx, uint32_t size, void** ptr)
86{
87 ER ercd = E_OK;
88 CELLCB *p_cellcb;
89 if (VALID_IDX(idx)) {
90 p_cellcb = GET_CELLCB(idx);
91 }
92 else {
93 return(E_ID);
94 }
95
96 /* ここに処理本体を記述します #_TEFB_# */
97 if( size + VAR_allocatedSize > ATTR_heapSize ){
98 ercd = E_NOMEM;
99 }
100 else {
101 *ptr = (void *)(VAR_buf+VAR_allocatedSize);
102 VAR_allocatedSize += size;
103 }
104
105 return(ercd);
106}
107
108/* #[<ENTRY_FUNC>]# ePPAllocator_dealloc
109 * name: ePPAllocator_dealloc
110 * global_name: tPPAllocator_ePPAllocator_dealloc
111 * oneway: false
112 * #[</ENTRY_FUNC>]# */
113ER
114ePPAllocator_dealloc(CELLIDX idx, const void* ptr)
115{
116 ER ercd = E_OK;
117 CELLCB *p_cellcb;
118 if (VALID_IDX(idx)) {
119 p_cellcb = GET_CELLCB(idx);
120 }
121 else {
122 return(E_ID);
123 }
124
125 /* ここに処理本体を記述します #_TEFB_# */
126 if( (uintptr_t)ptr < (uintptr_t)VAR_buf || (uintptr_t)ptr >= (uintptr_t)(VAR_buf+VAR_allocatedSize) ){
127 ercd = E_PAR;
128 }
129 else {
130 VAR_allocatedSize = (uintptr_t)ptr - (uintptr_t)VAR_buf;
131 }
132
133 return(ercd);
134}
135
136/* #[<ENTRY_FUNC>]# ePPAllocator_dealloc_all
137 * name: ePPAllocator_dealloc_all
138 * global_name: tPPAllocator_ePPAllocator_dealloc_all
139 * oneway: false
140 * #[</ENTRY_FUNC>]# */
141ER
142ePPAllocator_dealloc_all(CELLIDX idx)
143{
144 ER ercd = E_OK;
145 CELLCB *p_cellcb;
146 if (VALID_IDX(idx)) {
147 p_cellcb = GET_CELLCB(idx);
148 }
149 else {
150 return(E_ID);
151 }
152
153 /* ここに処理本体を記述します #_TEFB_# */
154 VAR_allocatedSize = 0;
155
156 return(ercd);
157}
158
159/* #[<POSTAMBLE>]#
160 * これより下に非受け口関数を書きます
161 * #[</POSTAMBLE>]#*/
Note: See TracBrowser for help on using the repository browser.