source: asp3_tinet_ecnl_rx/trunk/asp3_dcre/kernel/mempfix.trb@ 337

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

ASP3版ECNLを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 4.5 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TOPPERS/ASP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Advanced Standard Profile Kernel
6#
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10#
11# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16# スコード中に含まれていること.
17# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20# の無保証規定を掲載すること.
21# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23# と.
24# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25# 作権表示,この利用条件および下記の無保証規定を掲載すること.
26# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27# 報告すること.
28# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32# 免責すること.
33#
34# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38# の責任を負わない.
39#
40# $Id$
41#
42
43#
44# 固定長メモリプール機能の生成スクリプト
45#
46
47class MempfixObject < KernelObject
48 def initialize()
49 super("mpf", "mempfix")
50 end
51
52 def prepare(key, params)
53 # パラメータが省略された時のデフォルト値の設定
54 params[:mpf] ||= "NULL"
55 params[:mpfmb] ||= "NULL"
56
57 # mpfatrが無効の場合(E_RSATR)[NGKI2225]
58 #(TA_TPRI以外のビットがセットされている場合)
59 if (params[:mpfatr] & ~($TA_TPRI)) != 0
60 error_illegal_id("E_RSATR", params, :mpfatr, :mpfid)
61 end
62
63 # blkcntが0の場合(E_PAR)[NGKI2229]
64 if params[:blkcnt] == 0
65 error_illegal_id("E_PAR", params, :blkcnt, :mpfid)
66 end
67
68 # blkszが0の場合(E_PAR)[NGKI2230]
69 if params[:blksz] == 0
70 error_illegal_id("E_PAR", params, :blksz, :mpfid)
71 end
72
73 # 固定長メモリプール領域
74 if params[:mpf] == "NULL"
75 mpfName = "_kernel_mpf_#{params[:mpfid]}"
76 $kernelCfgC.add("static MPF_T #{mpfName}" \
77 "[#{params[:blkcnt]} * COUNT_MPF_T(#{params[:blksz]})];")
78 params[:mpfinib_mpf] = mpfName
79 else
80 params[:mpfinib_mpf] = "(void *)(#{params[:mpf]})"
81 end
82
83 # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166]
84 if params[:mpfmb] != "NULL"
85 error_illegal_id("E_NOSPT", params, :mpfmb, :mpfid)
86 end
87
88 # 固定長メモリプール管理領域
89 mpfmbName = "_kernel_mpfmb_#{params[:mpfid]}"
90 $kernelCfgC.add("static MPFMB #{mpfmbName}[#{params[:blkcnt]}];")
91 params[:mpfinib_mpfmb] = mpfmbName
92 end
93
94 def generateInib(key, params)
95 return("(#{params[:mpfatr]}), (#{params[:blkcnt]}), " \
96 "ROUND_MPF_T(#{params[:blksz]}), #{params[:mpfinib_mpf]}, " \
97 "#{params[:mpfinib_mpfmb]}")
98 end
99end
100
101#
102# 固定長メモリプールに関する情報の生成
103#
104$kernelCfgC.comment_header("Fixed-sized Memorypool Functions")
105MempfixObject.new.generate()
Note: See TracBrowser for help on using the repository browser.