Sept 20, 2000 onl50t: Solaris 2.6 cc ドライバのデバッグ. cc ドライバのデバッグ#04(その9) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol2.6/Desktop/debug-list-step09.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). 株式会社ロジックハウスの白田様より SPARC CPU-50T を借用した。 (B). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris2.6 のシステムを インストールした。 (C). /etc の下の各設定、および /export/home の作成をやった。 (D). "Solaris2.6 Hardware: 5/98 SMCC Desktop 日本語版 SPARC版"では ディスクレス・クライアントを設定することはできないことを確認した。 (E). CPU-50T に Solaris2.6用の VMEドライバ、FRCvme-2.3.1 をインストール した。 (F). onl50t に ccドライバをインストールした。 (G). サンプル・プログラムを実行した。 (1). cam1、シングル・アクション 24ビット camac read/write の実行 NG. システムはパニックを起こしてリブートしてしまう。 (2). cam3、camac LAM割り込み処理の実行 NG. システムはパニックを起こしてリブートしてしまう。 (3). cam2、ブロック転送 16ビット read/write の実行 ok. 正常に実行できた。 (4). cam2、ブロック転送 24ビット read/write の実行 ok. 正常に実行できた。 (H). クラッシュ時の savecoreファイルを入手してデバッグを始めた。 (I). cam1プログラムのデバッグ、icc_ioctlルーチンを修正した。 ok. cam1プログラムは正常に実行できた。 (J). cam3プログラムのデバッグを始めた。 camac_s()ルーチンの中で "cc->k->dhr = *dat;" を実行したところでエラーになっている。 message構造体をcc_device構造体の中に入れてみたが改善されない。 (K). cam3プログラムは正常に動作できるようになった。 (L). cam3プログラムのデバッグ時に付加したゴミをはずして最終的な動作確認 をやった。 ok. (M). onl50t 上でデバッグしたcamacドライバをfrc7v-cl2 上で動作確認した。 ok. (N). onl50t 上でデバッグしたcamacドライバを onl7v2、スタンドアロン Solaris2.6 上で動作確認した。 ok. (O). onl50t 上でデバッグしたcamacドライバを frc8vt、ディスクレス・サーバ Solaris2.6 上で動作確認した。 ok. (P). onl50t 上でデバッグしたcamacドライバを onl8v1、スタンドアロン Solaris2.6 上で動作確認した。 ok. (Q). onl50t 上でデバッグしたcamacドライバを onl5v4、スタンドアロン Solaris2.6 上で動作確認した。 ok. (R). スタンドアロン Solaris2.6、onl50t 上で、シングルアクションの実行 速度を測定時に、camac_s()コールを連続実行すると不正割り込みが かかってしまった。 (S). camac_s()コールを連続実行しても不正割り込みはかからないように なった。 ok. -------------------- リスト処理 (A). 公開版のcamacドライバ、"FORCE-50T-sol2.6" を使ってリスト処理の テストを始める。 (B). KEKリスト処理で camacシングルアクション read/write、LAM割り込み 処理、DMA camacブロック転送の現状確認をした。 (C). Kineticリスト処理で camacシングルアクション read の現状確認をした。 (D). KEKリスト処理、Kineticリスト処理両方をとおしてソースプログラム上で 明らかに問題と思われる部分を修正した。 (E). KEKリスト処理でシングルアクション read/write が正常に実行できて いることを確認した。 (F). KEKリスト処理で DMA camacブロック転送 read が正常に実行できて いることを確認した。 (G). KEKリスト処理で LAM割り込み処理が が正常に実行できていることを確認 した。 (H). KEKリスト処理全般に関連する関数の動作を確認した。 (I). Kineticリストで camacにアクセスする関数が正常に動作するのを確認 した。 (2). ここでやるべきこと Kineticリスト処理で リスト・ファイルのセーブおよびロードができることを 調べる。 さらに KEKリスト処理とKineticリスト処理が混在した状態について 調べる。 (3). 現状確認 (3-1). テスト用のプログラム(その1)をコンパイル onl50t[161]% pwd /export/home/onl50t/inoue/CAMAC/Driver/Kit-test/CAMAC-list/FORCE-50T-sol2.6/camlist-kine onl50t[162]% cat cam6.c /******************************************************************** * cam6.c 20-FEB-1992 Y.Takeuchi * * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam6.obj" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; /* int data[D_size]; */ unsigned short data[D_size]; /* unsigned short *usp = (unsigned short *)data; */ unsigned short *usp; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; usp = data; printf("data buf's address = 0x%x\n", data); /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* E.Inoue data[0] = 1; data[1] = 2; data[2] = 3; data[3] = 4; data[4] = 5; data[5] = 6; end */ /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* read camac list */ status = CRLIST(filename, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* install the list to K2917 */ status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } /* Execute */ printf(" Now execute %s ...\n", filename); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* save to file */ CKSAVE("cam6.klist"); /* Close */ CAMCLS(); return 0; } onl50t[163]% onl50t[163]% cat cam6.asm ***************************************************************** * cam6.ASM 20-FEB-1992 Y.Takeuchi * * Modified : 4-Jul-2000 E.Inoue * * * * camasm cam6 a * ***************************************************************** ;SW equ 11 ; Switch Register SW equ 3 ; Switch Register ;SCALER equ 6 ; CAMAC Scaler ; READ (0,SW,1) READ.l (0,SW,1) WRITE #6,(16,SW,0) WRITE #7,(16,SW,0) WRITE.l #6636321,(16,SW,0) IGQ (0,SW,1),#6 ; IGQ (0,SW,1),#32000 IGQ (0,SW,1),#100 IGQ.l (0,SW,1),#7 ; IGQ.l (0,SW,1),#16000 IGQ.l (0,SW,1),#100 QS (0,SW,1),#7 ; QS (0,SW,1),#32000 QS (0,SW,1),#100 QS.l (0,SW,1),#7 ; QS.l (0,SW,1),#32000 QS.l (0,SW,1),#100 AS (0,SW,1),#1 AS.l (0,SW,1),#1 NDT (10,SW,0) ; STOP end onl50t[164]% onl50t[164]% cat Makefile # ********************************************************************** # * * # * Makefile for VME CAMAC NOV-1991 Y.Takeuchi (TIT) * # * * # * Modified Aug 9, 2000 E.Inoue * # ********************************************************************** #CAMDIR = /usr/local/vme/camac CAMDIR = .. LIBDIR = $(CAMDIR) INCDIR = $(CAMDIR) CAMASM = $(CAMDIR)/camasm/camasm #CLIB = -I$(CAMDIR)/include -L$(CAMDIR)/lib -lcamac CLIB = -I$(INCDIR) -L$(LIBDIR) -lcamac CAMLIBRARY = $(LIBDIR)/libcamac.a CAMLIBINCC = $(INCDIR)/camlib.h CAMLIBINCF = $(INCDIR)/camlib.inc CC = cc #CFLAGS = -g #CFLAGS = -O CFLAGS = OBJ = cam0 cam1 cam1w cam3 cam4 cam5 cam6 cam6a cam7 all: $(OBJ) cam0 : cam0.c $(CC) $(CFLAGS) cam0.c -o cam0 $(CLIB) cam1 : cam1.c $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) cam1w : cam1w.c $(CC) $(CFLAGS) cam1w.c -o cam1w $(CLIB) cam3 : cam3.c $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) cam4 : cam4.c cam4.asm $(CC) $(CFLAGS) cam4.c -o cam4 $(CLIB) $(CAMASM) cam4 a cam5 : cam5.c $(CC) $(CFLAGS) cam5.c -o cam5 $(CLIB) #cam6 : cam6.c cam6.asm # $(CC) $(CFLAGS) cam6.c -o cam6 $(CLIB) # $(CAMASM) cam6 a cam6 : cam6.c cam6.asm $(CAMLIBRARY) $(CAMLIBINCC) $(CC) $(CFLAGS) cam6.c -o cam6 $(CLIB) $(CAMASM) cam6 a cam6a : cam6a.c $(CC) $(CFLAGS) cam6a.c -o cam6a $(CLIB) cam7 : cam7.c cam7a.asm cam7b.asm $(CC) $(CFLAGS) cam7.c -o cam7 $(CLIB) $(CAMASM) cam7a a $(CAMASM) cam7b a clean: rm -f $(OBJ) *.lis *.obj *~ *.o core *.klist onl50t[165]% onl50t[165]% make cam6 cc cam6.c -o cam6 -I.. -L.. -lcamac ../camasm/camasm cam6 a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[166]% onl50t[166]% ls -l cam6* -rwxr-xr-x 1 inoue kek 14788 Sep 8 16:06 cam6* -rw-r--r-- 1 inoue kek 895 Sep 8 16:02 cam6.asm -rw-r--r-- 1 inoue kek 1818 Sep 8 13:20 cam6.asm-Sept8-2000 -rw-r--r-- 1 inoue kek 393 Jul 4 13:41 cam6.asm-org -rw-r--r-- 1 inoue kek 2092 Sep 8 16:02 cam6.c -rw-r--r-- 1 inoue kek 1835 Aug 9 13:54 cam6.c-org -rw-r--r-- 1 inoue kek 134 Sep 8 14:37 cam6.klist -rw-r--r-- 1 inoue kek 1879 Sep 8 16:06 cam6.lis -rw-r--r-- 1 inoue kek 258 Sep 8 16:06 cam6.obj -rwxr-xr-x 1 inoue kek 14060 Jul 4 16:29 cam6a* -rw-r--r-- 1 inoue kek 1471 Jul 4 13:41 cam6a.c onl50t[167]% onl50t[167]% cat cam6.lis CAMASM macro assembler F0 1: ***************************************************************** F0 1: * cam6.ASM 20-FEB-1992 Y.Takeuchi * F0 1: * Modified : 4-Jul-2000 E.Inoue * F0 1: * * F0 1: * camasm cam6 a * F0 1: ***************************************************************** F0 1: ;SW equ 11 ; Switch Register F0 1: SW equ 3 ; Switch Register F0 1: ;SCALER equ 6 ; CAMAC Scaler F0 1: ; F0 1: 0201 0620 READ (0,SW,1) F0 3: 0202 0620 READ.l (0,SW,1) F0 5: 0305 0610 0006 WRITE #6,(16,SW,0) F0 8: 0305 0610 0007 WRITE #7,(16,SW,0) F0 B: 0406 0610 4321 0065 WRITE.l #6636321,(16,SW,0) F0 F: 031B 0620 0006 IGQ (0,SW,1),#6 F0 12: ; IGQ (0,SW,1),#32000 F0 12: 031B 0620 0064 IGQ (0,SW,1),#100 F0 15: 031C 0620 0007 IGQ.l (0,SW,1),#7 F0 18: ; IGQ.l (0,SW,1),#16000 F0 18: 031C 0620 0064 IGQ.l (0,SW,1),#100 F0 1B: 0313 0620 0007 QS (0,SW,1),#7 F0 1E: ; QS (0,SW,1),#32000 F0 1E: 0313 0620 0064 QS (0,SW,1),#100 F0 21: 0314 0620 0007 QS.l (0,SW,1),#7 F0 24: ; QS.l (0,SW,1),#32000 F0 24: 0314 0620 0064 QS.l (0,SW,1),#100 F0 27: 0317 0620 0001 AS (0,SW,1),#1 F0 2A: 0318 0620 0001 AS.l (0,SW,1),#1 F0 2D: 0209 060A NDT (10,SW,0) F0 2F: ; F0 2F: 0100 STOP F0 30: end onl50t[168]% onl50t[168]% cat cam6.obj 0030 0201 0620 0202 0620 0305 0610 0006 0305 0610 0007 0406 0610 4321 0065 031B 0620 0006 031B 0620 0064 031C 0620 0007 031C 0620 0064 0313 0620 0007 0313 0620 0064 0314 0620 0007 0314 0620 0064 0317 0620 0001 0318 0620 0001 0209 060A 0100 0000 onl50t[169]% (3-2). テスト用のプログラム(その1)を実行 onl50t[169]% pwd /export/home/onl50t/inoue/CAMAC/Driver/Kit-test/CAMAC-list/FORCE-50T-sol2.6/camlist-kine onl50t[170]% cam6 data buf's address = 0xefff52b4 list length = 48 Now execute cam6.obj ... buf's address = 0xefff52b4 data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 287 647 usp[ 2]=0x 5 5 usp[ 3]=0xff00 65280 data[ 2]=0x 5 5 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x ff00 65280 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5 5 usp[ 8]=0x 5 5 usp[ 9]=0x 5 5 data[ 5]=0x 5 5 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 5 5 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 5 5 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 5 5 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 5 5 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[171]% NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x65 NOTICE: kladd: : in while, code = 0x65 NOTICE: kladd: : in while, code = 0x66 NOTICE: kladd: : in while, code = 0x7b NOTICE: kladd: : in while, code = 0x7b NOTICE: kladd: : in while, code = 0x7c NOTICE: kladd: : in while, code = 0x7c NOTICE: kladd: : in while, code = 0x73 NOTICE: kladd: : in while, code = 0x73 NOTICE: kladd: : in while, code = 0x74 NOTICE: kladd: : in while, code = 0x74 NOTICE: kladd: : in while, code = 0x77 NOTICE: kladd: : in while, code = 0x78 NOTICE: kladd: : in while, code = 0x69 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x287 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x287 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xefff52b4 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xefff52b4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x287 NOTICE: klexe: step0: retlen = 0xfffffff0 NOTICE: klexe: step0: cc->ptr_udata = 0xefff52b4 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x287 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x287 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xefff52b8 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x50e NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xefff52b8 1294 1 40504 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x12b8 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x12b8 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x287 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xe0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xefff52b8 1294 1 40504 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0xff00, 0x5, 0x5, 0x5 , 0x5, 0x5, 0x5, 0x5, 0x5 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f7005c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x287 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x1b 1611922984 0 39210 0 1294 NOTICE: klexe: after physio() retlen = 0xfffffff0 NOTICE: klexe: after physio() &cc->retlen = 0x60f7005c, cc->retlen = 0x287 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0xff00, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x287 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30265a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 ok. テスト用プログラム(その1)は正常に実行できた。 上記の実行によって作られたセーブ・リスト・ファイルをチェック。 onl50t[172]% ls -l cam6.klist -rw-r--r-- 1 inoue kek 134 Sep 8 16:11 cam6.klist onl50t[173]% cat cam6.klist Btest1 ccaC!e+ + ) ) # # ! ! ; 9 onl50t[174]% od -x cam6.klist 0000000 0042 0074 0065 0073 0074 0031 0000 0287 0000020 0003 0620 0001 0620 0063 0610 0006 0000 0000040 0063 0610 0007 0000 0061 0610 4321 0065 0000060 002b 0620 fffa ffff 002b 0620 ff9c ffff 0000100 0029 0620 fff9 ffff 0029 0620 ff9c ffff 0000120 0023 0620 fff9 ffff 0023 0620 ff9c ffff 0000140 0021 0620 fff9 ffff 0021 0620 ff9c ffff 0000160 003b 0620 ffff ffff 0039 0620 ffff ffff 0000200 0003 060a 0080 0000206 onl50t[175]% od -c cam6.klist 0000000 \0 B \0 t \0 e \0 s \0 t \0 1 \0 \0 002 207 0000020 \0 003 006 \0 001 006 \0 c 006 020 \0 006 \0 \0 0000040 \0 c 006 020 \0 007 \0 \0 \0 a 006 020 C ! \0 e 0000060 \0 + 006 377 372 377 377 \0 + 006 377 234 377 377 0000100 \0 ) 006 377 371 377 377 \0 ) 006 377 234 377 377 0000120 \0 # 006 377 371 377 377 \0 # 006 377 234 377 377 0000140 \0 ! 006 377 371 377 377 \0 ! 006 377 234 377 377 0000160 \0 ; 006 377 377 377 377 \0 9 006 377 377 377 377 0000200 \0 003 006 \n \0 200 0000206 onl50t[176]% (3-3). テスト用のプログラム(その2)をコンパイル onl50t[181]% pwd /export/home/onl50t/inoue/CAMAC/Driver/Kit-test/CAMAC-list/FORCE-50T-sol2.6/camlist-kine onl50t[182]% cat cam6a.c /******************************************************************** * cam6a.c 20-FEB-1992 Y.Takeuchi * * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam6.klist" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; int data[D_size]; unsigned short *usp = (unsigned short *)data; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* load klist */ CKLOAD(filename); /* Execute */ printf(" Now execute ---test1---\n"); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ CAMCLS(); return 0; } onl50t[183]% onl50t[183]% make cam6a cc cam6a.c -o cam6a -I.. -L.. -lcamac onl50t[184]% ls -l cam6* -rwxr-xr-x 1 inoue kek 14788 Sep 8 16:06 cam6* -rw-r--r-- 1 inoue kek 895 Sep 8 16:02 cam6.asm -rw-r--r-- 1 inoue kek 1818 Sep 8 13:20 cam6.asm-Sept8-2000 -rw-r--r-- 1 inoue kek 393 Jul 4 13:41 cam6.asm-org -rw-r--r-- 1 inoue kek 2092 Sep 8 16:02 cam6.c -rw-r--r-- 1 inoue kek 1835 Aug 9 13:54 cam6.c-org -rw-r--r-- 1 inoue kek 134 Sep 8 16:11 cam6.klist -rw-r--r-- 1 inoue kek 1879 Sep 8 16:06 cam6.lis -rw-r--r-- 1 inoue kek 258 Sep 8 16:06 cam6.obj -rwxr-xr-x 1 inoue kek 14476 Sep 8 16:27 cam6a* -rw-r--r-- 1 inoue kek 1471 Sep 8 16:25 cam6a.c onl50t[185]% (3-4). テスト用のプログラム(その2)を実行 onl50t[176]% cam6a Now execute ---test1--- buf's address = 0xeffeb494 data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 5ff00 392960 usp[ 2]=0x 5 5 usp[ 3]=0xff00 65280 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 50005 327685 usp[ 8]=0x 5 5 usp[ 9]=0x 5 5 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[177]% NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30255a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22364 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xeffeb494 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x287 NOTICE: klexe: step0: retlen = 0x0 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x287 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x287 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x50e NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 1294 1 40504 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x1498 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x1498 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x287 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xe0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb498 1294 1 40504 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0xff00, 0x5, 0x5, 0x5 , 0x5, 0x5, 0x5, 0x5, 0x5 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f7005c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x287 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x1b 1624373544 0 39210 0 1294 NOTICE: klexe: after physio() retlen = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f7005c, cc->retlen = 0x287 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0xff00, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x287 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 ok. 正常に実行できた。 (3-5). CKDELのテスト onl50t[269]% vi cc.c : kldel(int unit, char *name) { struct cc_device *cc; : /* same name check */ for (i = 0; i < cc->ptr_dir; i++) if (strcmp(name, cc->klist1[i].name) == 0) { cc->klist1[i].name[0] = '\0'; /* E.Inoue */ cc->klist1[i].wc = 0; /* end */ return 0; } : klexe(int unit, char *name) { struct cc_device *cc; : uio = cc->uio; cc->retlen = 0; : onl50t[270]% onl50t[272]% cp cam6a.c cam6b.c onl50t[273]% vi cam6b.c : /******************************************************************** * cam6a.c 20-FEB-1992 Y.Takeuchi * * modified 11-Sep-2000 E.Inoue * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam6.klist" #define UNDEFNAME "test1" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; int data[D_size]; unsigned short *usp = (unsigned short *)data; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; char filename1[33]; /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); strcpy(filename1, UNDEFNAME); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* load klist */ CKLOAD(filename); /* Execute */ printf(" Now execute ---test1---\n"); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Execute */ printf(" Now execute ---test1---\n"); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* delete "test1" */ CKDEL(filename1); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Execute */ printf(" Now execute ---test1---\n"); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* load klist */ CKLOAD(filename); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Execute */ printf(" Now execute ---test1---\n"); CKEXEC("test1", data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ CAMCLS(); return 0; } onl50t[274]% nl50t[276]% vi Makefile : OBJ = cam0 cam1 cam1w cam3 cam4 cam5 cam6 cam6a cam7 cam6b : cam6b : cam6b.c $(CC) $(CFLAGS) cam6b.c -o cam6b $(CLIB) : onl50t[277]% onl50t[279]% make cam6b cc cam6b.c -o cam6b -I.. -L.. -lcamac onl50t[280]% onl50t[189]% cam6b Now execute ---test1--- buf's address = 0xeffeb494 data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 Now execute ---test1--- buf's address = 0xeffeb494 data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 Now execute ---test1--- buf's address = 0xeffeb494 data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 Now execute ---test1--- buf's address = 0xeffeb494 data[ 0]=0x 287 647 usp[ 0]=0x 0 0 usp[ 1]=0x 287 647 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 5ff00 392960 usp[ 8]=0x 5 5 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 50005 327685 usp[ 12]=0x 5 5 usp[ 13]=0x 5 5 data[ 7]=0x 50005 327685 usp[ 14]=0x 5 5 usp[ 15]=0x 5 5 data[ 8]=0x 50005 327685 usp[ 16]=0x 5 5 usp[ 17]=0x 5 5 data[ 9]=0x 50005 327685 usp[ 18]=0x 5 5 usp[ 19]=0x 5 5 onl50t[190]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xeffeb494 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x287 NOTICE: klexe: step0: retlen = 0x0 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x287 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x287 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x50e NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 1294 1 40504 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x1498 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x2b NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xfffa NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x1498 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x287 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xe0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xc NOTICE: cc_intr: 0xeffeb498 1294 1 40504 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x5, 0x5, 0x5, 0 x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x287 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x1b 1624373544 0 39210 0 1294 NOTICE: klexe: after physio() retlen = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x287 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 5, 0x5, 0x5, 0x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x287 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xeffeb494 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x287 NOTICE: klexe: step0: retlen = 0x0 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x287 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x287 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x50e NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 1294 1 40504 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x1498 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x2b NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xfffa NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x1498 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x287 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb498 1294 1 40504 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x5, 0x5, 0x5, 0 x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x287 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x1b 1624373544 0 39210 0 1294 NOTICE: klexe: after physio() retlen = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x287 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 5, 0x5, 0x5, 0x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x287 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: CC_CMD_DELKLIST: klname = test1 NOTICE: kldel: delte list: name = test1 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x0 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xeffeb494 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x0 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x0 NOTICE: klexe: step0: retlen = 0x0 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: No name: name = test1 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301eba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22bf4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x0 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xeffeb494 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x0 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: step0: cc->klist1[0].wc = 0x0 NOTICE: klexe: step0: retlen = 0x0 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x9f NOTICE: klexe: step3: cc->klist1[1].wc = 0x287 NOTICE: klexe: step3: cc->now_cma = 0x9f, 159(dec) NOTICE: klexe: step3: cc->now_wc = 0x287 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x50e NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 1294 1 40504 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x1498 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x9f NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x2b NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xfffa NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x9f NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x1498 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x287 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb498 1294 1 40504 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x5, 0x5, 0x5, 0 x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x287 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x1b 1624373544 0 39210 0 1294 NOTICE: klexe: after physio() retlen = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x611d805c, cc->retlen = 0x287 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 5, 0x5, 0x5, 0x5, 0x5, 0xff00, 0x5, 0x5 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x287 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 ok. CKDEL は正常に動作できた。 これで、kineticリスト処理として camlibでサポートされている機能、CKINIT、 CKADD、CKEXEC、CKSAVE、CKLOAD、CKDEL は全て正常に働くことを確認した。 続いて kineticリスト処理とKEKリスト処理を混在して実行する場合について 調べる。 (4). 現状確認(その2) kineticリスト処理とKEKリスト処理を混在して実行する場合について調べる。 (4-1). テスト用のプログラムについて kineticリスト処理とKEKリスト処理を混在して実行するためのテスト用の プログラムは、cam7.c、cam7a.asm、cam7b.asm である。 cam7.c は次のような構成になっている。 : CRLIST() /* kineticリスト処理用のファイルを読み込む */ CKADD() /* kineticリスト処理用のファイルをインストール */ CRLIST() /* KEKリスト処理用のファイルを読み込む */ CLEWAI() /* KEKリスト処理用のファイルを実行 */ /* この実行の中で、先にインストールしたkineticリスト */ /* を実行する。 */ : 注. KEKリスト処理のデバッグ時に使ったテスト用のプログラムの中では CRLIST、CLEWAI ではなくて、CamReaLIST、CamLisExeWAIt を使った がこれらは同義である。 onl50t[303]% grep CamReaLIST * camlib.h:#define CamReaLIST CRLIST onl50t[304]% grep CamLisExeWAIt * camlib.h:#define CamLisExeWAIt CLEWAI onl50t[305]% (4-2). テスト用のプログラムのコンパイル onl50t[41]% cat cam7.c /******************************************************************** * cam7.c 29-MAR-1992 Y.Takeuchi * * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam7a.obj" #define NAME1 "cam7b.obj" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; int data[D_size]; unsigned short *usp = (unsigned short *)data; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* read camac list */ status = CRLIST(filename, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* install the list to K2917 */ status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } /* read camac list */ status = CRLIST(NAME1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* Execute */ printf(" Now execute %s ...\n", NAME1); CLEWAI(list, lenlis, data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ CAMCLS(); return 0; } onl50t[42]% onl50t[43]% cat cam7a.asm ***************************************************************** * cam7a.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7a a * ***************************************************************** ;SW equ 11 ; Switch Register SW equ 3 ; Switch Register SCALER equ 6 ; CAMAC Scaler ; ; READ (0,SCALER,1) ;; READ (0,SCALER,1) ;; IGQ (0,SCALER,1),#3 ;; READ (0,SCALER,1) ;; READ (0,SCALER,1) ;; IGQ (0,SCALER,1),#4 ;; READ (0,SCALER,1) ;; READ (0,SCALER,1) ; READ (0,SW,1) ; READ (0,SCALER,1) ; IGQ (0,SCALER,1),#3 ; READ (0,SCALER,1) ; READ (0,SCALER,1) ; IGQ (0,SCALER,1),#4 ; READ (0,SCALER,1) ; READ (0,SCALER,1) ; STOP end onl50t[44]% onl50t[45]% cat cam7b.asm ***************************************************************** * cam7b.ASM 29-MAR-1992 Y.Takeuchi * * Modified: 4-Jul-2000 E.Inoue * * * * camasm cam7b a * ***************************************************************** ;SCALER equ 6 ; CAMAC Scaler SW equ 3 ; CAMAC SW register ; ; NDT (9,SCALER,1) ; Clear scaler ; READ (0,SCALER,1) ; Read scaler ; READ (0,SCALER,1) ; Read scaler ; MOVE #1,A ; Set Klist name to "test1" ; LOAD TIMER ; Execute Klist ; READ (0,SCALER,1) ; Read scaler ; READ (0,SCALER,1) ; Read scaler ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; STOP end onl50t[46]% onl50t[314]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[315]% onl50t[191]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... <--- ここでフリーズした。 この時 2917 の LED はすべて消灯して いる。 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30269a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 x34 rp=0x30269718 addr=0x60e64e46 mmu_fsr=0x0 cam7: alignment error: addr=0x60e64e46 pid=3697, pc=0x60d81358, sp=0x302697a8, tstate=0x1e05, context=0x18e0 g1-g7: 609010a0, 0, 60dd1dd8, 7a0, 0, 0, 60cf3a40 Begin traceback... sp = 302697a8 Called from 60d7f8bc, fp=30269830, args=0 612580d8 3 302698e4 4 611d8000 Called from 60d7cdbc, fp=30269898, args=0 60d83ddc 35 0 0 0 Called from 10088578, fp=30269970, args=35 302699d8 3c11 0 30269a10 611d8000 Called from 1002ec94, fp=30269a80, args=3 3 9e58 6013ecf8 60d67b1c 9e58 Called from 11b94, fp=effeb380, args=3 22524 3 224e8 effeb3d0 effeb3cc End traceback... panic[cpu0]/thread=0x60cf3a40: trap syncing file systems... 4 done 3455 static and sysmap kernel pages 30 dynamic kernel data pages 262 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 106 current user process pages 3853 total pages (3853 chunks) dumping to vp 601de2ac, offset 476278 3853 total pages, dump succeeded rebooting... Resetting ... screen not found. Can't open input device. Keyboard not present. Using ttya for input and output. FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.8, 256 MB memory installed, Serial #9204337. : NG. システムはパニック、リブートしてしまった。 (5). cam7プログラムのデバッグ (5-1). cam7.cファイルを修正して、CLEWAI()の直前までを実行してみる : /* install the list to K2917 */ status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } /* read camac list */ status = CRLIST(NAME1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* Execute */ /* printf(" Now execute %s ...\n", NAME1); CLEWAI(list, lenlis, data, D_size, &iosb); printf("\n"); */ /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ : onl50t[46]% cam7 list length = 4 list length = 16 data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[47]% NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 ok. ここまでは実行できている。 問題は KEKリスト処理を実行時に起きて いるようだ。 cam7b.asmファイルの LOAD命令の部分をはずして実行してみる。 : ; LOAD TIMER ; Execute Klist : onl50t[47]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[48]% cam7 list length = 4 list length = 15 data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[49]% NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3023ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22478 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 ok. パニック、リブートすることはしなくなった。 cc.cファイル中の LOAD に関係する部分をチェック。 onl50t[50]% vi cc.c : int cc_load_timer(int unit) { struct cc_device *cc; cc = ddi_get_soft_state(cc_state,unit); /* cc->a_reg = 0; return 0; */ /*** temporary ***/ return klexe(unit, cc->klist1[0].name); } : onl50t[51]% cc_load_timer()ルーチン、および klexe()ルーチンを修正する。 : int cc_load_timer(int unit) { struct cc_device *cc; char klname[9]; cc = ddi_get_soft_state(cc_state,unit); /* cc->a_reg = 0; return 0; */ /*** temporary ***/ /* return klexe(cc, cc->klist1[0].name); E.Inoue */ strcpy(cc->klist1[0].name, klname); return klexe(unit, klname); } : klexe(int unit, char *name) /* End */ { /* E.Inoue */ struct cc_device *cc; /* End */ /* register dev_t dev = cc->dev; E.Inoue */ register dev_t dev; /* register struct uio *uio = cc->uio; E.Inoue */ register struct uio *uio; /* register int *retlen = (int *)cc->ptr_udata; E.Inoue */ register int retlen; register int i, status; u_short cma_save; cmn_err(CE_NOTE," klexe: enter cc->ptr_dir = 0x%x", cc->ptr_dir); /* E.Inoue */ cc = ddi_get_soft_state(cc_state,unit); /* ====== check dev = cc->dev; uio = cc->uio; ====== end check */ /* retlen = (int *)cc->ptr_udata; */ /* ====== check cc->retlen = 0; ====== end check */ /* end */ /* ====== check cmn_err(CE_NOTE," klexe: step0: cc->klist1[0].wc = 0x%x", cc->klist1[0].wc); cmn_err(CE_NOTE," klexe: step0: retlen = 0x%x", retlen); cmn_err(CE_NOTE," klexe: step0: cc->ptr_udata = 0x%x", cc->ptr_udata); cc->klistf = CC_KLIST_YES; ====== end check */ /* same name check */ /* ====== check for (i = 0; i < cc->ptr_dir; i++){ if (strcmp(name, cc->klist1[i].name) == 0){ cmn_err(CE_NOTE," klexe: step1: name = %s", name); cmn_err(CE_NOTE," klexe: step1: cc->klist1[%d].name = %s", i, cc->klist1[i]. name); break; } } if (i >= cc->ptr_dir){ cmn_err(CE_NOTE," klexe: step1: No name: name = %s", name); return CC_STA_KLIST_NONAME; } cmn_err(CE_NOTE," klexe: step2: cc->ptr_dir = 0x%x", cc->ptr_dir); cc->now_cma = cc->klist1[i].cma; cc->now_wc = cc->klist1[i].wc; cmn_err(CE_NOTE," klexe: step3: cc->klist1[%d].cma = 0x%x", i, cc->klist1[i] .cma); cmn_err(CE_NOTE," klexe: step3: cc->klist1[%d].wc = 0x%x", i, cc->klist1[i]. wc); cmn_err(CE_NOTE," klexe: step3: cc->now_cma = 0x%x, %d(dec)", cc->now_cma, c c->now_cma); cmn_err(CE_NOTE," klexe: step3: cc->now_wc = 0x%x", cc->now_wc); ====== end check */ /* first 2words for retlen */ /* E.Inoue uio->uio_iov->iov_base = (caddr_t)cc->ptr_udata; */ /* ====== check uio->uio_iov->iov_base = (caddr_t)(cc->ptr_udata + 2); ====== end check */ /* E.Inoue */ /* ====== check cc->kl_s_wr = 0; if( cc->klist1[i].wc == 0 ){ cma_save = cc->k->cma; if (( cc->k->cmr & 0x0060) == 0x0060){ cc->kl_s_wr = 1; cc->k->cma = cma_save; uio->uio_iov->iov_len = 1 * 2; } } else{ uio->uio_iov->iov_len = cc->klist1[i].wc * 2; } ====== end check */ /* end */ /* uio->uio_iov->iov_len = cc->klist1[i].wc * 2; */ /* uio->uio_iov->iov_len = 1 * 2; */ /* ====== check uio->uio_iovcnt = 1; uio->uio_offset = 0; cmn_err(CE_NOTE," klexe: step4: uio->uio_iov->iov_base = 0x%x", uio->uio_iov ->iov_base); cmn_err(CE_NOTE," klexe: step4: uio->uio_iov->iov_len = 0x%x", uio->uio_iov- >iov_len); cmn_err(CE_NOTE," klexe: step4: uio->uio_segflg = 0x%x", uio->uio_segflg); cmn_err(CE_NOTE," klexe: in: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); ====== end check */ /* Kinetic 2917 list is now READ ONLY. */ /* ====== check cmn_err(CE_NOTE," klexe: before physio()"); ====== end check */ /* E.Inoue */ /* status = physio(cc_strategy, (struct buf *)NULL, dev, B_READ, cc_minphys, uio); */ /* ====== check status = physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); cmn_err(CE_NOTE," klexe: after physio(): status = 0x%x", status); ====== end check */ /* end */ /* ====== check cmn_err(CE_NOTE," klexe: after physio() &cc->retlen = 0x%x, cc->retlen = 0x% x", &cc->retlen, cc->retlen); ====== end check */ /* *retlen = cc->retlen; */ /* ====== check cmn_err(CE_NOTE," klexe: after physio(): cc->now_wc = 0x%x", cc->now_wc); cmn_err(CE_NOTE," klexe: after physio(): cc->k->mtc = 0x%x", cc->k->mtc); ====== end check */ /* cmn_err(CE_NOTE," klexe: after physio(): cc->k->cwc = 0x%x", cc->k->cwc); */ /* E.Inoue */ /* ====== check cc->retlen = cc->now_wc - cc->k->mtc; if(( cc->k->csr & CC_ERR ) == 0){ cc->kl_retl = cc->retlen; } else{ cc->kl_retl = -1; } ====== end check */ /* E.Inoue cc->retlen = 0xffffffff; for test */ /* cc->retlen = -1; */ /* ====== check copyout((caddr_t)&cc->kl_retl, (caddr_t)cc->ptr_udata, sizeof(cc->kl_retl)); ====== end check */ /* end */ /* ====== check cmn_err(CE_NOTE," klexe: out: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); cmn_err(CE_NOTE," klexe: after physio() retlen = 0x%x", retlen); cmn_err(CE_NOTE," klexe: after physio() &cc->retlen = 0x%x, cc->retlen = 0x% x", &cc->retlen, cc->retlen); copyin((caddr_t)uio->uio_iov->iov_base, (caddr_t)cc->data_area, 10*sizeo f(u_short)); cmn_err(CE_NOTE," klexe: after physio(): contents of uio->uio_iov->iov_b ase =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_are a[0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->dat a_area[5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); ====== end check */ return status; } : onl50t[41]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[42]% NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3034da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = NOTICE: klexe: enter cc->ptr_dir = 0x0 ok. klexe()をコールできた。 klexe()ルーチンを修正。 : klexe(int unit, char *name) { struct cc_device *cc; : cc = ddi_get_soft_state(cc_state,unit); /* ====== check */ dev = cc->dev; uio = cc->uio; /* ====== end check */ /* retlen = (int *)cc->ptr_udata; */ /* ====== check cc->retlen = 0; ====== end check */ : onl50t[42]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... <--- ここでフリーズした。 システムはパニック、リブートしてしまった。 CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3021da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = =0x31 rp=0x3021d728 addr=0x80ed8 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam7: trap type = 0x31 addr=0x80ed8 pid=486, pc=0x60d5f380, sp=0x3021d7b8, tstate=0x4480001e07, context=0x36e g1-g7: 104124c8, b4a6, 60f07138, 7a0, 0, 0, 60bb97a0 Begin traceback... sp = 3021d7b8 Called from 60d5d8e4, fp=3021d820, args=0 3021d887 60f9c0d8 3021d8e4 4 60f1c000 Called from 60d5adbc, fp=3021d898, args=0 60d61824 35 0 0 0 Called from 10088578, fp=3021d970, args=35 3021d9d8 3c11 0 3021da10 60f1c000 Called from 1002ec94, fp=3021da80, args=3 3 9e58 60d27838 60ce8004 9e58 Called from 11b94, fp=effeb380, args=3 22524 3 224e8 effeb3d0 effeb3cc End traceback... panic[cpu0]/thread=0x60bb97a0: trap syncing file systems... [3] 4 done : 参考のために cam6プログラムを実行してみる。 onl50t[42]% cam6 data buf's address = 0xefff52b4 list length = 48 Now execute cam6.obj ... buf's address = 0xefff52b4 data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[43]% NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x3024b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x7b NOTICE: kladd: : in while, code = 0x69 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x65 NOTICE: kladd: : in while, code = 0x65 NOTICE: kladd: : in while, code = 0x66 NOTICE: kladd: : in while, code = 0x7b NOTICE: kladd: : in while, code = 0x7c NOTICE: kladd: : in while, code = 0x7c NOTICE: kladd: : in while, code = 0x73 NOTICE: kladd: : in while, code = 0x73 NOTICE: kladd: : in while, code = 0x74 NOTICE: kladd: : in while, code = 0x74 NOTICE: kladd: : in while, code = 0x77 NOTICE: kladd: : in while, code = 0x78 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x287 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x287 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: cc_write: CC_CMD_EXEKLIST: cc->ptr_udata = 0xefff52b4 NOTICE: cc_write: CC_CMD_EXEKLIST: iov->iov_base = 0xefff52b4 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->klist1[0].wc = 0x287 NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60dca000 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.status = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.ret_length = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.s_reg = 0x0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->iosb.devinfo = 0xa000a0 NOTICE: ccwrite: CC_CMD_EXEKLIST: cc->k->mtc = 0x0 NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3024ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224a0 比較のために cam7プログラムを実行する。 onl50t[42]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 0 0 usp[ 2]=0x 0 0 usp[ 3]=0x 0 0 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[43]% NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x287 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302b1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = NOTICE: klexe: enter cc->ptr_dir = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60df2000 cc_load_timer()ルーチンから klexe()をコールしないでそのままリターン してみる。 : strcpy(cc->klist1[0].name, klname); cmn_err(CE_NOTE," cc_load_timer: cc->klist1[0].name = %s", cc->klist1[0].nam e); /* return klexe(unit, klname); */ return 0; } : onl50t[51]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[52]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x301c9882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301c9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = NOTICE: cc_load_timer: cc->klist1[0] = 0x301c9878 NOTICE: cc_load_timer: klname = NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 cc_load_timer()ルーチンから klexe()をコールした場合には、リストの LOAD命令以降の処理が正しく実行されていない。 また、kladd()ルーチン中で 確認した cc->klist1[0] のアドレスと cc_load_timer()ルーチン中で確認した cc->klist1[0]のアドレスが違っている。 NOTICE: kladd: step1: cc->klist1[0] = 0x301c9882 NOTICE: cc_load_timer: cc->klist1[0] = 0x301c9878 cc.cファイルの修正および実行。 : /* return klexe(unit, klname); */ cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, kln ame)); return 0; : onl50t[44]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[45]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x301df882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301dfa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = NOTICE: cc_load_timer: cc->klist1[0] = 0x301df878 NOTICE: cc_load_timer: klname = NOTICE: cc_load_timer: klexe return value = 0x301df887 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 ok. cc_load_timer()ルーチンから klexe()をコールした場合に、リストの LOAD命令以降の処理が正しく実行されない症状は無くなった。 (5-2). klexe()ルーチン中のコメントアウトしてある部分を少しはずして実行 onl50t[54]% vi cc.c : int cc_load_timer(int unit) { struct cc_device *cc; /* char klname[9]; */ : /* strcpy(klname, cc->klist1[0].name); */ : /* cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, k lname)); */ cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, cc- >klist1[0].name)); return 0; : klexe(int unit, char *name) { struct cc_device *cc; register dev_t dev; register struct uio *uio; register int retlen; register int i, status; u_short cma_save; /* E.Inoue */ cc = ddi_get_soft_state(cc_state,unit); cmn_err(CE_NOTE," klexe: enter unit = 0x%x", unit); cmn_err(CE_NOTE," klexe: enter cc = 0x%x", cc); cmn_err(CE_NOTE," klexe: enter cc->ptr_dir = 0x%x", cc->ptr_dir); dev = cc->dev; uio = cc->uio; /* retlen = (int *)cc->ptr_udata; */ cc->retlen = 0; /* end */ cmn_err(CE_NOTE," klexe: step0: cc->klist1[0].wc = 0x%x", cc->klist1[0].wc); cmn_err(CE_NOTE," klexe: step0: retlen = 0x%x", retlen); cmn_err(CE_NOTE," klexe: step0: cc->ptr_udata = 0x%x", cc->ptr_udata); cc->klistf = CC_KLIST_YES; /* same name check */ for (i = 0; i < cc->ptr_dir; i++){ if (strcmp(name, cc->klist1[i].name) == 0){ cmn_err(CE_NOTE," klexe: step1: name = %s", name); cmn_err(CE_NOTE," klexe: step1: cc->klist1[%d].name = %s", i, cc->klist1[i]. name); break; } } if (i >= cc->ptr_dir){ cmn_err(CE_NOTE," klexe: step1: No name: name = %s", name); return CC_STA_KLIST_NONAME; } cmn_err(CE_NOTE," klexe: step2: cc->ptr_dir = 0x%x", cc->ptr_dir); cc->now_cma = cc->klist1[i].cma; cc->now_wc = cc->klist1[i].wc; cmn_err(CE_NOTE," klexe: step3: cc->klist1[%d].cma = 0x%x", i, cc->klist1[i] .cma); cmn_err(CE_NOTE," klexe: step3: cc->klist1[%d].wc = 0x%x", i, cc->klist1[i]. wc); cmn_err(CE_NOTE," klexe: step3: cc->now_cma = 0x%x, %d(dec)", cc->now_cma, c c->now_cma); cmn_err(CE_NOTE," klexe: step3: cc->now_wc = 0x%x", cc->now_wc); /* first 2words for retlen */ /* E.Inoue uio->uio_iov->iov_base = (caddr_t)cc->ptr_udata; */ uio->uio_iov->iov_base = (caddr_t)(cc->ptr_udata + 2); /* E.Inoue */ cc->kl_s_wr = 0; if( cc->klist1[i].wc == 0 ){ cma_save = cc->k->cma; if (( cc->k->cmr & 0x0060) == 0x0060){ cc->kl_s_wr = 1; cc->k->cma = cma_save; uio->uio_iov->iov_len = 1 * 2; } } else{ uio->uio_iov->iov_len = cc->klist1[i].wc * 2; } /* end */ /* uio->uio_iov->iov_len = cc->klist1[i].wc * 2; */ /* uio->uio_iov->iov_len = 1 * 2; */ uio->uio_iovcnt = 1; uio->uio_offset = 0; cmn_err(CE_NOTE," klexe: step4: uio->uio_iov->iov_base = 0x%x", uio->uio_iov ->iov_base); cmn_err(CE_NOTE," klexe: step4: uio->uio_iov->iov_len = 0x%x", uio->uio_iov- >iov_len); cmn_err(CE_NOTE," klexe: step4: uio->uio_segflg = 0x%x", uio->uio_segflg); cmn_err(CE_NOTE," klexe: in: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); /* Kinetic 2917 list is now READ ONLY. */ cmn_err(CE_NOTE," klexe: before physio()"); /* E.Inoue */ /* status = physio(cc_strategy, (struct buf *)NULL, dev, B_READ, cc_minphys, uio); */ /* ====== check status = physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); cmn_err(CE_NOTE," klexe: after physio(): status = 0x%x", status); ====== end check */ /* end */ cmn_err(CE_NOTE," klexe: after physio() &cc->retlen = 0x%x, cc->retlen = 0x% x", &cc->retlen, cc->retlen); /* *retlen = cc->retlen; */ cmn_err(CE_NOTE," klexe: after physio(): cc->now_wc = 0x%x", cc->now_wc); cmn_err(CE_NOTE," klexe: after physio(): cc->k->mtc = 0x%x", cc->k->mtc); /* cmn_err(CE_NOTE," klexe: after physio(): cc->k->cwc = 0x%x", cc->k->cwc); */ /* E.Inoue */ cc->retlen = cc->now_wc - cc->k->mtc; if(( cc->k->csr & CC_ERR ) == 0){ cc->kl_retl = cc->retlen; } else{ cc->kl_retl = -1; } /* E.Inoue cc->retlen = 0xffffffff; for test */ /* cc->retlen = -1; */ copyout((caddr_t)&cc->kl_retl, (caddr_t)cc->ptr_udata, sizeof(cc->kl_retl)); /* end */ cmn_err(CE_NOTE," klexe: out: 0x%x %d %d %d %d %d", uio->uio_iov->iov_base, uio->uio_iov->iov_len, uio->uio_iovcnt, uio->uio_resid, uio->uio_segflg, uio->uio_offset); cmn_err(CE_NOTE," klexe: after physio() retlen = 0x%x", retlen); cmn_err(CE_NOTE," klexe: after physio() &cc->retlen = 0x%x, cc->retlen = 0x% x", &cc->retlen, cc->retlen); copyin((caddr_t)uio->uio_iov->iov_base, (caddr_t)cc->data_area, 10*sizeo f(u_short)); cmn_err(CE_NOTE," klexe: after physio(): contents of uio->uio_iov->iov_b ase =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_are a[0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->dat a_area[5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); return status; } : onl50t[55]% cc.cファイルをコンパイルおよび再実行。 onl50t[78]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[79]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x301d5882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301d5a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x301d5882 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x1 NOTICE: klexe: step0: retlen = 0x301d58e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x1 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x1 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x2 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 2 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x1 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0xeffeb498 2 1 40536 0 0 NOTICE: klexe: after physio() retlen = 0x301d58e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x1 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x0, 0x0, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x610140d8 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NG. パニック、リブートにはなっていない点は ok. しかし、ユーザバッファ 中のデータ数がおかしい。 cam7プログラムでは、cam7b.obj を実行し、 cam7b.obj の中から cam77a.obj を実行している。 onl50t[79]% vi cam7b.asm : ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; STOP : onl50t[80]% onl50t[80]% vi cam7a.asm : ; READ (0,SW,1) ; STOP : onl50t[81]% 従って、ユーザバッファの中に読み出したデータの数は、 READ (0,SW,1) ; Read SW ----- データ #1 READ (0,SW,1) ; Read SW ----- データ #2 LOAD TIMER ; Execute Klist READ (0,SW,1) READ (0,SW,1) ; Read SW ----- データ #3 READ (0,SW,1) ; Read SW ----- データ #4 の合計 4ワードになるはずである。 cam7b.asm を修正して kineticリスト処理の部分をはずして実行してみる。 onl50t[91]% vi cam7b.asm : ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" ; LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; STOP : onl50t[92]% onl50t[92]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[93]% cam7 list length = 4 list length = 15 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[94]% NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step1: cc->klist1[0] = 0x302e9882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302e9a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 ok. kineticリスト処理の部分をはずしてやると、読み出したデータ数は正しく 4ワード表示された。 <<< 考察 >>> kineticリスト処理の部分をはずしてもはずさなくても、cam7b.asm リスト中の "READ"命令は 4回実行されている。 kineticリスト処理の部分を実行すると ユーザデータ・バッファの書き込みポインタがバッファの先頭部にリセットされ てしまう。 このため、前半部で書き込んだデータの部分に後半部で書き込んだ データが上書きされてしまって、結果としてユーザデータ・バッファにはデータ は後半分の 2回実行したものしか残っていない状態になっている。 この状況を改善する為には、ユーザデータ・バッファの現在の書き込みポインタ を知る必要がある。 : LOAD TIMER ; Execute Klist : onl50t[95]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[96]% onl50t[96]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 0 0 usp[ 0]=0x 0 0 usp[ 1]=0x 0 0 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[97]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x302cd882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x302cd882 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x1 NOTICE: klexe: step0: retlen = 0x302cd8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb494 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x1 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x1 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb498 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x2 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb498 2 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x1 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0xeffeb498 2 1 40536 0 0 NOTICE: klexe: after physio() retlen = 0x302cd8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x1 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x0, 0x0, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x610140d8 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 cc->ptr_udata は KEKリスト処理が stop()を実行するまで一度も flush_buf() されていないために終始おなじアドレスをポイントしている。 kineticリスト 処理を実行する直前に flush_buf()をやってみる。 onl50t[94]% vi cc.c : int cc_load_timer(int unit) { struct cc_device *cc; : flush_buf(unit); : onl50t[95]% onl50t[101]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 0 0 usp[ 4]=0x 0 0 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[102]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x302cd882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x302cda00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x302cd882 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x1 NOTICE: klexe: step0: retlen = 0x302cd8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x1 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x1 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x2 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 2 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x1 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0xeffeb49c 2 1 40536 0 0 NOTICE: klexe: after physio() retlen = 0x302cd8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x1 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x0, 0x0, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x610140d8 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 ok. kineticリスト処理実行前後に、2回ずつの KEKリスト処理の実行が行われ 読み出した結果のデータがユーザバッファに入れられている。 (5-3). klexe()ルーチン中の残りのコメントアウトをはずして実行 現在、klexe()ルーチン中から physio()をコールする部分をコメントアウト している。 これをはずして実行してみる。 onl50t[98]% vi cc.c : klexe(int unit, char *name) { struct cc_device *cc; : status = physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); cmn_err(CE_NOTE," klexe: after physio(): status = 0x%x", status); : onl50t[98]% cc.cファイルをコンパイルおよび実行。 onl50t[102]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0x 50000 327680 usp[ 4]=0x 5 5 usp[ 5]=0x 0 0 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[103]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x3026b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x1 NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3026b882 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x1 NOTICE: klexe: step0: retlen = 0x3026b8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x1 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x1 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x2 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 2 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 2 1 40536 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x0, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x1 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 27 0 40534 0 2 NOTICE: klexe: after physio() retlen = 0x3026b8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x1 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x0, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NG. 読み出したデータ数は、KEKリスト処理が 4個、kineticリスト処理が 1個 の計 5個で合っている。 しかし、kinticリスト処理ではリターンレングスを データの先頭部に書くはずだが。 書いてない。 チェック。 kinticリスト処理で実行している READ命令を 24ビット長にしてみる。 onl50t[103]% vi cam7a.asm : READ.l (0,SW,1) : onl50t[104]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[105]% onl50t[105]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[106]% NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x1 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = test1 NOTICE: kladd: step1: cc->klist1[0] = 0x3025b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3025b882 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x3025b8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40536 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 27 0 40532 0 4 NOTICE: klexe: after physio() retlen = 0x3025b8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 kineticリスト処理を実行した後、flush_buf()をやっていないために、後半に KEKリスト処理で読み出した 2回分のデータに上書きされてしまっている。 kineticリスト処理を実行直後にflush_buf()をやってみる。 onl50t[102]% vi cc.c : int cc_load_timer(int unit) { struct cc_device *cc; : flush_buf(unit); lname)); */ cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, cc- >klist1[0].name)); flush_buf(unit); return 0; : onl50t[103]% onl50t[107]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 50005 327685 usp[ 2]=0x 5 5 usp[ 3]=0x 5 5 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[108]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x3019d882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3019da00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3019d882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x3019d8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40536 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 27 0 40532 0 4 NOTICE: klexe: after physio() retlen = 0x3019d8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb498 kineticリスト処理直前の flush_buf()時には KEKリスト処理で実行した読み 出し結果のデータが cc->data_area に入っているので、flush_buf()の処理は 正しく実行され、cc->ptr_udata の値はインクレメントされる。 しかし、 kineticリスト処理では cc->data_area のバッファを使用しないので、 kineticリスト処理の直後は cc->data_area 空になっているこのため flush_buf ではポインタのインクレメントは行われない。 この不都合を回避するための 一つの方法は、cc_load_timer()ルーチンの中でポインタをインプリメントする やり方が考えられる。 これを試してみる。 onl50t[110]% vi cc.c : int cc_load_timer(int unit) /* struct cc_device *cc; E.Inoue */ { /* E.Inoue */ struct cc_device *cc; : flush_buf(unit); : /* flush_buf(unit); */ cc->ptr_udata += cc->now_wc + 2; : onl50t[111]% onl50t[110]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[111]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x3025b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3025ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3025b882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x3025b8e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40536 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 27 0 40532 0 4 NOTICE: klexe: after physio() retlen = 0x3025b8e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 ok. 正しく実行できた。 (5-4). Klist name を指定できるようにする 現在、Klist name は無条件に cc->klist1[0].name を使用するようにして いる。 これを、cam7b.asmリスト中の命令から指定できるように変更する。 (5-4-1). cam7b.asmファイル、cc.cファイルを修正および実行 cam7b.asmファイルでは、値 1 を "LOAD TIMER" に渡している。 しかし、現在 はこの値は cc.cファイル中では参照しておらず無視している。 ここで、この値 を正しい値 0 にセットして cc.cファイル中で利用するように修正する。 onl50t[131]% vi cam7b.asm : ; MOVE #1,A ; Set Klist name to "test1" MOVE #0,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist : onl50t[132]% onl50t[132]% make cam7 cc cam7.c -o cam7 -I.. -L.. -lcamac ../camasm/camasm cam7a a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7b a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[133]% onl50t[133]% vi cc.c : int cc_load_timer(int unit) { struct cc_device *cc; : /* cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, c c->klist1[0].name)); */ cmn_err(CE_NOTE," cc_load_timer: klexe return value = 0x%x", klexe(unit, cc- >klist1[cc->a_reg].name)); : onl50t[134]% onl50t[121]% cam7 list length = 4 list length = 16 Now execute cam7b.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[122]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x30233882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30233a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x224fc NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x30233882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x302338e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[0].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40536 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40536 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 27 0 40532 0 4 NOTICE: klexe: after physio() retlen = 0x302338e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 ok. cam7b.asm 中の MOVE命令で指定した値をリストの番号の情報に使用する やり方は正常に実行できた。 (5-4-2). 複数の kineticリストの中からの選択 kineticリストをふたつ用意して任意に選択実行できるかテストする。 onl50t[188]% pwd /export/home/onl50t/inoue/CAMAC/Driver/Kit-test/CAMAC-list/FORCE-50T-sol2.6/camlist-kine onl50t[189]% vi cam7aA.asm : ; READ.l (0,SW,1) ; STOP end onl50t[190]% onl50t[190]% vi cam7cA.asm : ; READ (0,SW,1) READ (0,SW,1) ; STOP end onl50t[191]% onl50t[191]% vi cam7bA.asm : ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; MOVE #1,A ; Set Klist name to "test1" MOVE #0,A ; Set Klist name to "test0" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; STOP end : onl50t[192]% onl50t[232]% vi cam7A.c /******************************************************************** * cam7A.c 29-MAR-1992 Y.Takeuchi * * Modified E.Inoue * * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam7aA.obj" #define DEFNAME1 "cam7cA.obj" #define NAME1 "cam7bA.obj" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; int data[D_size]; unsigned short *usp = (unsigned short *)data; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; char filename1[33]; /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); strcpy(filename1, DEFNAME1); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* read camac list 0 */ status = CRLIST(filename, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* install the list 0 to K2917 */ status = CKADD("test0", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } /* read camac list 1 */ status = CRLIST(filename1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* install the list 1 to K2917 */ status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } /* read camac list */ status = CRLIST(NAME1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* Execute */ printf(" Now execute %s ...\n", NAME1); CLEWAI(list, lenlis, data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ CAMCLS(); return 0; } onl50t[233]% onl50t[192]% vi Makefile : OBJ = cam0 cam1 cam1w cam3 cam4 cam5 cam6 cam6a cam7 cam6b cam7A : cam7A : cam7A.c cam7aA.asm cam7bA.asm cam7cA.asm $(CC) $(CFLAGS) cam7A.c -o cam7A $(CLIB) $(CAMASM) cam7aA a $(CAMASM) cam7bA a $(CAMASM) cam7cA a : onl50t[193]% onl50t[195]% make cam7A cc cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[196]% onl50t[127]% cam7A <--- ここでフリーズした。 この時 2917 の LEDは ADDREC, RUN の2つが点灯していた。 ここで、リセットボタンを押したら 以降の処理を続行した。 list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 0 0 usp[ 6]=0x 0 0 usp[ 7]=0x 0 0 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[128]% NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 <--- コンソール上のメッセージはここでフリーズした。 2917 の リセットボタンを押したら以降のメッセージが表示された。 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = test0 NOTICE: kladd: step1: cc->klist1[0] = 0x301f1882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x1 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[1].name = test1 NOTICE: kladd: step1: cc->klist1[1] = 0x301f1882 NOTICE: kladd: step2: cc->k->cma = 0x66, 102(dec) NOTICE: kladd: step3: cc->klist1[1].cma = 0x66, 102(dec) NOTICE: kladd: step3: cc->klist1[1].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x301f1882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x60f94000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x301f18e4 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x301f18e4 NOTICE: klexe: after physio() &cc->retlen = 0x60f9405c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NG. cam7Aプログラムを起動すると直後にフリーズしてしまう。 この時 2917 のリセットボタンを押したら以降の処理を続行した。 チェック。 cam7A.cファイルを一時的に変更して、test1リストの CKADD をやらないで実行 してみる。 onl50t[213]% vi cam7A.c : /* read camac list 1 */ /* status = CRLIST(filename1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } */ /* install the list 1 to K2917 */ /* status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } */ : onl50t[214]% onl50t[150]% cam7A list length = 4 list length = 19 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 50005 327685 usp[ 6]=0x 5 5 usp[ 7]=0x 5 5 data[ 4]=0x 0 0 usp[ 8]=0x 0 0 usp[ 9]=0x 0 0 data[ 5]=0x 0 0 usp[ 10]=0x 0 0 usp[ 11]=0x 0 0 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[151]% CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: ccwrite: cc->klist1[0].wc = 0x0 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = NOTICE: kladd: step1: cc->klist1[0] = 0x30201882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x66, 102(dec) NOTICE: kladd: step4: cc->klist1[1].cma = 0x0, 0(dec) NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x30201a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22524 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x30201882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x0 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x1 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x1 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40542 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40542 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40538 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 実行結果からわかるように、test0リストの CKADDを実行した時、 cc->ptr_cma = 0x66, 102(dec) となっている。 これは、test0リストの HALT命令が入れられている cc->k->cmrアドレスである。 cc->now_cma = 0x64 cc->k->cmr = 0x1 --- アドレス 100 cc->k->cmr = 0x620 --- アドレス 101 cc->k->cmr = 0x80 --- アドレス 102 cc->k->cmr = 0x620 この後、続けて test1リストを CKADDするとアドレス 102から書き込まれるため に test0リストのHALT命令が上書きされてなくなってしまう。 これではまずい ので、対策が必要である。 kl_stop()ルーチンに cc->ptr_cma をインクレメン トする部分を付加する。 onl50t[219]% vi cc.c : kl_stop(int unit) { struct cc_device *cc; cc = ddi_get_soft_state(cc_state,unit); cc->k->cmr = CC_HALT; /* E.Inoue */ cc->ptr_cma += 1; /* end */ return CC_STA_LIST_STOP; } : onl50t[220]% cam7A.cファイル中で先にコメントアウトした部分をはずす。 onl50t[225]% vi cam7A.c : /* read camac list 1 */ status = CRLIST(filename1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* install the list 1 to K2917 */ status = CKADD("test1", list, lenlis); if (status) { printf("Load list error!\n"); exit(status); } : onl50t[226]% cam7bA.asm のコメントアウトしてあった部分をはずす。 onl50t[238]% vi cam7bA.asm : ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; MOVE #1,A ; Set Klist name to "test1" MOVE #0,A ; Set Klist name to "test0" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; STOP end onl50t[239]% onl50t[242]% make cam7A cc cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[243]% onl50t[155]% cam7A list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0xff000005 4278190085 usp[ 4]=0xff00 65280 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 20005 131077 usp[ 8]=0x 2 2 usp[ 9]=0x 5 5 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[156]% NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = test0 NOTICE: kladd: step1: cc->klist1[0] = 0x3026b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x1 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[1].name = test1 NOTICE: kladd: step1: cc->klist1[1] = 0x3026b882 NOTICE: kladd: step2: cc->k->cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x6c, 108(dec) NOTICE: kladd: step4: cc->klist1[2].cma = 0x0, 0(dec) NOTICE: kladd: step4: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x3026b882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->klist1[1].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3026b882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x1 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960e6 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb4a2 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x67 NOTICE: klexe: step3: cc->klist1[1].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x67, 103(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb4a6 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb4a6 4 1 40540 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x610 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x6 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb4a6 4 1 40540 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x3026ba80 268627092 0 40536 0 4 NOTICE: klexe: after physio() retlen = 0x612960e6 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa ok. 正常に実行できた。 実行する kineticリストの順番を逆にしてみる。 onl50t[254]% vi cam7bA.asm : ; NDT (10,SW,0) ; Clear LAM READ (0,SW,1) ; Read SW READ (0,SW,1) ; Read SW ; MOVE #0,A ; Set Klist name to "test0" MOVE #1,A ; Set Klist name to "test1" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; MOVE #1,A ; Set Klist name to "test1" MOVE #0,A ; Set Klist name to "test0" LOAD TIMER ; Execute Klist READ (0,SW,1) ; Read SW ; STOP end : onl50t[256]% onl50t[256]% make cam7A cc cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[257]% onl50t[157]% cam7A list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[158]% NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = test0 NOTICE: kladd: step1: cc->klist1[0] = 0x3020f882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: kladd: step1: cc->ptr_dir = 0x1 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[1].name = test1 NOTICE: kladd: step1: cc->klist1[1] = 0x3020f882 NOTICE: kladd: step2: cc->k->cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x6c, 108(dec) NOTICE: kladd: step4: cc->klist1[2].cma = 0x0, 0(dec) NOTICE: kladd: step4: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[1].wc = 0x2 NOTICE: ccwrite: cc->klist1[1].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x2261c NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[1].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3020f882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x1 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960e6 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x67 NOTICE: klexe: step3: cc->klist1[1].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x67, 103(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x610 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x6 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x612960e6 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x3020f882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb4a2 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb4a6 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb4a6 4 1 40540 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb4a6 4 1 40540 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x3020fa80 268627092 0 40536 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa ok. 正常に実行できた。 (5-4-3). 複数の kineticリストを klsave、klload、klexeする klsave のテストをやるために cam7A.cファイルを修正する。 onl50t[275]% vi cam7A.c : /* save to file */ CKSAVE("cam7aA.klist"); CKSAVE("cam7cA.klist"); /* Close */ CAMCLS(); : onl50t[276]% cam7Aプログラムをコンパイルし直して再実行する。 onl50t[276]% make cam7A cc cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[277]% onl50t[277]% ls -l cam7* -rwxr-xr-x 1 inoue kek 14880 Sep 18 15:30 cam7* -rw-r--r-- 1 inoue kek 2021 Sep 12 13:07 cam7.c -rwxr-xr-x 1 inoue kek 15228 Sep 20 14:19 cam7A* -rw-r--r-- 1 inoue kek 2597 Sep 20 14:17 cam7A.c -rwxr-xr-x 1 inoue kek 15172 Sep 19 16:51 cam7B* -rw-r--r-- 1 inoue kek 2521 Sep 19 16:48 cam7B.c -rw-r--r-- 1 inoue kek 765 Sep 14 13:40 cam7a.asm -rw-r--r-- 1 inoue kek 1662 Sep 18 15:30 cam7a.lis -rw-r--r-- 1 inoue kek 27 Sep 18 15:30 cam7a.obj -rw-r--r-- 1 inoue kek 767 Sep 18 15:54 cam7aA.asm -rw-r--r-- 1 inoue kek 1664 Sep 20 14:19 cam7aA.lis -rw-r--r-- 1 inoue kek 27 Sep 20 14:19 cam7aA.obj -rw-r--r-- 1 inoue kek 1043 Sep 18 15:28 cam7b.asm -rw-r--r-- 1 inoue kek 1882 Sep 18 15:30 cam7b.lis -rw-r--r-- 1 inoue kek 90 Sep 18 15:30 cam7b.obj -rw-r--r-- 1 inoue kek 1238 Sep 20 13:56 cam7bA.asm -rw-r--r-- 1 inoue kek 2164 Sep 20 14:19 cam7bA.lis -rw-r--r-- 1 inoue kek 111 Sep 20 14:19 cam7bA.obj -rw-r--r-- 1 inoue kek 1169 Sep 19 16:50 cam7bB.asm -rw-r--r-- 1 inoue kek 2066 Sep 19 16:51 cam7bB.lis -rw-r--r-- 1 inoue kek 111 Sep 19 16:51 cam7bB.obj -rw-r--r-- 1 inoue kek 788 Sep 18 14:31 cam7c.asm -rw-r--r-- 1 inoue kek 1714 Sep 18 15:22 cam7c.lis -rw-r--r-- 1 inoue kek 48 Sep 18 15:22 cam7c.obj -rw-r--r-- 1 inoue kek 790 Sep 18 15:29 cam7cA.asm -rw-r--r-- 1 inoue kek 1716 Sep 20 14:19 cam7cA.lis -rw-r--r-- 1 inoue kek 48 Sep 20 14:19 cam7cA.obj onl50t[278]% onl50t[158]% cam7A list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[159]% NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = test0 NOTICE: kladd: step1: cc->klist1[0] = 0x3020f882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: kladd: step1: cc->ptr_dir = 0x1 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[1].name = test1 NOTICE: kladd: step1: cc->klist1[1] = 0x3020f882 NOTICE: kladd: step2: cc->k->cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x6c, 108(dec) NOTICE: kladd: step4: cc->klist1[2].cma = 0x0, 0(dec) NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[1].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3020f882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x1 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960e6 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x67 NOTICE: klexe: step3: cc->klist1[1].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x67, 103(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x610 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x6 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x612960e6 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x3020f882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb4a2 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb4a6 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb4a6 4 1 40540 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb4a6 4 1 40540 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x3020fa80 268627092 0 40536 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3020fa00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22654 onl50t[278]% ls -l cam7* -rwxr-xr-x 1 inoue kek 14880 Sep 18 15:30 cam7* -rw-r--r-- 1 inoue kek 2021 Sep 12 13:07 cam7.c -rwxr-xr-x 1 inoue kek 15228 Sep 20 14:19 cam7A* -rw-r--r-- 1 inoue kek 2597 Sep 20 14:17 cam7A.c -rwxr-xr-x 1 inoue kek 15172 Sep 19 16:51 cam7B* -rw-r--r-- 1 inoue kek 2521 Sep 19 16:48 cam7B.c -rw-r--r-- 1 inoue kek 765 Sep 14 13:40 cam7a.asm -rw-r--r-- 1 inoue kek 1662 Sep 18 15:30 cam7a.lis -rw-r--r-- 1 inoue kek 27 Sep 18 15:30 cam7a.obj -rw-r--r-- 1 inoue kek 767 Sep 18 15:54 cam7aA.asm -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7aA.klist -rw-r--r-- 1 inoue kek 1664 Sep 20 14:19 cam7aA.lis -rw-r--r-- 1 inoue kek 27 Sep 20 14:19 cam7aA.obj -rw-r--r-- 1 inoue kek 1043 Sep 18 15:28 cam7b.asm -rw-r--r-- 1 inoue kek 1882 Sep 18 15:30 cam7b.lis -rw-r--r-- 1 inoue kek 90 Sep 18 15:30 cam7b.obj -rw-r--r-- 1 inoue kek 1238 Sep 20 13:56 cam7bA.asm -rw-r--r-- 1 inoue kek 2164 Sep 20 14:19 cam7bA.lis -rw-r--r-- 1 inoue kek 111 Sep 20 14:19 cam7bA.obj -rw-r--r-- 1 inoue kek 1169 Sep 19 16:50 cam7bB.asm -rw-r--r-- 1 inoue kek 2066 Sep 19 16:51 cam7bB.lis -rw-r--r-- 1 inoue kek 111 Sep 19 16:51 cam7bB.obj -rw-r--r-- 1 inoue kek 788 Sep 18 14:31 cam7c.asm -rw-r--r-- 1 inoue kek 1714 Sep 18 15:22 cam7c.lis -rw-r--r-- 1 inoue kek 48 Sep 18 15:22 cam7c.obj -rw-r--r-- 1 inoue kek 790 Sep 18 15:29 cam7cA.asm -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7cA.klist -rw-r--r-- 1 inoue kek 1716 Sep 20 14:19 cam7cA.lis -rw-r--r-- 1 inoue kek 48 Sep 20 14:19 cam7cA.obj onl50t[279]% ls -l cam7*klist -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7aA.klist -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7cA.klist onl50t[280]% onl50t[281]% od -c cam7aA.klist 0000000 \0 026 \0 t \0 e \0 s \0 t \0 0 \0 \0 \0 002 0000020 \0 001 006 \0 200 \0 t \0 e \0 s \0 t \0 1 0000040 \0 \0 \0 002 \0 003 006 \0 003 006 \0 200 0000056 onl50t[282]% onl50t[283]% od -c cam7cA.klist 0000000 \0 026 \0 t \0 e \0 s \0 t \0 0 \0 \0 \0 002 0000020 \0 001 006 \0 200 \0 t \0 e \0 s \0 t \0 1 0000040 \0 \0 \0 002 \0 003 006 \0 003 006 \0 200 0000056 onl50t[284]% ok. cam7aA.klist、cam7cA.klistリストは正常に作られた。 ダンプファイルを見ると、CKADD で 2917の cmr へ入れられた複数のリストが CKSAVE 1回の実行で全てセーブされている。 従って、cam7A.cファイル中では CKSAVE は一度だけやればよい。 cam7A.cファイルを修正する。 onl50t[285]% vi cam7A.c : /* save to file */ CKSAVE("cam7A.klist"); /* Close */ CAMCLS(); : onl50t[286]% onl50t[287]% ls -l cam7*klist -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7aA.klist -rw-r--r-- 1 inoue kek 46 Sep 20 14:20 cam7cA.klist onl50t[288]% rm cam7aA.klist cam7cA.klist onl50t[289]% ls -l cam7*klist No match onl50t[290]% 再度、cam7Aプログラムを実行する。 onl50t[293]% make cam7A cc cam7A.c -o cam7A -I.. -L.. -lcamac ../camasm/camasm cam7aA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7bA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 ../camasm/camasm cam7cA a CAMASM macro assembler V0.1 --- KEK online group --- Modified by Y.T Oct-1991 onl50t[294]% onl50t[160]% cam7A list length = 4 list length = 6 list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[161]% NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: kladd: step1: cc->ptr_dir = 0x0 NOTICE: kladd: step1: name = test0 NOTICE: kladd: step1: cc->klist1[0].name = test0 NOTICE: kladd: step1: cc->klist1[0] = 0x3026b882 NOTICE: kladd: step2: cc->k->cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].cma = 0x64, 100(dec) NOTICE: kladd: step3: cc->klist1[0].wc = 0x0 NOTICE: kladd: : in while, code = 0x62 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: kladd: step1: cc->ptr_dir = 0x1 NOTICE: kladd: step1: name = test1 NOTICE: kladd: step1: cc->klist1[1].name = test1 NOTICE: kladd: step1: cc->klist1[1] = 0x3026b882 NOTICE: kladd: step2: cc->k->cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].cma = 0x67, 103(dec) NOTICE: kladd: step3: cc->klist1[1].wc = 0x0 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x61 NOTICE: kladd: : in while, code = 0x60 NOTICE: kladd: step4: cc->ptr_cma = 0x6c, 108(dec) NOTICE: kladd: step4: cc->klist1[2].cma = 0x0, 0(dec) NOTICE: kladd: step4: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: CC_CMD_ADDKLIST: cc->klist1[0].wc = 0x2 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[1].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x3026b882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x1 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960e6 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x67 NOTICE: klexe: step3: cc->klist1[1].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x67, 103(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x610 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x6 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x612960e6 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x3026b882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb4a2 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb4a6 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb4a6 4 1 40540 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb4a6 4 1 40540 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x3026ba80 268627092 0 40536 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x3026ba00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22638 onl50t[294]% ls -l cam7*klist -rw-r--r-- 1 inoue kek 46 Sep 20 14:43 cam7A.klist onl50t[295]% onl50t[295]% od -c cam7A.klist 0000000 \0 026 \0 t \0 e \0 s \0 t \0 0 \0 \0 \0 002 0000020 \0 001 006 \0 200 \0 t \0 e \0 s \0 t \0 1 0000040 \0 \0 \0 002 \0 003 006 \0 003 006 \0 200 0000056 onl50t[296]% onl50t[298]% od -x cam7A.klist 0000000 0016 0074 0065 0073 0074 0030 0000 0002 0000020 0001 0620 0080 0074 0065 0073 0074 0031 0000040 0000 0002 0003 0620 0003 0620 0080 0000056 onl50t[299]% ok. 正常に実行できた。 klload のテストをやるために cam7B.cファイルを用意する。 onl50t[312]% vi cam7B.c /******************************************************************** * cam7B.c 29-MAR-1992 Y.Takeuchi * * Modified 20-Sep-2000 E.Inoue * * * * K2917 list processing test program * ********************************************************************/ #include #include #include "camlib.h" #define D_size 20240 #define L_size 1024 #define DEFNAME "cam7A.klist" #define NAME1 "cam7bA.obj" main(argc, argv) int argc; char *argv[]; { unsigned short list[L_size]; int data[D_size]; unsigned short *usp = (unsigned short *)data; struct cc_iosb iosb; register int status; int i, lenlis; char filename[33]; /* read options */ strcpy(filename, (argc > 1) ? argv[1] : DEFNAME); /* Initialize data buffer */ for(i = 0; i < D_size; i++) usp[i] = 0; /* Open */ if (CAMOPN()) { printf("Open error!\n"); exit(1); } CGENC(); CGENZ(); CREMI(); CKINIT(); /* load klist */ CKLOAD(filename); /* read camac list */ status = CRLIST(NAME1, list, L_size, &lenlis, &i); printf(" list length = %d\n", lenlis); if (status) { printf("Read list error!\n"); exit(status); } /* Execute */ printf(" Now execute %s ...\n", NAME1); CLEWAI(list, lenlis, data, D_size, &iosb); printf("\n"); /* Dump buffer */ for(i = 0; i < 10; i++) printf("data[%3d]=0x%8x %10u usp[%3d]=0x%4x %5d usp[%3d]=0x%4x %5d\n", i, data[i], data[i], i*2, usp[i*2], usp[i*2], i*2+1, usp[i*2+1], usp[i*2+1]); printf("\n"); /* Close */ CAMCLS(); return 0; } onl50t[313]% onl50t[320]% vi Makefile : OBJ = cam0 cam1 cam1w cam3 cam4 cam5 cam6 cam6a cam7 cam6b cam7A cam7B : cam7B : cam7B.c $(CC) $(CFLAGS) cam7B.c -o cam7B $(CLIB) : onl50t[321]% onl50t[328]% make cam7B cc cam7B.c -o cam7B -I.. -L.. -lcamac onl50t[329]% onl50t[161]% cam7B list length = 20 Now execute cam7bA.obj ... data[ 0]=0x 50005 327685 usp[ 0]=0x 5 5 usp[ 1]=0x 5 5 data[ 1]=0x 2 2 usp[ 2]=0x 0 0 usp[ 3]=0x 2 2 data[ 2]=0x 50005 327685 usp[ 4]=0x 5 5 usp[ 5]=0x 5 5 data[ 3]=0x 50000 327680 usp[ 6]=0x 5 5 usp[ 7]=0x 0 0 data[ 4]=0x 2ff00 196352 usp[ 8]=0x 2 2 usp[ 9]=0xff00 65280 data[ 5]=0x 50005 327685 usp[ 10]=0x 5 5 usp[ 11]=0x 5 5 data[ 6]=0x 0 0 usp[ 12]=0x 0 0 usp[ 13]=0x 0 0 data[ 7]=0x 0 0 usp[ 14]=0x 0 0 usp[ 15]=0x 0 0 data[ 8]=0x 0 0 usp[ 16]=0x 0 0 usp[ 17]=0x 0 0 data[ 9]=0x 0 0 usp[ 18]=0x 0 0 usp[ 19]=0x 0 0 onl50t[162]% NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: ccwrite: cc->klist1[0].wc = 0x2 NOTICE: cc_write: 1 copyin: uio->uio_iov = 0x301f1a00 NOTICE: cc_write: 1 copyin: iov->iov_base = 0x22414 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x9 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_move32_a: cc->a_reg = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->klist1[1].name = test1 NOTICE: cc_load_timer: cc->klist1[0] = 0x301f1882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb494 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x1 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960e6 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb498 NOTICE: klexe: step1: name = test1 NOTICE: klexe: step1: cc->klist1[1].name = test1 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[1].cma = 0x67 NOTICE: klexe: step3: cc->klist1[1].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x67, 103(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb49c NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb49c 4 1 40544 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x149c NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x63 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x610 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x6 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x67 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x149c NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb49c 4 1 40544 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0x5, 0x5, 0x0, 0x0, 0x0, 0 x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x60cde994 28 0 40540 0 4 NOTICE: klexe: after physio() retlen = 0x612960e6 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0x5, 0x5, 0x 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb498 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x29 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_move32_a: cc->a_reg = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x35 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->klist1[0].name = test0 NOTICE: cc_load_timer: cc->klist1[0] = 0x301f1882 NOTICE: cc_load_timer: before flush_buf #1: cc->ptr_udata = 0xeffeb4a0 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #1: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: cc->a_reg = 0x0 NOTICE: klexe: enter unit = 0x0 NOTICE: klexe: enter cc = 0x61216000 NOTICE: klexe: enter cc->ptr_dir = 0x2 NOTICE: klexe: step0: cc->klist1[0].wc = 0x2 NOTICE: klexe: step0: retlen = 0x612960d8 NOTICE: klexe: step0: cc->ptr_udata = 0xeffeb4a2 NOTICE: klexe: step1: name = test0 NOTICE: klexe: step1: cc->klist1[0].name = test0 NOTICE: klexe: step2: cc->ptr_dir = 0x2 NOTICE: klexe: step3: cc->klist1[0].cma = 0x64 NOTICE: klexe: step3: cc->klist1[0].wc = 0x2 NOTICE: klexe: step3: cc->now_cma = 0x64, 100(dec) NOTICE: klexe: step3: cc->now_wc = 0x2 NOTICE: klexe: step4: uio->uio_iov->iov_base = 0xeffeb4a6 NOTICE: klexe: step4: uio->uio_iov->iov_len = 0x4 NOTICE: klexe: step4: uio->uio_segflg = 0x0 NOTICE: klexe: in: 0xeffeb4a6 4 1 40540 0 0 NOTICE: klexe: before physio() NOTICE: cc_strategy: enter NOTICE: cc_strategy: cc->naf = 0x3c11 NOTICE: cc_strategy: dma_addr = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x3 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x80 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x1 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cmr = 0x620 NOTICE: cc_strategy: Kinetic list-processing: cc->now_cma = 0x64 NOTICE: cc_strategy: Kinetic list-processing: cc->k->maclo = 0x14a6 NOTICE: cc_strategy: Kinetic list-processing: cc->k->machi = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->amr = 0xffff NOTICE: cc_strategy: Kinetic list-processing: cc->k->mtc = 0x2 NOTICE: cc_strategy: Kinetic list-processing: cc->k->cser = 0x0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->docr = 0xb892 NOTICE: cc_strategy: Kinetic list-processing: cc->k->sccr = 0x480 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: cc_strategy: Kinetic list-processing: cc->k->csr = 0xc0 NOTICE: CC_intr: cc->interrupt = 0xe NOTICE: cc_intr: 0xeffeb4a6 4 1 40540 0 0 NOTICE: cc_intr: contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0 , 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_strategy: exit NOTICE: klexe: after physio(): status = 0x0 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x0 NOTICE: klexe: after physio(): cc->now_wc = 0x2 NOTICE: klexe: after physio(): cc->k->mtc = 0x0 NOTICE: klexe: out: 0x301f1a80 268627092 0 40536 0 4 NOTICE: klexe: after physio() retlen = 0x612960d8 NOTICE: klexe: after physio() &cc->retlen = 0x6121605c, cc->retlen = 0x2 NOTICE: klexe: after physio(): contents of uio->uio_iov->iov_base =0xff00, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 NOTICE: cc_load_timer: klexe return value = 0x0 NOTICE: cc_load_timer: before flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: after flush_buf #2: cc->ptr_udata = 0xeffeb4a2 NOTICE: cc_load_timer: cc->now_wc = 0x2 NOTICE: cc_load_timer: increment cc->ptr_udata: cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x1 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, code = 0x0 NOTICE: cc_write: CC_CMD_LOADDOLIST: in while, cc->ptr_udata = 0xeffeb4aa ok. 正常に実行できた。 これで、KEKリスト処理および kineticリスト処理は全て正常に動作できること を確認できた。 ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル