aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/signal.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-04-12 11:34:58 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-04-12 17:20:24 -0300
commitba10e311bddab18e38b1b706e232f804c2da9174 (patch)
treea4b66f731ff0c1a37a241b740a8e5465320d3a7a /src/nvim/os/signal.c
parent27b5ef3975e22c7d62e8dbe780dc75607e36eb43 (diff)
downloadrneovim-ba10e311bddab18e38b1b706e232f804c2da9174.tar.gz
rneovim-ba10e311bddab18e38b1b706e232f804c2da9174.tar.bz2
rneovim-ba10e311bddab18e38b1b706e232f804c2da9174.zip
memory: Replace klib memory pools by malloc/free
Klib pools were used to improve allocation efficiency for some small objects, but it is not a thread-safe approach. Thread safety in allocations will be required for implementing #2371).
Diffstat (limited to 'src/nvim/os/signal.c')
-rw-r--r--src/nvim/os/signal.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/nvim/os/signal.c b/src/nvim/os/signal.c
index a332ad2314..f824543003 100644
--- a/src/nvim/os/signal.c
+++ b/src/nvim/os/signal.c
@@ -1,9 +1,8 @@
+#include <assert.h>
#include <stdbool.h>
#include <uv.h>
-#include "nvim/lib/klist.h"
-
#include "nvim/ascii.h"
#include "nvim/vim.h"
#include "nvim/globals.h"
@@ -15,10 +14,6 @@
#include "nvim/os/signal.h"
#include "nvim/os/event.h"
-#define SignalEventFreer(x)
-KMEMPOOL_INIT(SignalEventPool, int, SignalEventFreer)
-kmempool_t(SignalEventPool) *signal_event_pool = NULL;
-
static uv_signal_t spipe, shup, squit, sterm;
#ifdef SIGPWR
static uv_signal_t spwr;
@@ -32,7 +27,6 @@ static bool rejecting_deadly;
void signal_init(void)
{
- signal_event_pool = kmp_init(SignalEventPool);
uv_signal_init(uv_default_loop(), &spipe);
uv_signal_init(uv_default_loop(), &shup);
uv_signal_init(uv_default_loop(), &squit);
@@ -119,18 +113,16 @@ static void deadly_signal(int signum)
static void signal_cb(uv_signal_t *handle, int signum)
{
- int *n = kmp_alloc(SignalEventPool, signal_event_pool);
- *n = signum;
+ assert(signum >= 0);
event_push((Event) {
.handler = on_signal_event,
- .data = n
+ .data = (void *)(uintptr_t)signum
}, false);
}
static void on_signal_event(Event event)
{
- int signum = *((int *)event.data);
- kmp_free(SignalEventPool, signal_event_pool, event.data);
+ int signum = (int)(uintptr_t)event.data;
switch (signum) {
#ifdef SIGPWR