Re: VM question related to faults
- From: John Baldwin <jhb@xxxxxxxxxxx>
- Date: Mon, 31 Jul 2006 16:39:24 -0400
On Monday 31 July 2006 14:15, Attilio Rao wrote:
2006/7/30, Divacky Roman <xdivac02@xxxxxxxxxxxxxxxxx>:
On Sun, Jul 30, 2006 at 12:57:32PM +0200, Divacky Roman wrote:
hi,
while working on SoC linuxolator project I am in a need of this:
I need to do some operation on memory like mem1 = mem1 + mem2 etc.
where the mem1/mem2 access can trigger fault. (memory not mapped or something)
to make it clear.. I am trying to access user-space memory from kernel.
This needs to be atomic (its an implementation of linux futexes)
I need to check from kernel if some memory is accessible and then perform an
operation on this memory. All atomically.
hence I need two things - function which checks wheter the memory is accessible
and something which makes it atomic (some mutex/something which prevents other
process to enter VM to unmap/etc. the memory in question)
hope its a bit more clear now
You would use something like:
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/time.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/systm.h>
#include <sys/resource.h>
#include <vm/vm_page.h>
...
int
lock_and_fetch(const void* mem1, const void *mem2)
{
mtx_lock(&vm_page_queue_mtx);
if (fubyte(mem1) == -1 || fubyte(mem2) == -1) {
mtx_unlock(&vm_page_queue_mtx);
return(EINVAL);
}
/* Operations... */
mtx_unlock(&vm_page_queue_mtx);
return(0);
}
It prevents to virtual pages to be passed through queues.
Erm, but if fubyte() had to page the file in from disk you would
have to sleep while holding the vm_page_queue_mtx, and that's not
allowed.
--
John Baldwin
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- References:
- VM question related to faults
- From: Divacky Roman
- Re: VM question related to faults
- From: Divacky Roman
- Re: VM question related to faults
- From: Attilio Rao
- VM question related to faults
- Prev by Date: Re: [PATCH] adding two new options to 'cp'
- Next by Date: Re: [PATCH] adding two new options to 'cp'
- Previous by thread: Re: VM question related to faults
- Next by thread: _getlogin()
- Index(es):
Relevant Pages
|
|