Ticket #668

HOS-V4: hos4cfgのCRE_MBXについて
오픈 날짜: 2002-10-14 00:47 마지막 업데이트: 2003-04-01 21:09

Reporter:
소유자:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
1

Details

1. コンフィグレーションファイルで、

CRE_MBX(MBXID_SAMPLE1, {TA_FIFO, 8, hoge});

とすると、kernel_cfg.cが

/* ------------------------------------------ */
/* create mail box objects */
/* ------------------------------------------ */

/* mail box control block for rom area */
const T_KERNEL_MBXCB_ROM kernel_mbxcb_rom[1] =
{
{(ATR)(TA_FIFO), (PRI)(8), (VP)(8)},
};

となる。


2. hogeでなくNULLを指定した場合に自動生成される
キューヘッダ領域は、

static UB kernel_mbx1_mprihd[TSZ_MPRIHD(8)];

となるが、

static T_MSG *kernel_mbx1_mprihd[(8)-TMIN_MPRI+1];

の方が、見た目での意味は通り易そうな感じがする。
これはバグではない。


また、これに関連して、
include/knl_mbx.h:

#define TSZ_MPRIHD(maxmpri) (sizeof(PRI *) * ((maxmpri)
- TMIN_MPRI + 1))

は、

#define TSZ_MPRIHD(maxmpri) (sizeof(T_MSG *) *
((maxmpri) - TMIN_MPRI + 1))

ではないか?

Ticket History (3/4 Histories)

2002-10-14 00:47 Updated by: m-arai
  • File 123: crembx.cpp.diff is attached
2002-10-14 22:47 Updated by: ryuz
  • 소유자 Update from (None) to ryuz
  • Resolution Update from None to Fixed
댓글 올리기
Logged In: YES
user_id=1811

1 については完全なバグです。ごめんなさい m(_ _)m

2の前半については、現状の方法の方が良いかと思います。
 理由としては、将来メールボックスの実装仕様が変更に
なった場合に、TSZ_MPRIHD マクロの定義を変更すれば済む
点と、cre_mbx を使う方が、コンフィギュレーターを真似して
直接 T_MSG* の配列を確保されても困ると言う点です。
 TSZ_MPRIHD はメールボックスを使う際にユーザー側で
メモリ確保をするのであれば、このサイズ分 mallocなどで
確保してくださいというものです。
 ITRON規格で、優先度管理領域が T_MSG* の配列であると
定めているわけではないので、隠しておく方がユーザーに
混乱を与えないと思います。

2の後半は個人的にはバグとの認識です。 T_MSG* に
直しました。

 後は、TMAX_MPRI の値が 255 になっていたので増やしました。
 現状 PRI が INT なのでサイズが環境依存なのが悩ましい
ところです。
 ((PRI)((1 << (sizeof(PRI) * 8 - 1) - 1))
 などの分かりずらいマクロも手なのですが...
2002-10-15 02:12 Updated by: m-arai
댓글 올리기
Logged In: YES
user_id=1822

了解しました。確かにTSZ_MPRIHDを使ってUBで確保する方が
柔軟に対応できますね。存在意義を考えれば当然でした。

((PRI)((1 << (sizeof(PRI) * 8 - 1) - 1))ですが、
((PRI)((1 << (sizeof(PRI) * 8 - 1)) - 1))?
個人的にはさほど分かりづらいとは思いませんが、必要ならばコメン
トを付ければよいかと思います。

ただ、この記述はgccだとinteger overflow in expressionの
warningが出るんですよね。
2003-04-01 21:09 Updated by: m-arai
  • Ticket Close date is changed to 2003-04-01 21:09
  • 소유자 Update from ryuz to m-arai
  • Status Update from Open to Closed
댓글 올리기
Logged In: YES
user_id=1822

1.に関する修正を、


http://cvs.sourceforge.jp/cgi-bin/viewcvs.
cgi/hos/hos/hos-v4/config/crembx.cpp.diff?r1=1.9&r2=1.10


で行った。




2.に関してはryuzさんにより既に修正済み


http://cvs.sourceforge.jp/cgi-bin/viewcvs.
cgi/hos/hos/hos-v4/include/knl_mbx.h.diff?r1=1.7&r2=1.8




ということで、TMAX_PRIの定義については結論が出ていないが、


Bugとして上がっている問題については既に解決しているので、


Fixedでcloseします。

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login