Fixing synchronization tests.
This commit is contained in:
		| @@ -1,33 +0,0 @@ | ||||
| # Kernel config file using dumbvm. | ||||
| # This should be used until you have your own VM system. | ||||
|  | ||||
| include conf/conf.kern		# get definitions of available options | ||||
|  | ||||
| debug				# Compile with debug info. | ||||
|  | ||||
| # | ||||
| # Device drivers for hardware. | ||||
| # | ||||
| device lamebus0			# System/161 main bus | ||||
| device emu* at lamebus*		# Emulator passthrough filesystem | ||||
| device ltrace* at lamebus*	# trace161 trace control device | ||||
| device ltimer* at lamebus*	# Timer device | ||||
| device lrandom* at lamebus*	# Random device | ||||
| device lhd* at lamebus*		# Disk device | ||||
| device lser* at lamebus*	# Serial port | ||||
| #device lscreen* at lamebus*	# Text screen (not supported yet) | ||||
| #device lnet* at lamebus*	# Network interface (not supported yet) | ||||
| device beep0 at ltimer*		# Abstract beep handler device | ||||
| device con0 at lser*		# Abstract console on serial port | ||||
| #device con0 at lscreen*	# Abstract console on screen (not supported) | ||||
| device rtclock0 at ltimer*	# Abstract realtime clock | ||||
| device random0 at lrandom*	# Abstract randomness device | ||||
|  | ||||
| #options net			# Network stack (not supported) | ||||
| options semfs			# Semaphores for userland | ||||
|  | ||||
| options sfs			# Always use the file system | ||||
| #options netfs			# You might write this as a project. | ||||
|  | ||||
| options dumbvm			# Chewing gum and baling wire. | ||||
| #options synchprobs # Uncomment to enable ASST1 synchronization problems | ||||
| @@ -19,9 +19,9 @@ void matchmaker(void); | ||||
|  * stoplight.c. | ||||
|  */ | ||||
|  | ||||
| void gostraight(unsigned long); | ||||
| void turnleft(unsigned long); | ||||
| void turnright(unsigned long); | ||||
| void gostraight(uint32_t); | ||||
| void turnleft(uint32_t); | ||||
| void turnright(uint32_t); | ||||
| void stoplight_init(void); | ||||
| void stoplight_cleanup(void); | ||||
|  | ||||
|   | ||||
| @@ -85,7 +85,7 @@ void stoplight_cleanup() { | ||||
| } | ||||
|  | ||||
| void | ||||
| turnright(unsigned long direction) | ||||
| turnright(uint32_t direction) | ||||
| { | ||||
| 	(void)direction; | ||||
| 	/* | ||||
| @@ -94,7 +94,7 @@ turnright(unsigned long direction) | ||||
| 	return; | ||||
| } | ||||
| void | ||||
| gostraight(unsigned long direction) | ||||
| gostraight(uint32_t direction) | ||||
| { | ||||
| 	(void)direction; | ||||
| 	/* | ||||
| @@ -103,7 +103,7 @@ gostraight(unsigned long direction) | ||||
| 	return; | ||||
| } | ||||
| void | ||||
| turnleft(unsigned long direction) | ||||
| turnleft(uint32_t direction) | ||||
| { | ||||
| 	(void)direction; | ||||
| 	/* | ||||
|   | ||||
| @@ -20,15 +20,22 @@ | ||||
|  * Shared initialization routines | ||||
|  */ | ||||
|  | ||||
| static struct semaphore *testsem; | ||||
| static struct semaphore *startsem; | ||||
| static struct semaphore *endsem; | ||||
|  | ||||
| static | ||||
| void | ||||
| inititems(void) | ||||
| { | ||||
| 	if (testsem==NULL) { | ||||
| 		testsem = sem_create("testsem", 0); | ||||
| 		if (testsem == NULL) { | ||||
| 	if (startsem==NULL) { | ||||
| 		startsem = sem_create("startsem", 0); | ||||
| 		if (startsem == NULL) { | ||||
| 			panic("synchprobs: sem_create failed\n"); | ||||
| 		} | ||||
| 	} | ||||
| 	if (endsem==NULL) { | ||||
| 		endsem = sem_create("endsem", 0); | ||||
| 		if (endsem == NULL) { | ||||
| 			panic("synchprobs: sem_create failed\n"); | ||||
| 		} | ||||
| 	} | ||||
| @@ -45,9 +52,9 @@ male_wrapper(void * unused1, unsigned long unused2) { | ||||
| 	(void)unused2; | ||||
|  | ||||
| 	random_yielder(4); | ||||
| 	P(testsem);	 | ||||
| 	P(startsem);	 | ||||
| 	male(); | ||||
| 	V(testsem); | ||||
| 	V(endsem); | ||||
|  | ||||
| 	return; | ||||
| } | ||||
| @@ -69,9 +76,9 @@ female_wrapper(void * unused1, unsigned long unused2) { | ||||
| 	(void)unused2; | ||||
|  | ||||
| 	random_yielder(4); | ||||
| 	P(testsem);	 | ||||
| 	P(startsem);	 | ||||
| 	female(); | ||||
| 	V(testsem); | ||||
| 	V(endsem); | ||||
|  | ||||
| 	return; | ||||
| } | ||||
| @@ -93,9 +100,9 @@ matchmaker_wrapper(void * unused1, unsigned long unused2) { | ||||
| 	(void)unused2; | ||||
| 	 | ||||
| 	random_yielder(4); | ||||
| 	P(testsem);	 | ||||
| 	P(startsem);	 | ||||
| 	matchmaker(); | ||||
| 	V(testsem); | ||||
| 	V(endsem); | ||||
| 	 | ||||
| 	return; | ||||
| } | ||||
| @@ -147,13 +154,13 @@ whalemating(int nargs, char **args) { | ||||
| 	 | ||||
| 	for (i = 0; i < 3; i++) { | ||||
| 		for (j = 0; j < NMATING; j++) { | ||||
| 			V(testsem); | ||||
| 			V(startsem); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	for (i = 0; i < 3; i++) { | ||||
| 		for (j = 0; j < NMATING; j++) { | ||||
| 			P(testsem); | ||||
| 			P(endsem); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -173,9 +180,9 @@ turnright_wrapper(void *unused, unsigned long direction) | ||||
| 	(void)unused; | ||||
| 	 | ||||
| 	random_yielder(4); | ||||
| 	P(testsem); | ||||
| 	turnright(direction);	 | ||||
| 	V(testsem); | ||||
| 	P(startsem); | ||||
| 	turnright((uint32_t)direction);	 | ||||
| 	V(endsem); | ||||
|  | ||||
| 	return; | ||||
| } | ||||
| @@ -186,9 +193,9 @@ gostraight_wrapper(void *unused, unsigned long direction) | ||||
| 	(void)unused; | ||||
| 	 | ||||
| 	random_yielder(4); | ||||
| 	P(testsem); | ||||
| 	gostraight(direction);	 | ||||
| 	V(testsem); | ||||
| 	P(startsem); | ||||
| 	gostraight((uint32_t)direction);	 | ||||
| 	V(endsem); | ||||
|  | ||||
| 	return; | ||||
| } | ||||
| @@ -199,9 +206,9 @@ turnleft_wrapper(void *unused, unsigned long direction) | ||||
| 	(void)unused; | ||||
| 	 | ||||
| 	random_yielder(4); | ||||
| 	P(testsem); | ||||
| 	turnleft(direction);	 | ||||
| 	V(testsem); | ||||
| 	P(startsem); | ||||
| 	turnleft((uint32_t)direction); | ||||
| 	V(endsem); | ||||
|  | ||||
| 	return; | ||||
| } | ||||
| @@ -255,11 +262,11 @@ int stoplight(int nargs, char **args) { | ||||
| 	} | ||||
| 	 | ||||
| 	for (i = 0; i < NCARS; i++) { | ||||
| 		V(testsem); | ||||
| 		V(startsem); | ||||
| 	} | ||||
|  | ||||
| 	for (i = 0; i < NCARS; i++) { | ||||
| 		P(testsem); | ||||
| 		P(endsem); | ||||
| 	} | ||||
|  | ||||
| 	stoplight_cleanup(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user