Răsfoiți Sursa

Adjusted diverging version

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8185 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 ani în urmă
părinte
comite
318d289679
1 a modificat fișierele cu 36 adăugiri și 9 ștergeri
  1. 36 9
      source/Linux.I386.Unix.Mod

+ 36 - 9
source/Linux.I386.Unix.Mod

@@ -421,11 +421,12 @@ VAR
 	pthread_cond_wait: PROCEDURE {C} (cond: ADDRESS; mutex: ADDRESS): WORD;
 	pthread_cond_signal: PROCEDURE {C} (cond: ADDRESS): WORD;
 
-	pthread_create: PROCEDURE {C} (newthread: ADDRESS; attr: ADDRESS; start_routine: PROCEDURE {C} (arg: PROCEDURE):ADDRESS; arg:PROCEDURE): WORD;
-	pthread_exit: PROCEDURE {C} (thr: ADDRESS);
+	pthread_create-: PROCEDURE {C} (newthread: ADDRESS; attr: ADDRESS; start_routine: ADDRESS; arg: PROCEDURE): WORD;
+	pthread_exit-: PROCEDURE {C, NORETURN} (thr: ADDRESS);
 	pthread_detach: PROCEDURE {C} (thr: ADDRESS);
 	pthread_kill: PROCEDURE {C} (thr: ADDRESS; sigid: LONGINT): LONGINT;
 	pthread_cancel: PROCEDURE {C} (thr: ADDRESS);
+	pthread_join-: PROCEDURE {C} (thread: Thread_t; return: ADDRESS): WORD;
 	
 	pthread_key_create	: PROCEDURE {C} ( key: ADDRESS; destructor: PROCEDURE {C} ( param: ADDRESS ) ): WORD;
 	pthread_setspecific	: PROCEDURE {C} ( key: Key_t; value: ADDRESS ): WORD;
@@ -435,7 +436,7 @@ VAR
 	pthread_attr_setscope: PROCEDURE {C}(attr: ADDRESS; set: WORD);
 	pthread_attr_setdetachstate: PROCEDURE {C}(attr: ADDRESS; set: WORD);
 	pthread_attr_setstacksize: PROCEDURE {C}(attr: ADDRESS; stackSize: SIZE);
-	pthread_self: PROCEDURE {C} (): Thread_t;
+	pthread_self-: PROCEDURE {C} (): Thread_t;
 
 	sched_get_priority_max: PROCEDURE {C} (policy: LONGINT): LONGINT;
 	sched_get_priority_min: PROCEDURE {C} (policy: LONGINT): LONGINT;
@@ -453,6 +454,18 @@ VAR
 	sigaltstack: PROCEDURE {C} (ss, oss: ADDRESS): LONGINT;
 	pthread_sigmask: PROCEDURE {C}(how: LONGINT; set: ADDRESS; oldset: ADDRESS): LONGINT;
 
+	sem_init-: PROCEDURE {C} (sem: ADDRESS; pshared: WORD; value: WORD): WORD;
+	sem_wait-: PROCEDURE {C} (sem: ADDRESS): WORD;
+	sem_post-: PROCEDURE {C} (sem: ADDRESS): WORD;
+	sem_destroy-: PROCEDURE {C} (sem: ADDRESS): WORD;
+
+	pthread_barrier_init-: PROCEDURE {C} (barrier: ADDRESS; attr: ADDRESS; count: WORD): WORD;
+	pthread_barrier_wait-: PROCEDURE {C} (barrier: ADDRESS): WORD;
+	pthread_barrier_destroy-: PROCEDURE {C} (barrier: ADDRESS): WORD;
+
+	pthread_getaffinity_np-: PROCEDURE {C} (thread: Thread_t; cpusetsize: SIZE; cpuset: ADDRESS): WORD;
+	pthread_setaffinity_np-: PROCEDURE {C} (thread: Thread_t; cpusetsize: SIZE; cpuset: ADDRESS): WORD;
+
 	(*pid: return param for process id. Only set if initialized non-null. path: pointer to string denoting the executable. file_actions: modify which files are open for the new process, if NIL it inherits open files from parent process. attrp: sets process groups, scheduler, signals etc, leave NIL. argv, evp: char** to the arguments and env. variables*)
 	posix_spawnp- 	: PROCEDURE{C}(pid: ADDRESS; path: ADDRESS; file_actions: ADDRESS; attrp: ADDRESS; argv: ADDRESS ; envp: ADDRESS): LONGINT;
 	(*more restrictive than spawnp*)
@@ -476,15 +489,15 @@ VAR
 	utime-		: PROCEDURE {C} ( name: ADDRESS;  tb: ADDRESS ): LONGINT;
 	access-		: PROCEDURE {C} ( name: ADDRESS;  mode: SET ): LONGINT;
 	select-		: PROCEDURE {C} ( width: LONGINT; rd, wr, ex: ADDRESS;  VAR timeout: Timeval ): LONGINT;
-	realpath-		: PROCEDURE {C} ( file_name: ADDRESS; resolved_name: ADDRESS): ADDRESS;
+	realpath-		: PROCEDURE {C} ( file_name: ADDRESS; resolved_name: ADDRESS ): ADDRESS;
 
 	chdir-			: PROCEDURE {C} ( name: ADDRESS ): LONGINT;
 	mkdir-		: PROCEDURE {C} ( name: ADDRESS;  mode: mode_t ): LONGINT;
 	rmdir-			: PROCEDURE {C} ( path: ADDRESS ): LONGINT;
 
 	xstat-			: PROCEDURE {C} ( ver: LONGINT; name: ADDRESS;  VAR buf: Status ): LONGINT;
