source: asp3_tinet_ecnl_rx/trunk/asp3_dcre/kernel/semaphore.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: 3.8 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 SemaphoreObject < KernelObject
48 def initialize()
49 super("sem", "semaphore")
50 end
51
52 def prepare(key, params)
53 # sematrが無効の場合(E_RSATR)[NGKI1456]
54 #(TA_TPRI以外のビットがセットされている場合)
55 if (params[:sematr] & ~($TA_TPRI)) != 0
56 error_illegal_id("E_RSATR", params, :sematr, :semid)
57 end
58
59 # (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)[NGKI1468]
60 if !(1 <= params[:maxsem] && params[:maxsem] <= $TMAX_MAXSEM)
61 error_illegal_id("E_PAR", params, :maxsem, :semid)
62 end
63
64 # (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)[NGKI1466]
65 if !(0 <= params[:isemcnt] && params[:isemcnt] <= params[:maxsem])
66 error_wrong_id("E_PAR", params, :isemcnt, :semid, "too large")
67 end
68 end
69
70 def generateInib(key, params)
71 return("(#{params[:sematr]}), (#{params[:isemcnt]}), (#{params[:maxsem]})")
72 end
73end
74
75#
76# セマフォに関する情報の生成
77#
78$kernelCfgC.comment_header("Semaphore Functions")
79SemaphoreObject.new.generate()
Note: See TracBrowser for help on using the repository browser.