mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 09:26:30 +00:00
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).
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user