pub fn deallocate(physical_address: usize, size: usize) {
	assert!(
		physical_address >= mm::kernel_end_address(),
		"Physical address {:#X} is not >= KERNEL_END_ADDRESS",
		physical_address
	);
	assert!(size > 0);
	assert!(
		size % BasePageSize::SIZE == 0,
		"Size {:#X} is not a multiple of {:#X}",
		size,
		BasePageSize::SIZE
	);

	PHYSICAL_FREE_LIST.lock().deallocate(physical_address, size);
}
/// This function must only be called from mm::deallocate!
/// Otherwise, it may fail due to an empty node pool (POOL.maintain() is called in virtualmem::deallocate)
This function must only be called from mm::deallocate.
Otherwise, it may fail due to an empty node pool (POOL.maintain() is called in virtualmem::deallocate)
This function must only be called from mm :: deallocate . Otherwise it may fail due to an empty node pool ( POOL . maintain () is called in virtualmem :: deallocate )
pub fn deallocate(physical_address: usize, size: usize) {
	assert!(
		physical_address >= mm::kernel_end_address(),
		"Physical address {:#X} is not >= KERNEL_END_ADDRESS",
		physical_address
	);
	assert!(size > 0);
	assert!(
		size % BasePageSize::SIZE == 0,
		"Size {:#X} is not a multiple of {:#X}",
		size,
		BasePageSize::SIZE
	);
	PHYSICAL_FREE_LIST.lock().deallocate(physical_address, size);
}
pub fn deallocate ( physical_address : usize , size : usize ) { assert ! ( physical_address mm kernel_end_address ( ) " " physical_address ) ; assert ! ( size 0 ) ; assert ! ( size BasePageSize SIZE 0 " " size BasePageSize SIZE ) ; PHYSICAL_FREE_LIST . lock ( ) . deallocate ( physical_address , size ) ; }
This function must only be called from mm::deallocate!
This function must only be called from mm :: deallocate!
physical_address
usize
size
usize
physical_address
usize
size
usize