# HG changeset patch # User Shinji KONO # Date 1274579725 -32400 # Node ID 19c6cdeb23d6c95c0172ac72512305c2c9f65bfc # Parent 4e8fc627ed336258df6b6401fade6fc3a5385e47 too few template-parameter-lists diff -r 4e8fc627ed33 -r 19c6cdeb23d6 TaskManager/kernel/ppe/QueueInfo.h --- a/TaskManager/kernel/ppe/QueueInfo.h Sun May 23 09:43:27 2010 +0900 +++ b/TaskManager/kernel/ppe/QueueInfo.h Sun May 23 10:55:25 2010 +0900 @@ -3,19 +3,21 @@ #include "base.h" -template class Queue { +#if 0 +template class Queue : T { public: - Queue(); + T(); T *waiter; T *next; T *prev; - void init(); + // virual void init(); }; +#endif -template class QueueInfo : public Queue { +template class QueueInfo : public T { public: /* constructor */ @@ -24,32 +26,32 @@ BASE_NEW_DELETE(QueueInfo); /* functions */ - Queue *create(); + T *create(); - void free_(Queue *queue); + void free_(T *queue); - void addFirst(Queue* e); - void addLast(Queue* e); - Queue* getFirst(); - Queue* getLast(); - int remove(Queue* e); - Queue* poll(); - void moveToFirst(Queue* e); // or use(); - Queue* get(int index); - Queue* find(Queue *task); + void addFirst(T* e); + void addLast(T* e); + T* getFirst(); + T* getLast(); + int remove(T* e); + T* poll(); + void moveToFirst(T* e); // or use(); + T* get(int index); + T* find(T *task); int empty(); void freePool() ; // Iterator - Queue* getNext(Queue* q) ; + T* getNext(T* q) ; int length(); private: /* variables */ static QueueInfo queuePool; - Queue* first; - Queue* last; + T* first; + T* last; /* functions */ int extend_pool(int num); @@ -77,8 +79,8 @@ templatevoid QueueInfo::freePool() { - for(Queue * p = queuePool.waiter; p; ) { - Queue * next = p->waiter; + for(T * p = queuePool.waiter; p; ) { + T * next = p->waiter; p->waiter = NULL; free(p); p = next; @@ -88,14 +90,14 @@ templateint QueueInfo::extend_pool(int num) { - Queue * q = (Queue *)malloc(sizeof(Queue)*(num+1)); + T * q = (T *)malloc(sizeof(T)*(num+1)); // First Queue is previous pool q->waiter = this->waiter; this->waiter = q; q++; /* Connect all free queue in the pool */ - Queue * p = q; + T * p = q; for (; num-- > 0; p++) { p->waiter = NULL; queuePool.addLast(p); @@ -109,10 +111,10 @@ * * @param [cmd] タスクコマンド */ -templateQueue * +templateT * QueueInfo::create() { - Queue * q = queuePool.poll(); + T * q = queuePool.poll(); if (! q) { queuePool.extend_pool(64); q = queuePool.poll(); @@ -123,7 +125,7 @@ templatevoid -QueueInfo::free_(Queue * q) +QueueInfo::free_(T * q) { q->waiter = NULL; queuePool.addLast(q); @@ -139,7 +141,7 @@ 最初の1個は特別扱いなので、それの後に追加していく */ templatevoid -QueueInfo::addFirst(Queue* e) +QueueInfo::addFirst(T* e) { e->prev = first; e->next = first->next; @@ -148,7 +150,7 @@ } templatevoid -QueueInfo::addLast(Queue* e) +QueueInfo::addLast(T* e) { #ifdef CHECK if (find(e)) { @@ -163,14 +165,14 @@ last = e; } -templateQueue* +templateT* QueueInfo::getFirst() { if (empty()) return NULL; return first->next; } -templateQueue* +templateT* QueueInfo::getLast() { if (empty()) return NULL; @@ -178,7 +180,7 @@ } templateint -QueueInfo::remove(Queue* e) +QueueInfo::remove(T* e) { #ifdef CHECK if (!find(e)) { @@ -207,10 +209,10 @@ リストの先頭を取得および削除する。リストが空の場合は NULL を返す。 */ -templateQueue* +templateT* QueueInfo::poll() { - Queue* e = first->next; + T* e = first->next; if (e == this) { return NULL; } @@ -219,7 +221,7 @@ } templatevoid -QueueInfo::moveToFirst(Queue* e) +QueueInfo::moveToFirst(T* e) { remove(e); addFirst(e); @@ -230,10 +232,10 @@ 要素数を超えた位置を指定した場合 NULL を返す。 */ -templateQueue* +templateT* QueueInfo::get(int index) { - Queue* e = first->next; + T* e = first->next; for (int i = 0; i < index; i++) { if (e == this) return NULL; e = e->next; @@ -241,10 +243,10 @@ return e; } -templateQueue* -QueueInfo::find(Queue* task) +templateT* +QueueInfo::find(T* task) { - Queue* e = first->next; + T* e = first->next; for(;;) { if (e == this) return NULL; if (e == task) break; @@ -259,8 +261,8 @@ return this->next == this; } -templateQueue* -QueueInfo::getNext(Queue* q) +templateT* +QueueInfo::getNext(T* q) { if (q->next==this) return NULL; return q->next; @@ -271,7 +273,7 @@ { int i = 1; if (empty()) return 0; - Queue* e = first; + T* e = first; while((e = e->next) != this ) i++; return i; } diff -r 4e8fc627ed33 -r 19c6cdeb23d6 TaskManager/kernel/ppe/Threads.h --- a/TaskManager/kernel/ppe/Threads.h Sun May 23 09:43:27 2010 +0900 +++ b/TaskManager/kernel/ppe/Threads.h Sun May 23 10:55:25 2010 +0900 @@ -18,7 +18,6 @@ /* variables */ pthread_t *threads; - thread_arg_t *args; int cpu_num; }; diff -r 4e8fc627ed33 -r 19c6cdeb23d6 example/task_queue/Makefile.def --- a/example/task_queue/Makefile.def Sun May 23 09:43:27 2010 +0900 +++ b/example/task_queue/Makefile.def Sun May 23 10:55:25 2010 +0900 @@ -1,10 +1,10 @@ TARGET = task_queue # include/library path -# ex: macosx +# ex macosx #CERIUM = /Users/gongo/Source/Cerium -# ex: linux/ps3 +# ex linux/ps3 CERIUM = ../../../Cerium CC = g++ diff -r 4e8fc627ed33 -r 19c6cdeb23d6 example/task_queue/Makefile.macosx --- a/example/task_queue/Makefile.macosx Sun May 23 09:43:27 2010 +0900 +++ b/example/task_queue/Makefile.macosx Sun May 23 10:55:25 2010 +0900 @@ -12,7 +12,7 @@ TASK_OBJS = $(TASK_SRCS:.cc=.o) LIBS += -lFifoManager `sdl-config --libs` -CC += -m64 +CC += -m32 .SUFFIXES: .cc .o diff -r 4e8fc627ed33 -r 19c6cdeb23d6 example/task_queue/main.cc --- a/example/task_queue/main.cc Sun May 23 09:43:27 2010 +0900 +++ b/example/task_queue/main.cc Sun May 23 10:55:25 2010 +0900 @@ -11,6 +11,9 @@ extern TaskManager *manager; +extern void queueInfoTest(int count); + + const char *usr_help_str = "Usage: ./hello [-cpu spe_num] [-count N]\n\ -cpu Number of SPE (default 1) \n\ -count Number of task is print \"Hello, World!!\""; @@ -108,6 +111,7 @@ // ppe/task_init.cc task_init(); + queueInfoTest(count); hello_init(manager); return 0;