Browse Source

MT#55283 refactor mem pinning into function

Change-Id: I8824dcf88412c68bb9f9df5dc0d6d0ed7e6fd067
mr14.0.1
Richard Fuchs 2 weeks ago
parent
commit
5f832a5d81
1 changed files with 17 additions and 13 deletions
  1. +17
    -13
      daemon/kernel.c

+ 17
- 13
daemon/kernel.c View File

@ -57,6 +57,22 @@ static bool kernel_delete_table(unsigned int id) {
return kernel_action_table("del", id);
}
static void kernel_pin_memory(void *b, size_t len) {
struct rtpengine_command_pin_memory pmc = {
.cmd = REMG_PIN_MEMORY,
.pin_memory = {
.addr = b,
.size = len,
},
};
ssize_t ret = write(kernel.fd, &pmc, sizeof(pmc));
if (ret != sizeof(pmc)) {
ilog(LOG_CRIT, "Failed to pin shared kernel memory: %s", strerror(errno));
abort();
}
}
static void *kernel_alloc(void) {
// Since we can't really request memory at a specific location that we know
// will be correctly aligned, request twice as much, which we know must be
@ -83,19 +99,7 @@ static void *kernel_alloc(void) {
*back_ptr = b;
// register it with the kernel
struct rtpengine_command_pin_memory pmc = {
.cmd = REMG_PIN_MEMORY,
.pin_memory = {
.addr = aligned,
.size = BUFFERPOOL_SHARD_SIZE,
},
};
ssize_t ret = write(kernel.fd, &pmc, sizeof(pmc));
if (ret != sizeof(pmc)) {
ilog(LOG_CRIT, "Failed to pin shared kernel memory: %s", strerror(errno));
abort();
}
kernel_pin_memory(aligned, BUFFERPOOL_SHARD_SIZE);
return aligned;
}


Loading…
Cancel
Save