From 5f832a5d81d585f4029c0a0ec4149902aca08bf5 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 24 Nov 2025 09:58:45 -0400 Subject: [PATCH] MT#55283 refactor mem pinning into function Change-Id: I8824dcf88412c68bb9f9df5dc0d6d0ed7e6fd067 --- daemon/kernel.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/daemon/kernel.c b/daemon/kernel.c index e0e44ec98..f1b431ae4 100644 --- a/daemon/kernel.c +++ b/daemon/kernel.c @@ -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; }