Skip to content

Commit f173ed1

Browse files
committed
Allocate vector for epoll events on heap
This saves 1 MB stack memory per thread.
1 parent cf39b66 commit f173ed1

File tree

2 files changed

+4
-7
lines changed

2 files changed

+4
-7
lines changed

mainapp.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -709,15 +709,14 @@ void MainApp::start()
709709

710710
this->bgWorker.start();
711711

712-
struct epoll_event events[MAX_EVENTS];
713-
memset(&events, 0, sizeof (struct epoll_event)*MAX_EVENTS);
712+
std::vector<epoll_event> events(MAX_EVENTS);
714713

715714
while (running)
716715
{
717716
const uint32_t next_task_delay = timed_tasks.getTimeTillNext();
718717
const uint32_t epoll_wait_time = std::min<uint32_t>(next_task_delay, 100);
719718

720-
int num_fds = epoll_wait(this->epollFdAccept, events, MAX_EVENTS, epoll_wait_time);
719+
int num_fds = epoll_wait(this->epollFdAccept, events.data(), events.size(), epoll_wait_time);
721720

722721
if (epoll_wait_time == 0)
723722
timed_tasks.performAll();

threadloop.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ void do_thread_work(std::shared_ptr<ThreadData> threadData)
2323
ThreadGlobals::assignThreadData(threadData);
2424
ThreadGlobals::assignSettings(&threadData->settingsLocalCopy);
2525

26-
struct epoll_event events[MAX_EVENTS];
27-
memset(&events, 0, sizeof (struct epoll_event)*MAX_EVENTS);
28-
26+
std::vector<epoll_event> events(MAX_EVENTS);
2927
std::vector<MqttPacket> packetQueueIn;
3028

3129
Logger *logger = Logger::getInstance();
@@ -66,7 +64,7 @@ void do_thread_work(std::shared_ptr<ThreadData> threadData)
6664
const uint32_t next_task_delay = threadData->delayedTasks.getTimeTillNext();
6765
const uint32_t epoll_wait_time = std::min<uint32_t>(next_task_delay, 100);
6866

69-
int fdcount = epoll_wait(epoll_fd, events, MAX_EVENTS, epoll_wait_time);
67+
int fdcount = epoll_wait(epoll_fd, events.data(), events.size(), epoll_wait_time);
7068

7169
if (__builtin_expect(epoll_wait_time == 0, 0))
7270
{

0 commit comments

Comments
 (0)