mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
o Assert GIANT_REQUIRED on system maps in _vm_map_lock(),
_vm_map_lock_read(), and _vm_map_trylock(). Submitted by: tegge o Remove GIANT_REQUIRED from kmem_alloc_wait() and kmem_free_wakeup(). (This clears the way for exec_map accesses to move outside of Giant. The exec_map is not a system map.) o Remove some premature MPSAFE comments. Reviewed by: tegge
This commit is contained in:
parent
3956b02345
commit
93bc4879e6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=99893
@ -96,8 +96,6 @@ vm_map_t buffer_map=0;
|
||||
*
|
||||
* Allocate pageable memory to the kernel's address map.
|
||||
* "map" must be kernel_map or a submap of kernel_map.
|
||||
*
|
||||
* MPSAFE
|
||||
*/
|
||||
vm_offset_t
|
||||
kmem_alloc_pageable(map, size)
|
||||
@ -121,8 +119,6 @@ kmem_alloc_pageable(map, size)
|
||||
* kmem_alloc_nofault:
|
||||
*
|
||||
* Same as kmem_alloc_pageable, except that it create a nofault entry.
|
||||
*
|
||||
* MPSAFE
|
||||
*/
|
||||
vm_offset_t
|
||||
kmem_alloc_nofault(map, size)
|
||||
@ -225,8 +221,6 @@ kmem_alloc(map, size)
|
||||
* associated with that region.
|
||||
*
|
||||
* This routine may not block on kernel maps.
|
||||
*
|
||||
* MPSAFE
|
||||
*/
|
||||
void
|
||||
kmem_free(map, addr, size)
|
||||
@ -456,8 +450,6 @@ kmem_alloc_wait(map, size)
|
||||
{
|
||||
vm_offset_t addr;
|
||||
|
||||
GIANT_REQUIRED;
|
||||
|
||||
size = round_page(size);
|
||||
|
||||
for (;;) {
|
||||
@ -493,7 +485,6 @@ kmem_free_wakeup(map, addr, size)
|
||||
vm_offset_t addr;
|
||||
vm_size_t size;
|
||||
{
|
||||
GIANT_REQUIRED;
|
||||
|
||||
vm_map_lock(map);
|
||||
(void) vm_map_delete(map, trunc_page(addr), round_page(addr + size));
|
||||
|
@ -360,6 +360,8 @@ _vm_map_lock(vm_map_t map, const char *file, int line)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (map->system_map)
|
||||
GIANT_REQUIRED;
|
||||
error = lockmgr(&map->lock, LK_EXCLUSIVE, NULL, curthread);
|
||||
KASSERT(error == 0, ("%s: failed to get lock", __func__));
|
||||
map->timestamp++;
|
||||
@ -377,6 +379,8 @@ _vm_map_lock_read(vm_map_t map, const char *file, int line)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (map->system_map)
|
||||
GIANT_REQUIRED;
|
||||
error = lockmgr(&map->lock, LK_EXCLUSIVE, NULL, curthread);
|
||||
KASSERT(error == 0, ("%s: failed to get lock", __func__));
|
||||
}
|
||||
@ -393,6 +397,8 @@ _vm_map_trylock(vm_map_t map, const char *file, int line)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (map->system_map)
|
||||
GIANT_REQUIRED;
|
||||
error = lockmgr(&map->lock, LK_EXCLUSIVE | LK_NOWAIT, NULL, curthread);
|
||||
return (error == 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user