Kaynağa Gözat

linux oberon can now request number of configured cores. Tested with linpack matMul

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7108 8c9fc860-2736-0410-a75d-ab315db34111
skoster 8 yıl önce
ebeveyn
işleme
3664e7c123

+ 12 - 1
source/Generic.Linux.I386.Unix.Mod

@@ -424,6 +424,9 @@ VAR
 	ptrace: PROCEDURE {C} (request: WORD; pid: Thread_t; adr, data: ADDRESS): WORD;
 	getcontext-: PROCEDURE {C} (context: ADDRESS): WORD; 
 
+	sysconf: PROCEDURE {C} (name: LONGINT):WORD;	
+	
+	
 	pthread_mutex_init: PROCEDURE {C} (mutex: ADDRESS; mutexattr: ADDRESS): WORD;
 	pthread_mutex_destroy: PROCEDURE {C} (mutex: ADDRESS): WORD;
 	pthread_mutex_lock: PROCEDURE {C} (mutex: ADDRESS): WORD;
@@ -573,7 +576,14 @@ VAR
 	*)
 	
 	TYPE 
+	
+	
+	PROCEDURE getnprocs* (): LONGINT;
+	BEGIN
+		RETURN sysconf(0x54); (*0x53 for number of processors configured, 0x54 for number of processors online *)
+	END getnprocs;
 
+	
 	PROCEDURE MtxInit*(dummy: LONGINT): Mutex_t;
 	VAR 
 		mtx: Mutex_t;
@@ -1125,7 +1135,8 @@ static void sighandler( int sig, siginfo_t *scp, void *ucp ) {
 		
 		Dlsym( libc, "ptrace", ADDRESSOF(ptrace));
 		Dlsym( libc, "getcontext", ADDRESSOF(getcontext));
-
+		Dlsym( libc, "sysconf", ADDRESSOF(sysconf));
+		
 		Dlsym( libc, "pthread_mutex_init", ADDRESSOF(pthread_mutex_init));
 		Dlsym( libc, "pthread_mutex_destroy", ADDRESSOF(pthread_mutex_destroy));
 		Dlsym( libc, "pthread_mutex_lock", ADDRESSOF(pthread_mutex_lock));

+ 3 - 2
source/Generic.Unix.I386.Machine.Mod

@@ -569,9 +569,10 @@ END GetTimer;
 
 	(* function returning the number of processors that are available to Aos *)
 	PROCEDURE NumberOfProcessors*( ): LONGINT;
+		VAR res: LONGINT;
 	BEGIN
-		(*todo: use unix command nproc*)
-		RETURN 1
+		res:=Unix.getnprocs();
+		RETURN res;
 	END NumberOfProcessors;
 
 	(*! non portable code, for native Aos only *)