トップ «前の日(12-07) 最新 次の日(12-09)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|

2006-12-07

_ [買いもの]CSE-M14T

ブックタイプのm-ATXケースとしてAOpen H360C(あまり他の選択しが無いし、 欲を言えばH360Aが欲しかったのだが...)、秘密兵器 CSE-M14Tを購入

写真とかは、のちほどうぷ

SUPERMICROなロゴマークのついた箱

梱包を開けるとこんな感じ

CSE-M14T本体はこんな感じ


2011-12-07

_ [雑記]RedMineのレポジトリ連動について

CVSレポジトリ連動を使うには、RedMineが動作するWeb Server側と CVSレポジトリ Server側の双方に 1.12系列の開発版cvsが必要 (rlsサブコマンドが発行されるため)

Subversionレポジトリ連動を使うときは、svnの動作環境の LC_TIMECに設定しておかないと logの日付のパースに失敗する

_ [SAD]暗黙の積演算子

暗黙の積演算子で問題発生 次の入力でエラーになる

  {(.04900615163214845-9.822983116787175e-14 I),(-.03673869301236704-.038768017943886436 I),(.12177086853110757-.0010701917715088265
    I),(.11626198123227845+.12420170191229517 I),(-.3131902147075775+.1147222051951141 I),(.2852859413214444-.0480098408950545 I)}

おそらく、改行を跨いだ暗黙の積演算子を構文解析出来ていない orz

(が閉じていないので、改行があっても構文的にはコンテキストが つながっているはずなのに解析出来ていませんねぇ

実はこれ、SADのWrite[]関数が生成した出力なのですが...

読み込み前に、sedで加工かな


2017-12-07

_ [SAD]CaWrite1/CaWrite2

既存実装の動作解析まとめ

CaWrite1[chid, value]

  • 返り値 - value (ca_put後に ca_getしたものを返す)
  • エラー
    • General::narg - 引数が2個では無い
    • General::wrongtype - 引数の型が正しくない
    • CA::write - valueがReal ListもしくはString Listで無い(ぉぃぉぃ)
      • caputrealarray_/caputstringarray_にてList要素の型検査エラーで発生
      • EPICS CA APIのエラーは、すべて無視されている
  • 実装本体は、nfCaWrite(src/tfefun2.f)及び caputreal_/caputstring_/caputrealarray_/caputstringarray_(src/CaSearch_.c)
    • ca_stateは調べていない
      • ca_put時点で接続状態になければ、ECA_DISCONNが返る
    • ca_put/ca_getの後で、ca_pend_ioする(計2回)ので、Blocking I/Oになっている
      • ca_put後のca_pend_ioは、ca_flush_ioで十分と思われる
    • EPICS CA APIのエラーハンドリングは行われない
    • ca_pend_ioのタイムアウト設定値
関数タイムアウト
caputreal_100
caputsyring_0.1
caputrealarray_0.5
caputstringarray_0.5

CaWrite2[{chid, value}...]

  • 返り値 - Null
  • エラー
    • General::narg - 引数無しの場合
  • 引数を個別 nfCaWriteNoWait(src/tfefun2.f)で処理する
  • nfCaWriteNoWait側では、itfmessageによるエラー処理を行っているが、ドライバ側(tfefun2)で irtcをクリアし、Nullを返している
    • ca_state(chid)が cs_connであることをca_putの事前条件に設定している
    • ca_putは、DBR_STRING/DBR_DOUBLEにて、ca_put/ca_array_putを実行している(caput*nowait_ @ src/CaSearch_.c)
      • ca_putは、ca_array_putのマクロなので、この部分は EPICS\$CaPutと同様と言える
      • General::nargを返すケースを除外すると、エラーを無視してEPICS\$CaPutをScanする以下のコードと同義
CaWrite2[arguments__] := Scan[Check[EPICS$CaPut@@#, Null]&, {arguments}]

再実装の方針

  • CaWrite1は、EPICS\$CaPutに ca_pend_io→ca_get→ca_pend_ioのシーケンスを追加した派生版として実装可能
    • DBRテンプレートと戻り値生成部の改修で対応可能
    • ca_pend_ioのタイムアウト値は、再検討が必要
      • CaOpen1/CaOpen2/CaRead1/CaRead2にも存在するので、調査の上、合理的な値を設定すべき
  • CaWrite2は、EPICS\$CaPutにエラー時のMessage生成を抑制した派生版で引数列をScanするドライバーとして実装可能

_ [SAD][EPICS]ca_put前のca_state検査

ca_putのマニュアルによれば、ca_put時点でchannelが接続状態になければ、ECA_DISCONNが返るとあるので、ca_putに投げ込む値を組み立てるのにコストが必要な場合は、事前にca_stateで接続状態を確認した方が良いと思われる


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記