-	lxstat-			: PROCEDURE {C} ( ver: LONGINT; name: ADDRESS;  VAR buf: Status ): LONGINT;
-	fxstat-			: PROCEDURE {C} ( ver: LONGINT; fd: LONGINT;  VAR buf: Status ): LONGINT;
+	lxstat-		: PROCEDURE {C} ( ver: LONGINT; name: ADDRESS;  VAR buf: Status ): LONGINT;
+	fxstat-		: PROCEDURE {C} ( ver: LONGINT; fd: LONGINT;  VAR buf: Status ): LONGINT;
 
 	getpid-		: PROCEDURE {C} ( ): LONGINT;
 	getuid-		: PROCEDURE {C} ( ): LONGINT;
@@ -497,7 +510,8 @@ VAR
 	alarm-		: PROCEDURE {C} ( ms: LONGINT ): LONGINT;
 	setitimer-		: PROCEDURE {C} ( which: LONGINT;  VAR value, ovalue: Itimerval ): LONGINT;
 	getitimer-		: PROCEDURE {C} ( which: LONGINT;  VAR value: Itimerval ): LONGINT;
-	clock_gettime-	: PROCEDURE{C}	(clk_id: LONGINT; tp: tvPtr): LONGINT;
+	clock_gettime-	: PROCEDURE {C} (clk_id: WORD; tp: ADDRESS): WORD;
+	clock_getres-	: PROCEDURE {C} (clk_id: WORD; res: ADDRESS): WORD;
 
 	gettimeofday-	: PROCEDURE {C} ( VAR tv: Timeval;  VAR tz: Timezone ): LONGINT;
 	mktime-			: PROCEDURE {C} ( VAR tm: Tm ): LONGINT;
@@ -750,7 +764,6 @@ VAR
 		END;
     END ThrKill;
 
-
 	PROCEDURE {C} resume_handler( sig: LONGINT );
 	BEGIN
 	END resume_handler;
@@ -1014,7 +1027,7 @@ VAR
 		RETURN 0;
 	END X11ErrorHandler;
 
-	PROCEDURE X11IOErrorHandler(d: ADDRESS): WORD;
+	PROCEDURE {C} X11IOErrorHandler(d: ADDRESS): WORD;
 	VAR res: WORD;
 	BEGIN
 		TRACE(d);
@@ -1075,6 +1088,7 @@ VAR
 		Dlsym( libp, "pthread_detach", ADDRESSOF(pthread_detach) );
 		Dlsym( libp, "pthread_cancel", ADDRESSOF(pthread_cancel) );
 		Dlsym( libp, "pthread_kill", ADDRESSOF(pthread_kill) );
+		Dlsym( libp, "pthread_join", ADDRESSOF(pthread_join) );
 		
 		Dlsym( libp, "pthread_key_create", ADDRESSOF( pthread_key_create ) );
 		Dlsym( libp, "pthread_getspecific", ADDRESSOF( pthread_getspecific ) );
@@ -1089,6 +1103,18 @@ VAR
 		Dlsym( libp, "pthread_attr_setstacksize", ADDRESSOF(pthread_attr_setstacksize) );
 		Dlsym( libp, "pthread_self", ADDRESSOF(pthread_self) );
 
+		Dlsym( libp, "sem_init", ADDRESSOF(sem_init) );
+		Dlsym( libp, "sem_wait", ADDRESSOF(sem_wait) );
+		Dlsym( libp, "sem_post", ADDRESSOF(sem_post) );
+		Dlsym( libp, "sem_destroy", ADDRESSOF(sem_destroy) );
+
+		Dlsym( libp, "pthread_barrier_init", ADDRESSOF(pthread_barrier_init) );
+		Dlsym( libp, "pthread_barrier_wait", ADDRESSOF(pthread_barrier_wait) );
+		Dlsym( libp, "pthread_barrier_destroy", ADDRESSOF(pthread_barrier_destroy) );
+
+		Dlsym( libp, "pthread_getaffinity_np", ADDRESSOF(pthread_getaffinity_np) );
+		Dlsym( libp, "pthread_setaffinity_np", ADDRESSOF(pthread_setaffinity_np) );
+
 		Dlsym( libc, "posix_spawnp", ADDRESSOF(posix_spawnp) );
 		Dlsym( libc, "posix_spawn", ADDRESSOF(posix_spawn) );
 
@@ -1141,6 +1167,7 @@ VAR
 		Dlsym( libc, "setitimer",	ADDRESSOF( setitimer ) );
 		Dlsym( libc, "getitimer",	ADDRESSOF( getitimer ) );
 		Dlsym( libc, "clock_gettime", ADDRESSOF(clock_gettime) );
+		Dlsym( libc, "clock_getres", ADDRESSOF(clock_getres) );
 
 		Dlsym( libc, "gettimeofday", ADDRESSOF( gettimeofday ) );
 		Dlsym( libc, "mktime",		ADDRESSOF( mktime ) );