Re: Freeing mmapped memory
- From: Raaf <freebsd@xxxxxxxxxxxxxxx>
- Date: Tue, 07 Feb 2006 02:06:37 +0100
John-Mark Gurney wrote:
Raaf wrote this message on Tue, Feb 07, 2006 at 01:42 +0100:
John-Mark Gurney wrote:
Raaf wrote this message on Mon, Feb 06, 2006 at 22:54 +0100:The problem is that it is perfectly legal to access the mapped memory
Hi, i am working on a usb driver that allocates some memory whenwhy not at close time? I would imagine that the device won't be closed
the device is opened using malloc.
Now i want user processes to be able to access this memory using
mmap and i want to free this memory when it is no longer needed.
The problem is that there seems to be no way of knowing for my
driver at what time the memory is no longer mapped in a process
address space so that i can safely free this memory.
until all the mmap's that are backed by the device are unmapped.. it
shouldn't be hard to test... the mapping should hold a reference to
the device until it's munmapped..
after a close, consider following code:
fd = open()
mem = mmap()
close(fd)
process_data(mem)
Unfortunately the mapping doesn't seem to hold a reference to the
related fileobject, so the close in above code actually ends up
in the close function of my driver but the mapping is still there.
and you've tested that the mmap function still gets called after the
close function of your device driver is?
Yes, just tested it with some printf's in the driver.
open
mmap
close
mmap
If this is the case, we need
to fix FreeBSD.. the mmap should increase the ref count on the device,
and the close shouldn't initiate the close until the mapping goes away..
That would be nice.
fd = open() # ref cnt = 1
mem = mmap() # ref cnt++
close(fd) # ref cnt--
process_data(mem) # valid ref cnt > 0
munmap(mem) # ref cnt-- and close sine ref cnt == 0
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- References:
- Freeing mmapped memory
- From: Raaf
- Re: Freeing mmapped memory
- From: John-Mark Gurney
- Re: Freeing mmapped memory
- From: Raaf
- Re: Freeing mmapped memory
- From: John-Mark Gurney
- Freeing mmapped memory
- Prev by Date: Re: Freeing mmapped memory
- Next by Date: Re: Freeing mmapped memory
- Previous by thread: Re: Freeing mmapped memory
- Next by thread: Re: Freeing mmapped memory
- Index(es):
Relevant Pages
|