DragonFly BSD
DragonFly kernel List (threaded) for 2010-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: HEADS UP - major structure size changes in HEAD (template available)

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 9 Jun 2010 19:26:41 -0700 (PDT)

    I have committed my first attempt in


    Basically the rules I followed were:

	* Add (MPSAFE) in the comment at the top of the file, so each
	  individual routine does not have to be tagged MPSAFE.

	* Cleaned up the comments on each routine and added comments
	  indicating requirements (kinda optional but I was being careful).

	* Nearly all global procedures acquire and release the vm_token,
	  while nearly all static procedures assume the vm_token is being
	  held by the caller.

    The whole mess should be safe until we get the entire system locked up
    this way, because these tokens are only held along with the MP lock
    so by definition since the MP lock is already held (since we haven't
    removed it yet), all our token calls will be non-blocking until we are
    ready to remove the MP lock.

    This way non-blocking assumptions between major subsystems remain intact
    until we can do another pass to locate and deal with them.  We can do
    an entire first-pass on all system files, acquiring and releasing the
    necessary tokens, without destabilizing master.

    I need volunteers to make the same adjustments to the other three
    architectural pmap.c files.  Any takers?  It takes about 2 hours to
    do one file.

    System sources that need to be locked up with vm_token (for now):

	platform/pc32/i386/pmap.c		dillon
	platform/pc64/x86_64/pmap.c		avail
	platform/vkernel/platform/pmap.c	avail
	platform/vkernel64/platform/pmap.c	avail
	vm/vm_contig.c				avail
	vm/vm_fault.c				avail
	vm/vm_glue.c				avail
	vm/vm_init.c				avail
	vm/vm_kern.c				avail
	vm/vm_map.c				avail
	vm/vm_meter.c				avail
	vm/vm_mmap.c				avail
	vm/vm_object.c				avail
	vm/vm_page.c				avail
	vm/vm_pageout.c				avail
	vm/vm_pager.c				avail
	vm/vm_rangelock.c			avail
	vm/vm_swap.c				avail
	vm/vm_swapcache.c			avail
	vm/vm_unix.c				avail
	vm/vm_vmspace.c				avail
	vm/vm_zeroidle.c			avail
	vm/vm_zone.c				avail

    Even though we will eventually go to more fine-grained locks I think
    we really want to get the whole system converted to coarse-grained tokens
    first, make sure it is all stable, remove the MP lock, and then continue
    on from there.


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]