Sfoglia il codice sorgente

Added posix_spawnp syscall

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7023 8c9fc860-2736-0410-a75d-ab315db34111
skoster 8 anni fa
parent
commit
aa0b0c9767
1 ha cambiato i file con 10 aggiunte e 0 eliminazioni
  1. 10 0
      source/Generic.Linux.I386.Unix.Mod

+ 10 - 0
source/Generic.Linux.I386.Unix.Mod

@@ -465,6 +465,8 @@ VAR
 	sigaltstack: PROCEDURE {C} (ss, oss: ADDRESS): LONGINT; 
 	pthread_sigmask: PROCEDURE {C}(how: LONGINT; set: ADDRESS; oldset: ADDRESS): LONGINT;
 	
+	posix_spawnp- : PROCEDURE{C}(pid: ADDRESS; path: ADDRESS; file_actions: ADDRESS; attrp: ADDRESS; argv: ADDRESS ; envp: ADDRESS): LONGINT;
+	
 	read-			: PROCEDURE {C} ( fd: LONGINT; buf: ADDRESS; n: SIZE ): LONGINT;
 	write-			: PROCEDURE {C} ( fd: LONGINT; buf: ADDRESS; n: SIZE ): LONGINT;
 	open-			: PROCEDURE {C} ( name: ADDRESS;  flags, mode: SET ): LONGINT;
@@ -774,6 +776,7 @@ VAR
     END TraceThread;
     *)
 	
+	
 	PROCEDURE {C} resume_handler(sig: LONGINT);
 	BEGIN
 	END resume_handler;
@@ -1059,6 +1062,11 @@ static void sighandler( int sig, siginfo_t *scp, void *ucp ) {
 	TYPE OberonXIOErrorHandler* = PROCEDURE (disp: ADDRESS): LONGINT;
 	VAR oberonXErrorHandler:OberonXErrorHandler; 
 	VAR oberonXIOErrorHandler: OberonXIOErrorHandler;
+	
+	TYPE pid_t *= LONGINT;
+	TYPE path_t *= ARRAY OF CHAR;
+	TYPE arg_t *= ARRAY OF CHAR;
+	TYPE argv_t *= ARRAY OF arg_t;
 
 	PROCEDURE {C} X11ErrorHandler(d: ADDRESS; err: ADDRESS): WORD;
 	VAR res: LONGINT;
@@ -1138,6 +1146,8 @@ static void sighandler( int sig, siginfo_t *scp, void *ucp ) {
 		Dlsym( libp, "pthread_attr_setstacksize", ADDRESSOF(pthread_attr_setstacksize));
 		Dlsym( libp, "pthread_self", ADDRESSOF(pthread_self));
 		
+		Dlsym( libc, "posix_spawnp", ADDRESSOF(posix_spawnp));
+		
 		Dlsym( libc, "sched_get_priority_max", ADDRESSOF(sched_get_priority_max));
 		Dlsym( libc, "sched_get_priority_min", ADDRESSOF(sched_get_priority_min));
 		Dlsym( libc, "pthread_setschedparam", ADDRESSOF(pthread_setschedparam));