ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
11月 15 (木曜日) 2007
18:31
チェックや整形がメンドイ!関数化!
 
ファイル名のチェックや整形が面倒くさくてしょうがない!

file.c内に関数として登録じゃ!
 
name: @Guest  Comment:
15:32
fopenとは?
 
いろいろと調べて見ると、よくあるパターンとして、fopenは構造体を返すようだね。

その構造体がFILEHANDLE。(これ自体は既にはりぼてに存在してる)



そしてその構造体を引数として与えることで、freadやfgetが動くと。

で、この構造体内には各種ファイルの情報が入っている。その中で注目すべきが

fpointというもの。つまり、現在、そのファイルはどこを読んでいるのか?という値ね。



それではさっそくそういうふうにできるようにしてみよう。

とりあえずはFILEHANDLE2なんて構造体でいろいろ実験開始。
 
name: @Guest  Comment:
Referer  (1)
14:39
そっとしておいてくれ。明日につながる今日くらい
 
いけたかなぁ??? ♪

FD_TaskのFIFOにコマンドを送信したあと、こんなことしてみた。



for (;;)

{

if (fifo32_status(&task->fifo) == 0)

{

task_sleep(task);/* FIFOが空なので寝て待つ */

}

else

{ //なんかFIFOに来たぞ!!

i = fifo32_get(&task->fifo);

if ( i == 999 )

{

reg[7] = -1;

return 0;

}

}

}





これでたぶんいいんじゃないかと・・・

(いまのところ目的通りに動いている感じ。

あとはこの「FIFOに返信される数値」を決めて、エラー分岐とかに発展させていけばいいかもと。



リビジョン85
 
name: @Guest  Comment:
10:31
タスク寝かせ
 
動作しているタスクを強制的に停止させる。ええと・・・これはHLTかな?

あ”ちがった・・・ HLTってのは「CPUそのもの」を止めちゃう命令。あるタスクが止まったって別のタスクは動いている。そのためにはCPUは動いてなくちゃいけないもんね。



そうすると・・・・

これかな??。

P333のあたり。

複数のタスクが平行して動いているように見えるけどそうじゃない。

タスクは高速に切り替えが行われているのでそう見えるだけ。



(Task_a → Task_b → task_c →再びTask_aへ!)



  ↑

こんな感じの指示表があってその通りに切り替えを行っている



この指示表から抜いてしまう!



(Task_a → → task_c →再びTask_aへ!) Task_b



こうすることで、そのタスクは「停止しているのではなく、動かさせてもらえない」という状態になるわけだよね。



・・・あっれえぇぇぇ?

うまくいかないなぁ。



・・・それはそうと、少し上のほう。キー入力APIの辺りではループによって待ちをかけているぞ?

あれー? こういうパターンって、だめだったんじゃないっけ?

(以前うっちゃんに言われて試した)



ちょっと視点を変えてもう一度試してみる・・・
 
name: @Guest  Comment:
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.