kernel/vm: Inline the VMArea::name string.

B_OS_NAME_LENGTH is 32, char* is 8 (on x64), and this structure
has quite a lot of pointers in it so it is not like we really
needed to save those 24 bytes. Hitting malloc() in here is not
so great, especially because we usually have B_DONT_LOCK_KERNEL_SPACE
turned on, so just inline and avoid it.

Change-Id: I5c94955324cfda08972895826b61748c3b69096a
This commit is contained in:
Augustin Cavalier 2019-07-12 22:41:21 -04:00
parent ca68cae76f
commit 39665db167
2 changed files with 3 additions and 13 deletions

View File

@ -97,8 +97,8 @@ public:
};
public:
char* name;
area_id id;
char name[B_OS_NAME_LENGTH];
uint32 protection;
uint16 wiring;

View File

@ -28,7 +28,6 @@ static area_id sNextAreaID = 1;
VMArea::VMArea(VMAddressSpace* addressSpace, uint32 wiring, uint32 protection)
:
name(NULL),
protection(protection),
wiring(wiring),
memory_type(0),
@ -53,23 +52,14 @@ VMArea::~VMArea()
// TODO: This might be stricter than necessary.
free_etc(page_protections, flags);
free_etc(name, flags);
}
status_t
VMArea::Init(const char* name, uint32 allocationFlags)
{
// restrict the area name to B_OS_NAME_LENGTH
size_t length = strlen(name) + 1;
if (length > B_OS_NAME_LENGTH)
length = B_OS_NAME_LENGTH;
// clone the name
this->name = (char*)malloc_etc(length, allocationFlags);
if (this->name == NULL)
return B_NO_MEMORY;
strlcpy(this->name, name, length);
// copy the name
strlcpy(this->name, name, B_OS_NAME_LENGTH);
id = atomic_add(&sNextAreaID, 1);
return B_OK;