View | Details | Raw Unified | Return to bug 180499
Collapse All | Expand All

(-)modules/freebsd/vmmemctl/os.c (-5 / +42 lines)
Lines 37-45 Link Here
37
#include <sys/param.h>
37
#include <sys/param.h>
38
#include <sys/systm.h>
38
#include <sys/systm.h>
39
#include <sys/kernel.h>
39
#include <sys/kernel.h>
40
#include <sys/lock.h>
40
#include <sys/malloc.h>
41
#include <sys/malloc.h>
41
#include <sys/module.h>
42
#include <sys/module.h>
42
#include <sys/conf.h>
43
#include <sys/conf.h>
44
#include <sys/rwlock.h>
43
#include <sys/sysctl.h>
45
#include <sys/sysctl.h>
44
46
45
#include <vm/vm.h>
47
#include <vm/vm.h>
Lines 344-355 Link Here
344
   os_state *state = &global_state;
346
   os_state *state = &global_state;
345
   os_pmap *pmap = &state->pmap;
347
   os_pmap *pmap = &state->pmap;
346
348
347
   if ( !vm_page_lookup(state->vmobject, page->pindex) ) {
348
      return;
349
   }
350
349
351
   os_pmap_putindex(pmap, page->pindex);
350
#if __FreeBSD_version > 1000029
352
   vm_page_free(page);
351
   VM_OBJECT_WLOCK(state->vmobject);
352
#else
353
   VM_OBJECT_LOCK(state->vmobject);
354
#endif
355
   if ( vm_page_lookup(state->vmobject, page->pindex) ) {
356
   	os_pmap_putindex(pmap, page->pindex);
357
#if __FreeBSD_version >= 900000
358
	vm_page_lock(page);
359
#else
360
	vm_page_lock_queues();
361
#endif
362
   	vm_page_free(page);
363
#if __FreeBSD_version >= 900000
364
	vm_page_unlock(page);
365
#else
366
	vm_page_unlock_queues();
367
#endif
368
   }
369
#if __FreeBSD_version > 1000029
370
   VM_OBJECT_WUNLOCK(state->vmobject);
371
#else
372
   VM_OBJECT_UNLOCK(state->vmobject);
373
#endif
353
}
374
}
354
375
355
376
Lines 361-368 Link Here
361
   os_state *state = &global_state;
382
   os_state *state = &global_state;
362
   os_pmap *pmap = &state->pmap;
383
   os_pmap *pmap = &state->pmap;
363
384
385
#if __FreeBSD_version > 1000029
386
   VM_OBJECT_WLOCK(state->vmobject);
387
#else
388
   VM_OBJECT_LOCK(state->vmobject);
389
#endif
390
364
   pindex = os_pmap_getindex(pmap);
391
   pindex = os_pmap_getindex(pmap);
365
   if (pindex == (vm_pindex_t)-1) {
392
   if (pindex == (vm_pindex_t)-1) {
393
#if __FreeBSD_version > 1000029
394
      VM_OBJECT_WUNLOCK(state->vmobject);
395
#else
396
      VM_OBJECT_UNLOCK(state->vmobject);
397
#endif
366
      return NULL;
398
      return NULL;
367
   }
399
   }
368
400
Lines 383-388 Link Here
383
   if (!page) {
415
   if (!page) {
384
      os_pmap_putindex(pmap, pindex);
416
      os_pmap_putindex(pmap, pindex);
385
   }
417
   }
418
#if __FreeBSD_version > 1000029
419
   VM_OBJECT_WUNLOCK(state->vmobject);
420
#else
421
   VM_OBJECT_UNLOCK(state->vmobject);
422
#endif
386
423
387
   return page;
424
   return page;
388
}
425
}

Return to bug 180499