changeset 2:b15128ab0324

Fix dpp2 for cbc using LLVM 3.7
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Wed, 16 Dec 2015 17:16:29 +0900
parents 2874954d97b2
children 6bf69a0f2e24
files .hgignore Makefile dpp2.cbc dpp2.h dpp3.h dpp_common.h main.cbc queue.cbc queue.h scheduler.cbc scheduler.h
diffstat 11 files changed, 105 insertions(+), 97 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- 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;
--- 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
--- 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
--- 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 {
--- 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);
 }
--- 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) {
--- 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
--- 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;
--- 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 */