Deleted Added
full compact
vm_kern.c (188967) vm_kern.c (189015)
1/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * The Mach Operating System project at Carnegie-Mellon University.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 49 unchanged lines hidden (view full) ---

58 * rights to redistribute these changes.
59 */
60
61/*
62 * Kernel memory management.
63 */
64
65#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * The Mach Operating System project at Carnegie-Mellon University.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 49 unchanged lines hidden (view full) ---

58 * rights to redistribute these changes.
59 */
60
61/*
62 * Kernel memory management.
63 */
64
65#include <sys/cdefs.h>
66__FBSDID("$FreeBSD: head/sys/vm/vm_kern.c 188967 2009-02-23 23:30:17Z rwatson $");
66__FBSDID("$FreeBSD: head/sys/vm/vm_kern.c 189015 2009-02-24 20:57:43Z kib $");
67
68#include <sys/param.h>
69#include <sys/systm.h>
70#include <sys/kernel.h> /* for ticks and hz */
71#include <sys/eventhandler.h>
72#include <sys/lock.h>
73#include <sys/mutex.h>
74#include <sys/proc.h>

--- 192 unchanged lines hidden (view full) ---

267 */
268vm_offset_t
269kmem_malloc(map, size, flags)
270 vm_map_t map;
271 vm_size_t size;
272 int flags;
273{
274 vm_offset_t offset, i;
67
68#include <sys/param.h>
69#include <sys/systm.h>
70#include <sys/kernel.h> /* for ticks and hz */
71#include <sys/eventhandler.h>
72#include <sys/lock.h>
73#include <sys/mutex.h>
74#include <sys/proc.h>

--- 192 unchanged lines hidden (view full) ---

267 */
268vm_offset_t
269kmem_malloc(map, size, flags)
270 vm_map_t map;
271 vm_size_t size;
272 int flags;
273{
274 vm_offset_t offset, i;
275 vm_map_entry_t entry, freelist;
275 vm_map_entry_t entry;
276 vm_offset_t addr;
277 vm_page_t m;
278 int pflags;
279
280 size = round_page(size);
281 addr = vm_map_min(map);
282
283 /*

--- 67 unchanged lines hidden (view full) ---

351 m = vm_page_lookup(kmem_object,
352 OFF_TO_IDX(offset + i));
353 vm_page_lock_queues();
354 vm_page_unwire(m, 0);
355 vm_page_free(m);
356 vm_page_unlock_queues();
357 }
358 VM_OBJECT_UNLOCK(kmem_object);
276 vm_offset_t addr;
277 vm_page_t m;
278 int pflags;
279
280 size = round_page(size);
281 addr = vm_map_min(map);
282
283 /*

--- 67 unchanged lines hidden (view full) ---

351 m = vm_page_lookup(kmem_object,
352 OFF_TO_IDX(offset + i));
353 vm_page_lock_queues();
354 vm_page_unwire(m, 0);
355 vm_page_free(m);
356 vm_page_unlock_queues();
357 }
358 VM_OBJECT_UNLOCK(kmem_object);
359 freelist = NULL;
360 vm_map_delete(map, addr, addr + size, &freelist);
359 vm_map_delete(map, addr, addr + size);
361 vm_map_unlock(map);
360 vm_map_unlock(map);
362 vm_map_entry_free_freelist(map, freelist);
363 return (0);
364 }
365 if (flags & M_ZERO && (m->flags & PG_ZERO) == 0)
366 pmap_zero_page(m);
367 m->valid = VM_PAGE_BITS_ALL;
368 KASSERT((m->flags & PG_UNMANAGED) != 0,
369 ("kmem_malloc: page %p is managed", m));
370 }

--- 82 unchanged lines hidden (view full) ---

453 * waiting for memory in that map.
454 */
455void
456kmem_free_wakeup(map, addr, size)
457 vm_map_t map;
458 vm_offset_t addr;
459 vm_size_t size;
460{
361 return (0);
362 }
363 if (flags & M_ZERO && (m->flags & PG_ZERO) == 0)
364 pmap_zero_page(m);
365 m->valid = VM_PAGE_BITS_ALL;
366 KASSERT((m->flags & PG_UNMANAGED) != 0,
367 ("kmem_malloc: page %p is managed", m));
368 }

--- 82 unchanged lines hidden (view full) ---

451 * waiting for memory in that map.
452 */
453void
454kmem_free_wakeup(map, addr, size)
455 vm_map_t map;
456 vm_offset_t addr;
457 vm_size_t size;
458{
461 vm_map_entry_t freelist;
462
459
463 freelist = NULL;
464 vm_map_lock(map);
460 vm_map_lock(map);
465 (void) vm_map_delete(map, trunc_page(addr), round_page(addr + size),
466 &freelist);
461 (void) vm_map_delete(map, trunc_page(addr), round_page(addr + size));
467 if (map->needs_wakeup) {
468 map->needs_wakeup = FALSE;
469 vm_map_wakeup(map);
470 }
471 vm_map_unlock(map);
462 if (map->needs_wakeup) {
463 map->needs_wakeup = FALSE;
464 vm_map_wakeup(map);
465 }
466 vm_map_unlock(map);
472 vm_map_entry_free_freelist(map, freelist);
473}
474
475/*
476 * kmem_init:
477 *
478 * Create the kernel map; insert a mapping covering kernel text,
479 * data, bss, and all space allocated thus far (`boostrap' data). The
480 * new map will thus map the range between VM_MIN_KERNEL_ADDRESS and

--- 46 unchanged lines hidden ---
467}
468
469/*
470 * kmem_init:
471 *
472 * Create the kernel map; insert a mapping covering kernel text,
473 * data, bss, and all space allocated thus far (`boostrap' data). The
474 * new map will thus map the range between VM_MIN_KERNEL_ADDRESS and

--- 46 unchanged lines hidden ---