4 # KOZOS IPC Relationship Visualization Tool (Version 0.0.1)
5 # Copyright(C) 2012 Shinichiro Nakamura (CuBeatSystems)
9 # 処理を実際に行うタスクはtask_xxx.c行う
10 # タスクはMSGBOX経由で仕事の依頼を受ける
11 # MSGBOXへの仕事依頼はipc_xxx.cが行う(task_xxx.cのフロントエンドとして機能)
12 # 仕事の依頼はtask_xxx.cがipc_xxx.cのインターフェースを使って行う
20 KXSEND_TEMPFILE=`mktemp kxsend.XXX`
21 KZSEND_TEMPFILE=`mktemp kzsend.XXX`
22 KZRECV_TEMPFILE=`mktemp kzrecv.XXX`
32 # kx_sendとkz_sendとkz_recvの情報を一時ファイルに格納する
34 grep kx_send $TARGET_SENDTASK | \
35 sed "s/kx_send(//" | sed "s/[\:,]//g" | sed "s/\.c//g" | \
36 awk '{ print "\"" $1 "\"" " -> " "\"" $2 "\"" }' > $KXSEND_TEMPFILE
37 grep kz_send $TARGET_SENDTASK | \
38 sed "s/kz_send(//" | sed "s/[\:,]//g" | sed "s/\.c//g" | \
39 awk '{ print "\"" $1 "\"" " -> " "\"" $2 "\"" }' > $KZSEND_TEMPFILE
40 grep kz_recv $TARGET_RECVTASK | \
41 sed "s/kz_recv(//" | sed "s/[\:,]//g" | sed "s/\.c//g" | \
42 awk '{ print "\"" $2 "\"" " -> " "\"" $1 "\"" }' > $KZRECV_TEMPFILE
47 echo "// Generated by KOZOS IPC Relationship Visualization Tool" >> $DOTFILE
48 echo "// Copyright(C) 2012 Shinichiro Nakamura (CuBeatSystems) " >> $DOTFILE
54 echo "digraph relationship {" >> $DOTFILE
56 echo " // Global configurations" >> $DOTFILE
57 echo " graph [size = \"16.0, 16.0\", label = \"KOZOS IPC Relationship Visualization\", labelloc = t, rankdir = LR];" >> $DOTFILE
61 # kx_sendとメッセージボックスの関係を記す
63 echo " // kx_send" >> $DOTFILE
67 # kx_sendを使ってMSGBOXに送信している箇所を抽出する
69 EVTSND=`echo $LINE | sed "s/\.c//g" | awk '{ print $1 }'`
70 MSGBOX=`echo $LINE | awk '{ print $3 }'`
71 echo " "$EVTSND" [style = dashed];" >> $DOTFILE
72 echo " "$MSGBOX" [shape = box];" >> $DOTFILE
73 echo " "$LINE";" >> $DOTFILE
74 done < $KXSEND_TEMPFILE
78 # kz_sendとメッセージボックスの関係を記す
80 echo " // kz_send" >> $DOTFILE
84 # kz_sendを使ってMSGBOXに送信している箇所を抽出する
86 EVTSND=`echo $LINE | sed "s/\.c//g" | awk '{ print $1 }'`
87 MSGBOX=`echo $LINE | awk '{ print $3 }'`
88 echo " "$EVTSND" [style = solid];" >> $DOTFILE
89 echo " "$MSGBOX" [shape = box];" >> $DOTFILE
90 echo " "$LINE";" >> $DOTFILE
91 done < $KZSEND_TEMPFILE
95 # kz_recvとメッセージボックスの関係を記す
97 echo " // kz_recv" >> $DOTFILE
101 # kz_recvを使ってMSGBOXから受信している箇所を抽出する
103 MSGBOX=`echo $LINE | awk '{ print $1 }'`
104 EVTRCV=`echo $LINE | sed "s/\.c//g" | awk '{ print $1 }'`
105 echo " "$MSGBOX" [shape = box];" >> $DOTFILE
106 echo " "$EVTRCV" [style = solid];" >> $DOTFILE
107 echo " "$LINE";" >> $DOTFILE
108 done < $KZRECV_TEMPFILE
125 # Graphviz/dotでグラフを描画する
127 dot -T png $DOTFILE -o $IMGFILE