# HG changeset patch # User Yasutaka Higa # Date 1450253789 -32400 # Node ID b15128ab032460f0da9aa07be975dfd233e2c282 # Parent 2874954d97b25a6a607ebfbc41e00bb576c1a7ca Fix dpp2 for cbc using LLVM 3.7 diff -r 2874954d97b2 -r b15128ab0324 .hgignore --- a/.hgignore Wed Dec 16 16:52:16 2015 +0900 +++ b/.hgignore Wed Dec 16 17:16:29 2015 +0900 @@ -5,3 +5,4 @@ *.s dpp +dpp2 diff -r 2874954d97b2 -r b15128ab0324 Makefile --- a/Makefile Wed Dec 16 16:52:16 2015 +0900 +++ b/Makefile Wed Dec 16 17:16:29 2015 +0900 @@ -1,14 +1,13 @@ CC=clang MCC=cbc-clang TARGET=dpp dpp2 tableau tableau2 tableau3 -MCCFLAGS=-S +MCCFLAGS=-S -c CFLAGS=-I. -g -Wall .SUFFIXES: .cbc .c .o .cbc.o: $(MCC) $(MCCFLAGS) $< - $(CC) $(CFLAGS) -o $@ -c $(<:.cbc=.s) all: $(TARGET) @@ -61,20 +60,20 @@ dpp2.o: dpp2.h queue.h dpp.h state_db.h scheduler.h main.o: dpp.h queue.o: queue.h dpp.h state_db.h -scheduler.o: /usr/include/stdio.h /usr/include/features.h -scheduler.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h -scheduler.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h -scheduler.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h -scheduler.o: /usr/include/libio.h /usr/include/_G_config.h -scheduler.o: /usr/include/wchar.h /usr/include/bits/wchar.h -scheduler.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h -scheduler.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h -scheduler.o: /usr/include/sys/types.h /usr/include/time.h -scheduler.o: /usr/include/endian.h /usr/include/bits/endian.h -scheduler.o: /usr/include/sys/select.h /usr/include/bits/select.h -scheduler.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -scheduler.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h -scheduler.o: /usr/include/alloca.h dpp2.h queue.h dpp.h state_db.h +#scheduler.o: /usr/include/stdio.h /usr/include/features.h +#scheduler.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +#scheduler.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h +#scheduler.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +#scheduler.o: /usr/include/libio.h /usr/include/_G_config.h +#scheduler.o: /usr/include/wchar.h /usr/include/bits/wchar.h +#scheduler.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h +#scheduler.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h +#scheduler.o: /usr/include/sys/types.h /usr/include/time.h +#scheduler.o: /usr/include/endian.h /usr/include/bits/endian.h +#scheduler.o: /usr/include/sys/select.h /usr/include/bits/select.h +#scheduler.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +#scheduler.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +#scheduler.o: /usr/include/alloca.h dpp2.h queue.h dpp.h state_db.h tableau.o: /usr/include/stdlib.h /usr/include/features.h tableau.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h tableau.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h @@ -85,19 +84,19 @@ tableau.o: /usr/include/bits/sigset.h /usr/include/bits/time.h tableau.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h tableau.o: /usr/include/alloca.h dpp2.h queue.h dpp.h state_db.h memory.h -memory.o: /usr/include/stdio.h /usr/include/features.h -memory.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h -memory.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h -memory.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h -memory.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h -memory.o: /usr/include/bits/wchar.h /usr/include/gconv.h -memory.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h -memory.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h -memory.o: /usr/include/endian.h /usr/include/bits/endian.h -memory.o: /usr/include/sys/select.h /usr/include/bits/select.h -memory.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -memory.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h -memory.o: /usr/include/alloca.h memory.h crc32.h /usr/include/string.h +#memory.o: /usr/include/stdio.h /usr/include/features.h +#memory.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +#memory.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h +#memory.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +#memory.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +#memory.o: /usr/include/bits/wchar.h /usr/include/gconv.h +#memory.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +#memory.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h +#memory.o: /usr/include/endian.h /usr/include/bits/endian.h +#memory.o: /usr/include/sys/select.h /usr/include/bits/select.h +#memory.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +#memory.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +#memory.o: /usr/include/alloca.h memory.h crc32.h /usr/include/string.h queue.o: dpp.h state_db.h state_db.o: /usr/include/stdlib.h /usr/include/features.h state_db.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h diff -r 2874954d97b2 -r b15128ab0324 dpp2.cbc --- a/dpp2.cbc Wed Dec 16 16:52:16 2015 +0900 +++ b/dpp2.cbc Wed Dec 16 17:16:29 2015 +0900 @@ -7,7 +7,7 @@ #include "queue.h" #include "scheduler.h" -code putdown_lfork(PhilsPtr self, TaskPtr current_task) +__code putdown_lfork(PhilsPtr self, TaskPtr current_task) { //printf("%d: putdown_lfork:%d\n", self->id, self->left_fork->id); self->left_fork->owner = NULL; @@ -15,7 +15,7 @@ goto scheduler(self, current_task); } -code putdown_rfork(PhilsPtr self, TaskPtr current_task) +__code putdown_rfork(PhilsPtr self, TaskPtr current_task) { //printf("%d: putdown_rfork:%d\n", self->id, self->right_fork->id); self->right_fork->owner = NULL; @@ -23,7 +23,7 @@ goto scheduler(self, current_task); } -code eating(PhilsPtr self, TaskPtr current_task) +__code eating(PhilsPtr self, TaskPtr current_task) { //printf("%d: eating\n", self->id); self->next = putdown_rfork; @@ -31,7 +31,7 @@ } /* waiting for right fork */ -code hungry2(PhilsPtr self, TaskPtr current_task) +__code hungry2(PhilsPtr self, TaskPtr current_task) { //printf("%d: hungry2\n", self->id); self->next = pickup_rfork; @@ -39,14 +39,14 @@ } /* waiting for left fork */ -code hungry1(PhilsPtr self, TaskPtr current_task) +__code hungry1(PhilsPtr self, TaskPtr current_task) { //printf("%d: hungry1\n", self->id); self->next = pickup_lfork; goto scheduler(self, current_task); } -code pickup_rfork(PhilsPtr self, TaskPtr current_task) +__code pickup_rfork(PhilsPtr self, TaskPtr current_task) { if (self->right_fork->owner == NULL) { //printf("%d: pickup_rfork:%d\n", self->id, self->right_fork->id); @@ -59,7 +59,7 @@ } } -code pickup_lfork(PhilsPtr self, TaskPtr current_task) +__code pickup_lfork(PhilsPtr self, TaskPtr current_task) { if (self->left_fork->owner == NULL) { //printf("%d: pickup_lfork:%d\n", self->id, self->left_fork->id); @@ -72,7 +72,7 @@ } } -code thinking(PhilsPtr self, TaskPtr current_task) +__code thinking(PhilsPtr self, TaskPtr current_task) { //printf("%d: thinking\n", self->id); self->next = hungry1; diff -r 2874954d97b2 -r b15128ab0324 dpp2.h --- a/dpp2.h Wed Dec 16 16:52:16 2015 +0900 +++ b/dpp2.h Wed Dec 16 17:16:29 2015 +0900 @@ -3,14 +3,18 @@ #define NULL (0) #include "dpp_common.h" +#include "queue.h" -extern code putdown_lfork(PhilsPtr self, struct task * current_task); -extern code putdown_rfork(PhilsPtr self, struct task * current_task); -extern code eating(PhilsPtr self, struct task * current_task); -extern code hungry2(PhilsPtr self, struct task * current_task); -extern code hungry1(PhilsPtr self, struct task * current_task); -extern code pickup_rfork(PhilsPtr self, struct task * current_task); -extern code pickup_lfork(PhilsPtr self, struct task * current_task); -extern code thinking(PhilsPtr self, struct task * current_task); + +extern __code putdown_lfork(PhilsPtr self, TaskPtr current_task); +extern __code putdown_rfork(PhilsPtr self, TaskPtr current_task); +extern __code eating(PhilsPtr self, TaskPtr current_task); +extern __code hungry2(PhilsPtr self, TaskPtr current_task); +extern __code hungry1(PhilsPtr self, TaskPtr current_task); +extern __code pickup_rfork(PhilsPtr self, TaskPtr current_task); +extern __code pickup_lfork(PhilsPtr self, TaskPtr current_task); +extern __code thinking(PhilsPtr self, TaskPtr current_task); +extern __code die(char *err); +extern __code init_fork2(PhilsPtr self, int count, int id); #endif diff -r 2874954d97b2 -r b15128ab0324 dpp3.h --- a/dpp3.h Wed Dec 16 16:52:16 2015 +0900 +++ b/dpp3.h Wed Dec 16 17:16:29 2015 +0900 @@ -3,10 +3,12 @@ #define NULL (0) #include "dpp_common.h" +#include "queue.h" +#include "scheduler.h" extern __code putdown_lfork(PhilsPtr self, struct task * current_task); extern __code putdown_rfork(PhilsPtr self, struct task * current_task); -extern __code pickup_rfork(PhilsPtr self, struct task * current_task); -extern __code pickup_lfork(PhilsPtr self, struct task * current_task); +extern __code pickup_rfork(PhilsPtr self, TaskPtr current_task); +extern __code pickup_lfork(PhilsPtr self, TaskPtr current_task); #endif diff -r 2874954d97b2 -r b15128ab0324 dpp_common.h --- a/dpp_common.h Wed Dec 16 16:52:16 2015 +0900 +++ b/dpp_common.h Wed Dec 16 17:16:29 2015 +0900 @@ -8,7 +8,7 @@ struct fork *left_fork; struct phils *right; struct phils *left; - code (*next)(struct phils *, struct task *); + __code (*next)(struct phils *, struct task *); } Phils, *PhilsPtr; typedef struct fork { diff -r 2874954d97b2 -r b15128ab0324 main.cbc --- a/main.cbc Wed Dec 16 16:52:16 2015 +0900 +++ b/main.cbc Wed Dec 16 17:16:29 2015 +0900 @@ -2,20 +2,22 @@ ** Dining Philosophers Problem's scheduler */ #include "dpp.h" +__code die(char *err); +__code init_fork2(PhilsPtr self, int count, int id); #define NUM_PHILOSOPHER 5 /* A number of philosophers must be more than 2. */ -code (*ret)(int); +__code (*ret)(int); void *env; PhilsPtr phils_list = NULL; -code run(PhilsPtr self) +__code run(PhilsPtr self) { goto thinking(self); } -code init_final(PhilsPtr self) +__code init_final(PhilsPtr self) { self->right = phils_list; self->right_fork = phils_list->left_fork; @@ -24,7 +26,7 @@ goto run(phils_list); } -code init_phils2(PhilsPtr self, int count, int id) +__code init_phils2(PhilsPtr self, int count, int id) { PhilsPtr tmp_self; @@ -50,7 +52,7 @@ } } -code init_fork2(PhilsPtr self, int count, int id) +__code init_fork2(PhilsPtr self, int count, int id) { ForkPtr tmp_fork; @@ -65,7 +67,7 @@ goto init_phils2(self, count, id); } -code init_phils1(ForkPtr fork, int count, int id) +__code init_phils1(ForkPtr fork, int count, int id) { PhilsPtr self; @@ -87,7 +89,7 @@ goto init_fork2(self, count, id); } -code init_fork1(int count) +__code init_fork1(int count) { ForkPtr fork; int id = 1; @@ -102,16 +104,16 @@ goto init_phils1(fork, count, id); } -code die(char *err) +__code die(char *err) { printf("%s\n", err); - goto ret(1), env; + goto ret(1); } int main(void) { - ret = return; - env = environment; + ret = __return; + env = __environment; goto init_fork1(NUM_PHILOSOPHER); } diff -r 2874954d97b2 -r b15128ab0324 queue.cbc --- a/queue.cbc Wed Dec 16 16:52:16 2015 +0900 +++ b/queue.cbc Wed Dec 16 17:16:29 2015 +0900 @@ -26,8 +26,8 @@ */ #include "queue.h" -code create_queue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, - code (*dest)( +__code create_queue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, + __code (*dest)( int count,PhilsPtr self, TaskPtr list,TaskPtr last, TaskPtr q )) { @@ -46,7 +46,7 @@ free(q); } -code lastSearch(code (*dest)(), TaskPtr list, TaskPtr p, TaskPtr q) +__code lastSearch(__code (*dest)(), TaskPtr list, TaskPtr p, TaskPtr q) { if (p->next) { p = p->next; @@ -57,8 +57,8 @@ } } -code enqueue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q, - code (*dest)( +__code enqueue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q, + __code (*dest)( int count, PhilsPtr self, TaskPtr list, TaskPtr last )) { @@ -66,7 +66,7 @@ goto dest(count,self,q, last); } -code dequeue(code (*dest)(), TaskPtr list) +__code dequeue(__code (*dest)(), TaskPtr list) { TaskPtr p = list; if (p) { diff -r 2874954d97b2 -r b15128ab0324 queue.h --- a/queue.h Wed Dec 16 16:52:16 2015 +0900 +++ b/queue.h Wed Dec 16 17:16:29 2015 +0900 @@ -1,7 +1,7 @@ /* OS Scheduler Simulator -** 連絡先: 琉球大学情報工学科 河野 真治 +** 連絡先: 琉球大学情報工学科 河野 真治 ** (E-Mail Address: kono@ie.u-ryukyu.ac.jp) ** ** このソースのいかなる複写,改変,修正も許諾します。ただし、 @@ -11,10 +11,10 @@ ** バイナリの配布の際にはversion messageを保存することを条件とします。 ** このプログラムについては特に何の保証もしない、悪しからず。 ** -** Everyone is permitted to do anything on this program +** Everyone is permitted to do anything on this program ** including copying, modifying, improving, ** as long as you don't try to pretend that you wrote it. -** i.e., the above copyright notice has to appear in all copies. +** i.e., the above copyright notice has to appear in all copies. ** Binary distribution requires original version messages. ** You don't have to ask before copying, redistribution or publishing. ** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE. @@ -42,7 +42,7 @@ } TaskIterator, *TaskIteratorPtr; extern TaskIteratorPtr -create_task_iterator(TaskPtr list,struct state *s,TaskIteratorPtr prev); +create_task_iterator(TaskPtr list,StateDB s,TaskIteratorPtr prev); extern TaskPtr next_task_iterator(TaskIteratorPtr self); @@ -50,19 +50,19 @@ extern void free_task_iterator(TaskIteratorPtr iter); -extern -code create_queue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, - code (*dest)( +extern +__code create_queue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, + __code (*dest)( int count,PhilsPtr self, TaskPtr list,TaskPtr last, TaskPtr q )); extern -code enqueue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q, - code (*dest)( - int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q, - )); +__code enqueue(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q, + __code (*dest)( + int count, PhilsPtr self, TaskPtr list, TaskPtr last + )); extern void free_queue(TaskPtr q); -extern code dequeue(code (*dest)(), TaskPtr list, TaskPtr *q); +extern __code dequeue(__code (*dest)(), TaskPtr list); #endif diff -r 2874954d97b2 -r b15128ab0324 scheduler.cbc --- a/scheduler.cbc Wed Dec 16 16:52:16 2015 +0900 +++ b/scheduler.cbc Wed Dec 16 17:16:29 2015 +0900 @@ -9,10 +9,10 @@ #define NUM_PHILOSOPHER 5 /* A number of philosophers must be more than 2. */ -code (*ret)(int); +__code (*ret)(int); void *env; -code (*get_next_task)(TaskPtr); +__code (*get_next_task)(TaskPtr); PhilsPtr phils_list = NULL; int id = 1; /* This is a counter variable to detect a process. */ @@ -22,7 +22,7 @@ int list_length(TaskPtr list) { int length; - TaskPtr q; + TaskPtr q; if (!list) return 0; q = list->next; @@ -40,7 +40,7 @@ return list; } -code get_next_task_random(TaskPtr list) +__code get_next_task_random(TaskPtr list) { TaskPtr t = list; TaskPtr e; @@ -52,7 +52,7 @@ goto list->phils->next(list->phils,list); } -code get_next_task_fifo(TaskPtr list) +__code get_next_task_fifo(TaskPtr list) { TaskPtr t = list; TaskPtr e; @@ -63,14 +63,14 @@ goto list->phils->next(list->phils,list); } -code scheduler(PhilsPtr phils, TaskPtr list) +__code scheduler(PhilsPtr phils, TaskPtr list) { goto get_next_task(list); } -code task_entry1(int count, PhilsPtr self, TaskPtr list, TaskPtr last); +__code task_entry1(int count, PhilsPtr self, TaskPtr list, TaskPtr last); -code task_entry2(int count,PhilsPtr self, TaskPtr list,TaskPtr last, TaskPtr q) +__code task_entry2(int count,PhilsPtr self, TaskPtr list,TaskPtr last, TaskPtr q) { if (!q) { goto die("Can't allocate Task\n"); @@ -79,7 +79,7 @@ } } -code task_entry1(int count, PhilsPtr self, TaskPtr list, TaskPtr last) +__code task_entry1(int count, PhilsPtr self, TaskPtr list, TaskPtr last) { printf("int count %d, PhilsPtr self %x, TaskPtr list %x, TaskPtr last %x\n", count, self, list, last); @@ -93,12 +93,12 @@ } } -code task_entry0(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q) +__code task_entry0(int count, PhilsPtr self, TaskPtr list, TaskPtr last, TaskPtr q) { goto task_entry1(count, self, q, q); } -code init_final(PhilsPtr self) +__code init_final(PhilsPtr self) { self->right = phils_list; self->right_fork = phils_list->left_fork; @@ -107,7 +107,7 @@ goto create_queue(1, self, 0, 0, task_entry0); } -code init_phils2(PhilsPtr self, int count, int id) +__code init_phils2(PhilsPtr self, int count, int id) { PhilsPtr tmp_self; @@ -133,7 +133,7 @@ } } -code init_fork2(PhilsPtr self, int count, int id) +__code init_fork2(PhilsPtr self, int count, int id) { ForkPtr tmp_fork; @@ -148,7 +148,7 @@ goto init_phils2(self, count, id); } -code init_phils1(ForkPtr fork, int count, int id) +__code init_phils1(ForkPtr fork, int count, int id) { PhilsPtr self; @@ -170,7 +170,7 @@ goto init_fork2(self, count, id); } -code init_fork1(int count) +__code init_fork1(int count) { ForkPtr fork; int id = 1; @@ -185,16 +185,16 @@ goto init_phils1(fork, count, id); } -code die(char *err) +__code die(char *err) { printf("%s\n", err); - goto ret(1), env; + goto ret(1); } int main(int argc, char **argv) { - ret = return; - env = environment; + ret = __return; + env = __environment; // srand((unsigned)time(NULL)); // srandom((unsigned long)time(NULL)); get_next_task = get_next_task_fifo; diff -r 2874954d97b2 -r b15128ab0324 scheduler.h --- a/scheduler.h Wed Dec 16 16:52:16 2015 +0900 +++ b/scheduler.h Wed Dec 16 17:16:29 2015 +0900 @@ -3,6 +3,6 @@ */ extern struct task * current_task; -code scheduler(PhilsPtr self, TaskPtr task); +__code scheduler(PhilsPtr self, TaskPtr task); /* end */