Re: Why system call need to copy the date from the userspace before using it

Hacksaw
2005-04-16T04:51:15Z

Sorry if this bugs anyone, but I'm learning things here.

What I would expect the kernel to do is this:

system_call_data_prep (userdata, size){

if !4G/4G {
for each page from userdata to userdata+size
{
if the page is swapped out, swap it in
if the page is not owned by the user process, return -ENOWAYMAN
otherwise, lock the page
}
return userdata;
}
else { //kernel land and userland are mutually exclusive
copy the data into kernel land
return kernelland_copy_of_userdata;
}
}

(And then the syscall would need to run the opposite function
sys_call_data_unprep to unlock pages.)

Hmm, maybe that interface sucks.

Is it anything close to that?

--
The best is the enemy of the good -- Voltaire
The Good Enough is the enemy of the Great -- Me
http://www.hacksaw.org -- http://www.privatecircus.com -- KB1FVD