annotate 14/January/memo/08th.txt @ 51:d8f499590d82

rename 201* to 1*
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Sun, 16 Mar 2014 13:36:04 +0900
parents 2014/January/memo/08th.txt@597d1487d3bc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 Cerium 読み読み
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 kernel/ppe/CpuThreads.h
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 CpuThreads::~CpuThreads() にて cpu_num + io_num 分を send_mail 、 pthread_join 、 delete args[i].scheduler している。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 pthread_join は 指定 Threads が合流するまで動作をブロックし、その後 pthread_create したものを解放する。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 cpu_thread_arg_t をここで削除している。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 CpuThreads::send_mail(int cpuid, int num, memaddr *data) CERIUM_GPU のときと条件が違う。今回は not CERIUM_GPU を見ていく。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 args[cpuid-id_offset].scheduler->mail_write_from_host(*data);
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 args は cpu_thread_arg_t であり、その中に宣言されている scheduler は MainScheduler である。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 scheduler->mail_write_from_host() は fifoDmaManager->mail_write_from_host(data) を返す。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 fifoDmaManager は・・・わからん・・・
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 CpuThreads::has_mail(int cpuid, int count, memaddr *ret) は args[cpuid-id_offset].scheduler->has_mail_from_host() が
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 0 でないときに get_mail する。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 args[cpuid-id_offset].scheduler->has_mail_from_host() (FifoDmaManager::has_mail_from_host() )は
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 mail_queue->count() を返す。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 MainScheduler.h は ManyCore/MainScheduler.h にある。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 CpuThreads::cpu_thread_run(void *args) は SpeTaskManagerImpl を呼び出して、 c_scheduler ( Scheduler 型) に
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 cpuid 、 mincpu 、 maxcpu を格納する。それらを TaskManagerImpl::set_scheduler に 初期設定した c_scheduler を渡す。
597d1487d3bc add 08.txt
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 argt->wait->sem_v() で、準備完了したスレッドができるたんびに、セマフォに 1 加える。