2008-02-28  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* kernel/ppe/BufferManager.cpp: remove_taskQueue_all()
	taskQueue �� create �� free ������ä�̵���ơ�
	queue ��­��ʤ��ʤ� -> extend_pool -> ­��ʤ�(ry
	�äƤΤ򷫤��֤��ƥ���Ū�ʥ������ơ������ե���Ȥ��Ф�
	�ʤ�Ǥ��ʤȻפä��顢task->wait_me ��õ�Ƥʤ��ä���
	task->wait_i �� notify(ry �Ǻ������������ɡ�
	task->wait_me �ϡ�notify(ry ���Ϥ�����ۤä��餫�����ä���
	�äƤ��Ȥǡ�wait_me �����ä�����ؿ�����ޤ����Ȥ���
	������®�٤��������������롣���͡�
	

2008-02-17  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* Todo: Ǻ��Ǥ��
	

	* fix: kernel/ppe/HTask.cpp
	���ޤǡ�manager->create_task ������������������

	- dependency ������
	manager->set_task_depend(master, slave) // slave �� master ���Ԥ�

	- �¹ԥ��塼�ؤ��ɲ�
	manager->spawn_task(master);
	manager->spawn_task(slave);

	�ȡ�manager ��𤷤Ƥ�äƤ��ޤ�����
	�ޤ�����Ǥ⤤��������ɡ��ä� dependency �ν��
	�ɤä����ɤä����ԤĤΤ��äƤΤϡ�API�����������狼��ʤ���
	�����ǡ�Task (HTask �Τ���) �ˡ�����Ĥ��б�����褦��

	void set_depend(HTaskPtr) �� void spawn(void) ���ɲä��ޤ�����

	- Usage
	slave->set_depend(master); // slave �� master ���Ԥ�
	slave->spawn(); // slave �򥭥塼���ɲ�

	��ɤϡ����줾��δؿ�����Ǥϡ���� set_task_depend �Ȥ���
	�Ƥ�Ǥ������ɡ��桼��¦���餹��Ȥ��������狼��䤹���Ȼפ��ޤ���

2008-02-16  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* tag: beta3
	���֥�Хåե���󥰤��ɲä����ޤ��ʤ�Ȥ�ư���Ƥ�󤸤�ʤ����ä�
	�Ȥ����ޤǤǤ��������� Fifo �С������ʤΤǡ�
	�������� Cell ��񤭾夲�ơ�����ˤ�����ư���Ƥ뤫�Τ���ʤ��Ȥ�

	* add: kernel/ppe/DmaBuffer.cpp
	���֥�Хåե�����Ѥ˺�ä�������ɡ�
	���ä����ʤΤǡ�DMA �ϡ����Υ��֥�������(��������Ĥ��ΰ�)�Ǥ���
	�Ԥ��ʤ��褦�ˤ��롣�äƤΤǤɤ��Ǥ��礦���ä��ä������Ȥ��ޤ�����
	����������������֥�Хåե���󥰤��ǥե��Ǥ����Ǥ��礦��
	�Ȥ��������������ʤ���� swap_buffer �Ȥ����ʤ���Ф�k��

	-Usage
	DmaBuffer *buffer = manager->allocate(sizeof(SceneGraphPack));

	���ޤǤȰ㤤��create_task �� in_addr �� out_addr �ˤ�
	DmaBuffer �򤤤�Ƥ����������桼������ʬ�� malloc/new ������Ĥ�
	���顼��Ф��褦�ˤ��Ƥ�(seg fault�����ɤ͡�)
	�����������������ºݤ˻ȤäƤ��ͻҤ� Test/simple_render ��
	viewer.cpp �ǻȤäƤޤ���sgp_buff �� pp_buff �äƤ�Ĥ͡�

	�⤦�������桼����ͥ����API���ꤿ��������

2008-02-11  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* add: Test/simple_render
	chiaki �� DataPack ��Ȥä� Cube ��ɽ���ץ�����ࡣ
	��ñ�� DataPack �� TaskManager �� scheduler (SpeManager) ���Ϥ���
	�������ƥ��ԡ����ơ��򷫤��֤��Ƥ�����ʤ������
	�ޤ�ư���Ƥ뵤������ΤǤ����󤸤�ʤ��Ǥ��礦����


2008-02-10  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* tag: beta1
	���ξ������ȡ��Ǥ��뤳�Ȥ���Ǥ��ʤ����Ȥ�񤯤٤����㤦����

	- task (��) ��� task (��) ���������뤳�ȤϤǤ��ʤ�
	���Τˤϡ������ϤǤ���פ����ɡ����� ��task ��
	��task �˰�¸���Ƥ����̤� task ��̵�뤷��ư���Τ�
	�����Ȥ�����̤ˤʤ�ʤ��ȡ�
	8���� Todo �ˤ�񤤤Ƥ��뤱�ɡ����μ����Ǥ�
	task �� task ���������뤳�Ȥ����ꤷ�Ƥʤ������ʤΤǡ�
	������ spe �ѤˤΤ�������ʤä������Ǥ��ä�
	OS �äƸ����ʤ������Ǥ��뤫�餷�ơ���ľ���Ρ�
	���Ƥδؿ��� task ���褦�Ȥ���Ȥ����ʤ����ǡ�
	������ʬ�������äƤΤϤޤ��Ǥ������������ɡ�������

	- chiaki �� simple_render ��ư���ʤ�
	(�ɵ�) ��褷�ޤ���
	ñ�� read/write buffer �Υ�������­��ʤ��������ä������ۥ�www
	�ޤ�����ΰ٤β��ϻĤ��Ƥ�����

	�ޤ� cvs �� commit ���Ƥʤ����ɡ�chiaki ���񤤤���
	DataPack �б��� simple_render �� TasKManager ���Ȥ߹���Ǥߤ���
	�Ȥ��äƤ⡢OS�äݤ��񤤤��󤸤�ʤ�������
	update_sgp �� create_pp ������ task �����Ƥߤ���
	�Ǥޤ�ư���Ƥ�褦�ʵ��Ϥ��뤱�ɡ���Τ��ä��� malloc �Ϥ� warning ����
	����Ĺ��ư����ͤߤ����ʴ����ˤʤäƤ��ޤäƤ��롣
	TaskManager ����������simple_render ����������
	���� TaskManager��������ʬ�Ǥ� malloc �Ϥ�������Ҵ����ʤ���
	�ޤ������Ǥʤ��ä���Х���õ���褦��̵�������ɤ��ä��㡼�ɤ��������


2008-02-08  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* add: kernel/ppe/SymTable.cpp
	���ޤ� func[] = {add, sum, ...}
	�Ȥ���äƤ��ä���뤤�����ޤ��äƤ��Τ�
	�ä��礤���̤� Symbol Table �ߤ����ʤ�Τ��뤳�Ȥ�

	// ���������ɤ�
	struct sym_table {
	  char *sym;     // ����ܥ�
	  void *address; // ����ܥ뤬�������ɥ쥹
	} sym_table[] = {{"Sum", &Sum} , {"Draw", &draw}};

	int fd = get_fd("Sum");
	void *addr = get_address(fd);

	table �ˤ� "Sum" �� "Draw" �äƤ�����ĤΥ���ܥ뤬��Ͽ����Ƥ��롣
	�㤨�С��桼��(�����ͥ롩)�� "Sum" �äƥ���ܥ�˥���������������硢
	�ޤ��� get_fd �� "Sum" ���Ф��롢file descripter ���֤���
	�桼���ϡ����� fd �˽��ä� get_address ��������뤳�Ȥ�����롣
	TaskManager Ū�ʻȤ����򤹤�ʤ�

	// ���Ϻ���Draw �ؿ���Ȥ�������������������
	int fd = manager->open("Draw");
	manager->create_task(fd, size, in, out, func);
	manager->open �Ǥ� get_fd ��Ʊ���Ȥ����Ǥ���

	�ޤ����ɤ�;�Ϥ��ꤽ���Ǥ���������ư���Ƥ�äƤ��Ȥǡ�


	- ��­
	�ʤ� file descripter ��ɽ����

	OS �κ����Ȥ��ơ� fopen���Ȥ���Ʊ���Ȥ�����Ǥ��뤸��ʤ���


	* Todo: task �� task ����������ݤν���
	���ޤǡ� task ���Ԥ���Ȥϡ��黻�Τߤ�Ԥ��褦��
	ñ��ʼ����˷���Ǥ�����Ƥ���櫓�Ǥ���
	��������OS �ʤ󤫤��ȡ��������椫���̤Υ���������������Ȥ�
	���ꤢ����Ȼפ��롣�Ƥ����Υƥ��ȥץ������Ǥʤä���

	Test/Sum �ˤ���ץ������ǻȤ��륿����

	- init2 // �����̾���Ǥ��ޤʤ�
	  �黻������ͤȤ��Хåե��ν����

	- sum1
	  �����ϰϤ����� (i ���� i+16 �Ȥ�) ������

	- sum2
	  sum1 �ǵ���줿��ʣ�����ϰϤ����¤��ĤˤޤȤ��
	  (ex. ʣ���� sum1 �� 1->16, 17->32, 33->48 �����¤�׻�����
	       sum2 �� ���3�Ĥ����¤�׻�����
	       �פ� 1->48 �����¤�ʬ�䤹��äƤ����ץ�������

	- finish
	  sum2 �ǵ�ޤä��ͤ�ɽ��

	���� Sum �Ȥ����ץ�����ࡢ�Ȥ����� OS �ȸ�������SumOS �͡�
	SumOS �Ϻǽ�� TaskManager (��� kernel) ��ư����
	init ��ư���롣init �Ǥϡ�ͽ�����줿�������Ǥ���
	init2 �� finish ����ĤΥ������� create ������Ͽ���롣
	init2 �� finish �ˤϰ�¸�ط������� (init2 ������ä��� finish)
	init2 ����ǡ�sum1 �� sum2 �Ȥ���������������롣
	sum1 �� sum2 �ˤ��¸�ط��Ϥ��� (sum1 ������ä��� sum2)

	���μ������ȡ�����������λ���ƽ��Ƽ��Υ������عԤ���
	�ޤ����������ʤ�����ɡ��㤨�Ф��Υ����������
	�����˥����������줿��硢���Υ���������λ����ޤǤ�
	�¹Ԥ���ʤ��ʤäƤ��ޤ���
	�Ǥޤ������ϡ�manager->create_task ������٤�
	manager->run �Ȥ����ơ�̵����굯ư���Ƥ�������
	����̵���������äƤ����ȡ�scheduler �����ܤ򤷤Ƥ���
	SpeManager (�����̾���Ѥ��ʤ���) ��2�ٸƤӽФ��Ƥ�����
	�Ĥޤꡢ��������ǥ����������٤ˡ�SpeManager ���֥������Ȥ�
	new ���Ƥ�櫓���������Τ������䡢ư���Ƥ뤱�ɤ͡�

	���ʤߤˡ�Cell version ���� spe ������˼�äƤ��äƤ���뤫��
	����פ��ʤȻפ��Ĥġ��⤷ spe ��1�Ĥ����Ȥ�ʤ�������ä�����̯��

	�פ���ˡ���������ǥ��������������ν�����ͤ��ʤ��Ȥ͡�

2008-02-07  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* memo: �ץ�����ߥ󥰤λ���
	scheduler �Ȥ���task �δ����򤹤���ʬ��
	kernel programing �ΤĤ��ǡ�
	example �Ȥ���task �˳�����Ƥ�������᤿�ꤹ����ʬ��
	user programing �ΤĤ��ǡ�

	���줾���ä������Ǹ���ɬ�פ�����

	* memo: OS �Ȥ������
	OS ��ư��ή��

	- PC ���Ÿ��������
	- BIOS ��Ω���夬�� (OpenFirmWare, EFI, BIOS)
	- ��ư�ǥХ���������å� (ͥ���٤Ȥ�����Ȥ�)
	- ��ư�ǥХ������� Boot loader ��ư
	  + BIOS �ˤ�äơ�ǧ���Ǥ���ե����륷���ƥब�㤦(���ä���)
	  + �ե����륷���ƥ�Τɤ��� Boot Loader �����뤫�ΤäƤ���
	  + grub, grub2, lilo, kboot �ʤɤ�����
	- Boot Loader �� kernel ��ư
	  + �ͥåȥ���֡��Ȥξ�硢TCP/IP ��
	    �ͥåȥ���ǥХ���(�������Ȥ���)�Υɥ饤�Ф���äƤ�ɬ�פ�����
	- kernel �ϡ��ǽ�� scheduler ��ư����
	- scheduler �ν���� (init ��Ƥ֡�)
	- init �Ǥϡ������������ꤵ��Ƥ��륹����ץȤȤ���Ƥ�
	  + linux �Ȥ����� /etc/rc �ˤ����Ĥ� init ���Ƥ�
	- login form ����ư

	��­ ���ä���桼��
	- login ����
	- shell ��Ƥ�
	  + login shell ���ɤ����Τ����
	- �桼�������ꤵ��Ƥ뵯ư������ץȡ���¹�
	- ����ƥ�������

2008-02-06  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>

	* kernel/spe/*.cpp: new �� placement new
	���ߡ�spe kernel �Υ������ϡ��ڤ��ؤ�����
	new/delete �򷫤��֤��Ƥ��ޤ������Ϥ���Ǥ���������ɡ�
	®��Ū�ˤ⡢�������ľ���ʤ��Ȥ����ʤ��Ȼפ��櫓�ǡ�
	�ǡ�ͽ�� allocate ���줿�ΰ�����Ѥ��� placement new ��Ȥ���
	new ���⤽��ʤ���᤯�ʤ�äݤ���
	����Ȥ��ơ�Ϳ����줿���ʬ new/delete �򷫤��֤��ץ������ȡ�
	Ʊ�����ʬ��placement new �����Ȥ���®�٤����

	for (int i = 0; i < num; i++) {

	<   task = new Task;
	<   task->init(i);
	<   task->printID();
	<   delete task;
	---
	>   task = new(buff) Task; // buff = malloc(BUFF_SIZE);
	>   task->init(id);
	>   task->printID(id);
	}

	placement new �Ǥϡ�delete ��ɬ�פ�̵����
	������ǿ����� allocate ���Ƥ�ʤ�ɬ�פ��⤷��ʤ�����
	®����Ӥϰʲ���no_new �� placement new �ǡ�ln_new �� new/delete ��

	% ./a.out 10 // 10 ��
	no_new:         time: 0.012135(msec)
	ln_new:         time: 0.003572(msec)

	% ./a.out 100
	no_new:         time: 0.022453(msec)
	ln_new:         time: 0.018989(msec)

	% ./a.out 1000
	no_new:         time: 0.115277(msec)
	ln_new:         time: 0.136335(msec)

	% ./a.out 10000
	no_new:         time: 1.056156(msec)
	ln_new:         time: 1.322709(msec)

	% ./a.out 100000
	no_new:         time: 10.622221(msec)
	ln_new:         time: 13.362414(msec)

	% ./a.out 1000000
	no_new:         time: 109.436496(msec)
	ln_new:         time: 136.956872(msec)

	10��100 ������餱�Ƥ뤬���ޤ�̵�뤷�褦(��
	�����¿���ʤ�ˤĤ�ơ��ۤ�ξ������� no_new �����äƤ롣
	�ɤ��ʤ�������͡����ʤߤ� printID ��̵������

	% ./a.out 1000000
	no_new:         time: 0.008512(msec)
	ln_new:         time: 27.100296(msec)

	I/O �˺�������᤮���ޤ�����ʤ����������ɤ���