/* * TOPPERS ATK2 * Toyohashi Open Platform for Embedded Real-Time Systems * Automotive Kernel Version 2 * * Copyright (C) 2012-2015 by Center for Embedded Computing Systems * Graduate School of Information Science, Nagoya Univ., JAPAN * Copyright (C) 2012-2015 by FUJI SOFT INCORPORATED, JAPAN * Copyright (C) 2012-2013 by Spansion LLC, USA * Copyright (C) 2012-2015 by NEC Communication Systems, Ltd., JAPAN * Copyright (C) 2012-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN * Copyright (C) 2012-2014 by Renesas Electronics Corporation, JAPAN * Copyright (C) 2012-2015 by Sunny Giken Inc., JAPAN * Copyright (C) 2012-2015 by TOSHIBA CORPORATION, JAPAN * Copyright (C) 2012-2015 by Witz Corporation * Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN * Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN * Copyright (C) 2014-2015 by SCSK Corporation, JAPAN * * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー * スコード中に含まれていること. * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 * の無保証規定を掲載すること. * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ * と. * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 * 作権表示,この利用条件および下記の無保証規定を掲載すること. * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに * 報告すること. * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを * 免責すること. * * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利 * 用する者に対して,AUTOSARパートナーになることを求めている. * * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ * の責任を負わない. * * $Id: ioc_impl.h 187 2015-06-25 03:39:04Z t_ishikawa $ */ /* * IOC機能 */ #ifndef TOPPERS_IOC_IMPL_H #define TOPPERS_IOC_IMPL_H #include "kernel_impl.h" #include "osap.h" /* * Wrapper IDからIOCWRPINIBを取り出すためのマクロ */ #define get_iocwrpinib(WrapperId) (&iocwrpinib_table[(WrapperId)]) /* * IOC IDからIOCCB,IOCINIBを取り出すためのマクロ */ #define get_ioccb(iocid) (&ioccb_table[(iocid)]) #define get_iocinib(iocid) (&iocinib_table[(iocid)]) /* * IOCWRPINIBからIOC IDを取り出すためのマクロ */ #define IOCID(p_iocwrpinib) ((IocType) (((p_iocwrpinib)->p_iocinib) - iocinib_table)) /* * IOC初期化ブロック */ typedef struct ioc_initialization_block { uint32 maxque; /* キュー数 */ uint32 datasz; /* データサイズ */ uint32 alignsz; /* アラインサイズ */ #ifdef CFG_USE_ERRORHOOK boolean groupflg; /* グループ通信フラグ */ #endif /* CFG_USE_ERRORHOOK */ OSAPCB *p_rcvosapcb; /* Receiverが所属するOSAPの初期化ブロックへのポインタ */ void *p_iocmb; } IOCINIB; /* * IOC管理ブロック(Os_Lcfg.c) */ typedef struct ioc_control_block { uint32 quecnt; /* 現在のキュー数 */ uint32 head; /* キューの先頭 */ uint32 tail; /* キューの最後 */ boolean lostflg; /* キューフルエラー(E_LOST_DATA)用フラグ */ } IOCCB; /* * IOC Wrapper初期化ブロック */ typedef struct ioc_wrapper_initialization_block { const IOCINIB *p_iocinib; /* IOC初期化ブロックへのポインタ */ OSAPCB *p_sndosapcb; /* Senderが所属するOSAPの初期化ブロックへのポインタ */ SenderIdType senderid; /* SenderID */ } IOCWRPINIB; extern const IocType tnum_ioc; /* IOCの数 */ extern const IocType tnum_queueioc; /* キューありIOCの数 */ /* * IOC Wrapper初期化ブロック(Os_Lcfg.c) */ extern const IOCWRPINIB iocwrpinib_table[]; /* * IOC初期化ブロック(Os_Lcfg.c) */ extern const IOCINIB iocinib_table[]; /* * IOC管理ブロック(Os_Lcfg.c) */ extern IOCCB ioccb_table[]; /* * IOC WRAPPER初期化ブロック(Os_Lcfg.c) */ extern const IOCWRPINIB iocwrpinib_table[]; /* * IOC初期化値テーブル */ extern void *ioc_inival_table[]; /* * IOC管理モジュールの初期化 */ extern void ioc_initialize(void); #endif /* TOPPERS_IOC_IMPL_H */