Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!pt.cs.cmu.edu!spice.cs.cmu.edu!af From: af@spice.cs.cmu.edu (Alessandro Forin) Newsgroups: comp.os.mach Subject: Re: execve in Mach 2.5 Summary: The beauties of merging pears and apples Message-ID: <8252@pt.cs.cmu.edu> Date: 2 Mar 90 15:27:08 GMT References: <77747@tut.cis.ohio-state.edu> Distribution: usa Organization: Carnegie-Mellon University, CS/RI Lines: 29 In article <77747@tut.cis.ohio-state.edu>, philk@tictoc.cis.ohio-state.edu (Phillip E Krueger) writes: > Under Mach 2.5, what task does execve belong to (i.e. what task and > thread are considered current when execve is executed)? The mach task? > The user task whose thread called it? > > Thanks, > -- Phil Mach 2.5 supports Unix in-kernel. This means that the Mach abstractions _and_ the Unix abstractions co-exist, and each one tries very hard not to interfere with the other. The Unix semantics is provided by equating Unix-process == This-thread + Its-task which in the case of execve means: 1) terminate all other threads in the same task of the invoking thread 2) reshape the task's address space as described in the executable image (text+data+implicit-stack) 3) restart this thread at the PC defined in the executable image. Additional clarifications: 1- the relation thread->task never changes once established (at thread creation time) 2- Unix primitives never take Mach entities as parameters sandro-