Skip to content

Commit 092d730

Browse files
Merge pull request #14 from SHMModbus/main
update to 1.4.1
2 parents b854687 + 1b3f832 commit 092d730

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.22.0 FATAL_ERROR)
44
# ======================================================================================================================
55

66
# project
7-
project(shared-mem-random LANGUAGES CXX VERSION 1.4.0)
7+
project(shared-mem-random LANGUAGES CXX VERSION 1.4.1)
88

99
# settings
1010
set(Target "shared-mem-random") # Executable name (without file extension!)

src/main.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,8 @@ int main(int argc, char **argv) { // NOLINT
365365
sigemptyset(&sleep_sigset);
366366
sigaddset(&sleep_sigset, SIGALRM);
367367
sigprocmask(SIG_BLOCK, &sleep_sigset, nullptr);
368+
sigaddset(&sleep_sigset, SIGINT);
369+
sigaddset(&sleep_sigset, SIGTERM);
368370

369371
// MAIN loop
370372
std::size_t counter = 0;
@@ -393,22 +395,24 @@ int main(int argc, char **argv) { // NOLINT
393395
};
394396

395397
auto handle_sleep = [&]() {
396-
if (random_interval_ms == 0) return;
398+
if (random_interval_ms == 0) return false;
397399

398400
int sig = 0;
399401
auto tmp = sigwait(&sleep_sigset, &sig);
400402
if (tmp == -1) {
401403
perror("sigwait");
402404
exit(EX_OSERR);
403405
}
406+
407+
return sig != SIGALRM;
404408
};
405409

406410
switch (alignment) {
407411
case BYTE:
408412
while (!terminate) {
409413
random_data<uint8_t>(
410414
shm->get_addr<uint8_t *>() + OFFSET, shm_elements, bitmask, semaphore, semaphore_max_time);
411-
handle_sleep();
415+
if (handle_sleep()) break;
412416
if (handle_counter()) break;
413417
if (check_owner_pid()) break;
414418
}
@@ -417,7 +421,7 @@ int main(int argc, char **argv) { // NOLINT
417421
while (!terminate) {
418422
random_data<uint16_t>(
419423
shm->get_addr<uint8_t *>() + OFFSET, shm_elements, bitmask, semaphore, semaphore_max_time);
420-
handle_sleep();
424+
if (handle_sleep()) break;
421425
if (handle_counter()) break;
422426
if (check_owner_pid()) break;
423427
}
@@ -426,7 +430,7 @@ int main(int argc, char **argv) { // NOLINT
426430
while (!terminate) {
427431
random_data<uint32_t>(
428432
shm->get_addr<uint8_t *>() + OFFSET, shm_elements, bitmask, semaphore, semaphore_max_time);
429-
handle_sleep();
433+
if (handle_sleep()) break;
430434
if (handle_counter()) break;
431435
if (check_owner_pid()) break;
432436
}
@@ -435,7 +439,7 @@ int main(int argc, char **argv) { // NOLINT
435439
while (!terminate) {
436440
random_data<uint64_t>(
437441
shm->get_addr<uint8_t *>() + OFFSET, shm_elements, bitmask, semaphore, semaphore_max_time);
438-
handle_sleep();
442+
if (handle_sleep()) break;
439443
if (handle_counter()) break;
440444
if (check_owner_pid()) break;
441445
}

0 commit comments

Comments
 (0)